python if条件控制
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
这里要记住 if和else的组合,如果有多条件时,elseif 简写成elif.
python for 语句
for 子元素 in 集合,如
>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print(w, len(w))
...
cat 3
window 6
defenestrate 12
遍历某个集合的同时修改该集合的内容,很难获取想要的结果。要在遍历时修改集合的内容,应该遍历该集合的副本或创建新的集合:
# Strategy: Iterate over a copy
for user, status in users.copy().items():
if status == 'inactive':
del users[user]
# Strategy: Create a new collection
active_users = {}
for user, status in users.items():
if status == 'active':
active_users[user] = status
上述代码,在for循环嵌套了if条件语句,这是控制语句的嵌套。
range() 函数
内置函数 range() 常用于遍历数字序列,该函数可以生成算术级数:
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
前面章节有range()函数的用法,再来个实例:
>>> for i in range(5, 10)
5, 6, 7, 8, 9
>>> for i in range(0, 10, 3)
0, 3, 6, 9
>>> for i in range(-10, -100, -30)
-10, -40, -70
range() 和 len() 组合在一起,可以按索引迭代序列:
>>> 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,会出现意想不到的结果:
>>> print(range(10))
range(0, 10)
range() 返回对象的操作和列表很像,但其实这两种对象不是一回事。迭代时,该对象基于所需序列返回连续项,并没有生成真正的列表,从而节省了空间。
这样的对象称为可迭代对象 iterable,函数或程序结构可从该对象中获取连续项,直到所有元素全部迭代完毕。for 语句就是这样的架构,sum() 是一种把可迭代对象作为参数的函数:
>>> sum(range(4)) # 0 + 1 + 2 + 3
6
后文将介绍更多返回可迭代对象,或把可迭代对象当作参数的函数。 最后,介绍一种用 range 生成列表解决方案:
>>> list(range(4))
[0, 1, 2, 3]
break 和 continue 语句
break 语句和 C 中的类似,用于跳出最近的 for 或 while 循环。
循环语句支持 else 子句;for 循环中,可迭代对象的元素全部循环完毕时,或 while 循环的条件为假时,执行该子句,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:
... # loop fell through without finding a factor
... 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
与 if 语句相比,循环的 else 子句更像 try 语句的 else 子句: try 语句的 else 子句在未触发异常时执行,循环的 else 子句则在未运行 break 时执行。
continue 语句也借鉴自 C 语言,表示继续执行循环的下一次迭代:
>>> for num in range(2, 10):
... if num % 2 == 0:
... print("Found an even number", num)
... continue
... print("Found an odd number", num)
Found an even number 2
Found an odd number 3
Found an even number 4
Found an odd number 5
Found an even number 6
Found an odd number 7
Found an even number 8
Found an odd number 9
pass 语句
pass 语句不执行任何操作。语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句。例如:
循环语句的pass用法
>>> while True:
... pass # Busy-wait for keyboard interrupt (Ctrl+C)
...
这段代码创建了一个最小的类:
>>>
类的pass用法
>>> class MyEmptyClass:
... pass
...
pass 还可以用作函数或条件子句内的占位符,让开发者聚焦更抽象的层次。此时,pass 直接就被忽略了:
>>>
函数的pass用法
>>> def initlog(*args):
... pass # Remember to implement this!
...