流程控制
-
print小用法
#1. 一次打印多个值,用逗号隔开,每个参数间插入空格 >>> print 'age:', 42 age: 42 #2. 打印不换行,结尾加上逗号 print 'Hello', print 'World!'
-
赋值魔法-序列解包
#1. 多个赋值同时进行,可以用于交换变量 >>> x, y, z = 1, 2, 3 >>> print x, y, z 1 2 3 >>> x, y = y, x >>> print x, y 2 1 #2. 序列解包,将多个值的序列解开,然后放入变量中,当函数返回元组,此特性尤其有用,解包的序列元素数量与变量数量完全一致 >>> values = 4, 5, 6 >>> values (4, 5, 6) >>> x, y, z = values >>> print x, y, z 4 5 6
python3中有另一个解包特性,左侧变量数量与序列元素数量不一致是可以使用*号运算符,例如,a, b, *rest = [1, 2, 3, 4],rest的结果[3, 4]
-
赋值魔法-链式赋值
x = y = somefunc() #等价于 y = somefunc() x = y
-
赋值魔法-增量赋值
#python中不支持++,--运算符 #值支持+=,-=,/=等待,称为增量赋值
-
语句块,语句块以“:”开始,同缩进的表示同一个语句块,回退到和已闭合的块一样的缩进时表示当前块结束
1. 条件语句
1.1 布尔值
False None 0 “” () [] {}被解释器看做假(False),其他一切都解释为真
- bool()把其他类型转换为布尔值
尽管“”和[]都是假(即bool("") == bool([]) == False),但是"" 和 []本身是不相等的,即"" != [],其他也是类似
1.2 if语句
if con1:
pass
elif con2:
pass
.
.
.
else:
pass
python比较与赋值一样支持连接比较,比如0 < age < 100
1.3 while语句
while cond:
pass
name = ''
while not name:
name = raw_input('Please enter your name:')
print 'Hello, %s' % name
while可以接一个else子句,else只在循环正常结束时才调用
1.4 for语句
可迭代对象是指可以按次序迭代的对象
>>> words = ['this', 'is', 'an', 'ex', 'parrot']
>>> for word in words:
print word
this
is
an
ex
parrot
#字典迭代
>>> d = {'x':1, 'y':2, 'z', 3}
>>> for key in d:
print key
y
x
z
python需要循环指定范围的,使用range和xrange
1.5 迭代工具
-
并行迭代,zip()
>>> names = ['anne', 'beth', 'george', 'damon'] >>> ages = [12, 45, 32, 102] >>> zip(names, ages) [('anne', 12), ('beth', 45), ('george', 32), ('damon', 102)] >>> for name, age in zip(names, ages): print name, 'is', age anne is 12 beth is 45 george is 32 damon is 102
zip可以左右于任意多的序列,zip可以处理不等长的序列,当最短的序列用完就会停止
zip(range(5), xrange(10000))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
-
按索引迭代,enumerate()
>>> strings = ['this', 'is', 'an'] >>> for index, val in enumerate(strings): print index, val 0 this 1 is 2 an
1.6 跳出循环
- break,跳出当前循环
- continue,结束本次循环,继续下一轮循环
- else,while和for循环都可以使用一个else子句,else子句在循环正常结束时执行