Python学习笔记——基础语法(上)
写在前面:本文适合有高级编程语言基础的读者阅读。一、Python设计目标简单直观开源(Python源码不能加密)易理解适用于短期开发的日常任务二、为何选择Python? 代码量少,同样的问题,用不同的语言解决,代码量差距很明显。一般情况Python是Java的1/5。三、Python特点面向对象,在Python中一切皆对象有强大的标准库,Python语言的核心只包含数字、字符串、列表、字
写在前面:本文适合有高级编程语言基础的读者阅读。
一、Python设计目标
- 简单直观
- 开源(Python源码不能加密)
- 易理解
- 适用于短期开发的日常任务
二、为何选择Python?
代码量少,同样的问题,用不同的语言解决,代码量差距很明显。一般情况Python是Java的1/5。
三、Python特点
- 面向对象,在Python中一切皆对象
- 有强大的标准库,Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外功能。
- Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统等多个领域。
四、Python的优缺点
1、优点
- 简单、易学
- 免费、开源
- 面向对象
- 丰富的库
- 可扩展性——如果需要一段关键代码运行的更快或者希望某些算法不公开,可以把这部分程序用C或C++编写,然后在Python程序中使用它们
- ……
2、缺点
- 运行速度——解释性语言,不像C/C++这些编译性语言执行速度比较快,因为是解释性的,执行速度相对较慢,但跨平台性较好。
- 国内市场较小
- 中文资料匮乏
五、Python适合的领域
- Web网站和各种网络服务
- 系统工具和脚本
- 作为“胶水”语言把其他语言开发的模块包装起来方便使用
六、Python不适合的领域
- 贴近硬件的代码(首选C)
- 移动开发:IOS、Android有各自的语言
- 游戏:C、C++
七、Python和其他语言的对比
八、Python运行机制
字节码文件包含.pyc和.pyo文件(.pyc优化后的文件)
九、基础语法
1、print语句
.当我们在Python交互式环境下编写代码时,>>>
是Python解释器的提示符,不是代码的一部分。
print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出:(print会依次打印每个字符串,遇到逗号“,”会输出一个空格)
>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog
2、Python中Unicode字符串
为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:
print u'中文'
中文
注意: 不加 u ,中文就不能正常显示。如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。但是以上两者不能同时出现,比如代码编辑第一行的注释#-*-coding:utf-8 -*-,表明以下Python代码使用utf-8编码,但输出语句若写成print u'" ..."',这样就又要让解释器使用Unicode编码输出,导致解码出错。我们应该记住以何种方式编码就应以何种方式解码,否则就很有可能出现编码错误。
3、List处理
Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种类型数据
倒序访问:可以用 -1 这个索引来表示最后一个元素,类似,-2表示倒数第二个……
添加元素:有两种方法,第一,使用append(),总是把新的元素添加到 list 的尾部。第二,使用insert(xx, xx)方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素。
删除元素:pop()方法总是删掉list的最后一个元素,并且它还返回这个元素。pop(index)删除指定位置的元素。注意:如果连续多次执行pop()方法,先执行的pop()会改变list大小,后面部分元素的index会发生改变。
修改元素:直接使用赋值语句替换即可修改。
4、tuple处理
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。创建tuple和创建list唯一不同之处是用( )
替代了[ ]
。获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。
也就是空tuple,直接用 ()表示。因为用()定义单元素的tuple与运算符的()有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义,而多元素 tuple 加不加这个额外的“,”效果是一样的,结尾没有,。
>>> t = (1,)
>>> print t
(1,)
Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。
“可变的tuple”:tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变,可以将[]改为()即可保证()内部每个元素不可变。比如,我们来看一个“可变”的tuple:
>>> t = ('a', 'b', ['A', 'B'])
注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:
>>> L = t[2]
然后,我们把list的两个元素改一改:
>>> L[0] = 'X'
>>> L[1] = 'Y'
再看看tuple的内容:
>>> print t
('a', 'b', ['X', 'Y'])
为何可变?我们先看看定义的时候tuple包含的3个元素:
当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:
表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。
5、if语句
注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,下面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。
age = 20
if age >= 18:
print 'your age is', age
print 'adult'
print 'END'
如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:
>>> age = 20
>>> if age >= 18:
... print 'your age is', age
... print 'adult'
...
your age is 20
adult
若用 if else,则else后边有: 。若有多个嵌套,则可以使用 if ... 多个elif ... else ... 的结构,一次写完所有的规则:
if age >= 18: print 'adult' elif age >= 6: print 'teenager' elif age >= 3: print 'kid' else: print 'baby'
elif 意思就是 else if。注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
6、for循环
如计算List中的平均值
L = [75, 92, 59, 68]
sum = 0.0
for score in L:
sum += score
print sum / 4
注意: name 这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 score,然后执行for循环体(就是缩进的代码块)。这样一来,遍历一个list或tuple就非常容易了。
7、while循环
比如要从 0 开始打印不大于 N 的整数:
N = 10
x = 0
while x < N:
print x
x = x + 1
while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。
在循环体内,x = x + 1 会让 x 不断增加,最终因为 x < N 不成立而退出循环。
8、使用break退出循环
比如利用 while True 无限循环配合 break 语句,计算 1 + 2 + 4 + 8 + 16 + ... 的前20项的和。
sum = 0
x = 1
n = 1
while True:
sum += x
x = 2*x
n = n+1
if n > 20:
break
print sum
9、使用continue继续循环
比如计算0-100之间奇数的和
sum = 0
x = 0
while True:
x = x + 1
if x > 100:
break
if x % 2 == 0:
continue
sum += x
print sum
10、多重循环
比如对100以内的两位数,使用两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)。
法一:
for x in [ 1,2,3,4,5,6,7,8,9 ]:
for y in [ 0,1,2,3,4,5,6,7,8,9 ]:
if x<y:
print x*10 + y
法二:
for x in range(1,9):
for y in range(x+1,10):
print str(x)+str(y)
续下文《Python学习笔记——基础语法(下)》
转载请注明出处:
http://blog.csdn.net/daijin888888/article/details/79331360
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)