if 语句
>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
... x = 0
... print('Negative changed to zero')
... elif x == 0:
... print('Zero')
... elif x == 1:
... print('Single')
... else:
... print('More')
...
More
用来代替其它语言中 switch
或 case
语句。关键字 ‘elif
‘ 是 ‘else if’ 的缩写, 它可以有效避免过度缩进。
for 语句
Python 中的 for
语句与你在 C 或是 Pascal 中使用的略有不同. 不同于在 Pascal 中总是依据一个等差的数值序列迭代, 也不同于在 C 中允许用户同时定义迭代步骤和终止条件, Python 中的 for
语句在任意序列 (列表或者字符串) 中迭代时, 总是按照元素在序列中的出现顺序依次迭代.
在循环过程中修改被迭代的对象是不安全的 (这只可能发生在可变序列类型上,如列表).
若想在循环体内修改你正迭代的序列 (例如复制序列中选定的项), 最好是使用切片制作一个副本.
>>> # 测试一些字符串:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print(x, len(x))
...
cat 3
window 6
defenestrate 12
修改序列,先制作一个副本
>>> for x in a[:]: # 制造整个列表的切片复本
... if len(x) > 6: a.insert(0, x)
...
>>> a
['defenestrate', 'cat', 'window', 'defenestrate']
range 函数式
产生等差级数列
可接受1个、2个或3个参数。
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
制定起始位置、长度和增量
range(5, 10)
5 through 9 range(0, 10, 3)
0, 3, 6, 9 range(-10, -100, -30)
-10, -40, -70
* 还可以迭代一个列表
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
... print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb
虽然 range函数表现得像一个列表, 但实际上它不是. 如果你对其进行迭代时, 它能返回所需要的连续项, 但实际上为了节省空间并没有真正地生成制造一个列表.这种特性叫做可迭代性(iterable)
>>> print(range(10))
range(0, 10)
具有可迭代性的对象可以被迭代器所迭代。比如 for
语句就是这种迭代器 ( iterator ).此外,还有 list()
函数; 它从可迭代对象中生成列表:
>>> list(range(5))
[0, 1, 2, 3, 4]
循环中的 else子句
循环语句可以有一个 else
子句; 当循环因耗尽整个列表而终止时 (使用 for
) 或者当条件变为假时 (使用 while
), 它就会被执行, 但是, 如果循环因为 break
语句终止的话, 它不会被执行.
与循环搭配使用时, else 子句的行为和它与 try 语句的搭配时相对于与 if 语句的搭配时有更多共性: try 语句的 else 子句在没有异常发生时被执行, 循环的 else 子句在没有 break语句是被执行.
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print(n, 'equals', x, '*', n//x)
... break
... else:
... # 循环因为没有找到一个因数而停止
... print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
(是的, 这是正确的代码. 仔细看: else 子句属于 for 循环, 而非是 if 语句。else 语句只会在最近的一次循环结束,并且该循环没有执行到 break时才执行。)
pass 语句
pass
语句什么都不做. 当语法上需要一个语句, 但程序不要动作时, 就可以使用它. 例如:
>>> while True:
... pass # 忙等待键盘中断 (Ctrl+C)
...
一般可以用于创建最小类
>>> class MyEmptyClass:
... pass
...
另一个使用 pass
的地方是, 作为函式或条件体的占位符, 当你在新代码工作时, 它让你能保持在更抽象的级别思考. pass
会被默默地被忽略:
>>> def initlog(*args):
... pass # 记得实现这里!
...