本章讨论两种基本的程序结构,判断和循环。
当条件为真时,执行if
后的代码;否则,不执行。
if condition: code
当condition
为True
时,执行code
。
cel = int(input('输入今日气温:')) if cel >= 30: print('要开空调')
运行结果
输入今日气温:32 要开空调
当条件为真时,执行if
后的代码;否则,执行else
后的代码。
if condition: code1 else: code2
当condition
为True
时,执行code1
;否则,执行code2
。
cel = int(input('输入今日气温:')) if cel >= 30: print('要开空调') else: print('不开空调')
运行结果
输入今日气温:13 不开空调
if condition1: code1 elif condition2: code2 ··· else: code
依次检查condition1
,condition2
… 当遇到第一个conditionN = True
时,执行对应的代码codeN
,后续的condition
都不再检查(跳过);当所有condition
都为False
时,执行else
后的代码。
x = 0.5 if x < 1: print('x小于1') elif x > 0: print('x大于0') # x = 0.5 时被跳过 else: print('x小于等于0或大于等于1') # 永远不可能执行
运行结果
x小于1
上面的例子中,x < 1
为True
,执行print('x小于1')
,后续的elif
和else
都被跳过。
条件控制语句可以包含条件控制语句,这叫做嵌套
cel = int(input('输入今日气温:')) if cel >= 30: print('开制冷模式') if cel >= 35: print('去买冰淇淋~') elif cel <= 10: print('开制热模式') if cel <= 0: print('多喝热水!') else: print('不开空调')
运行结果
输入今日气温:40 开制冷模式 去买冰淇淋~
for
循环(计数循环),把for
后面的代码执行n
次。
for x in range(5): print(x)
运行结果
0 1 2 3 4
在上面的例子中,for
循环中的语句执行5
遍。x
的值从0
开始。
while
循环(直到循环),反复执行while
后的代码,直到条件为假。
x = 0 while x < 5: print(x) x += 1
运行结果
0 1 2 3 4
只要while
后的条件为True
,就反复执行while
后的语句;直到while
后的条件为False
,结束循环。
continue
用于跳过本轮循环的剩余内容,进入下一轮循环。
for x in range(10): if x == 5: continue print(x)
运行结果
0 1 2 3 4 6 7 8 9
当遇到continue
时,跳过本轮循环的剩余部分,执行下一轮循环。在上面的例子中,当x = 5
时,后面的print(x)
被跳过了。
continue
也可用于while
循环。
x = 0 while x < 10: if x == 5: x += 1 continue print(x) x += 1
运行结果
0 1 2 3 4 6 7 8 9
在上面的例子中,如果continue
前没有x += 1
,x = 5
时x
的自增又被跳过了,此后x
恒为5
,这就形成了死循环。死循环的解决办法是使用键盘中断,同时按下CTRL
+C
,请你自己尝试。
break
用于结束执行循环体。
for x in range(10): if x == 5: break print(x)
运行结果
0 1 2 3 4
遇到break
时,跳过本次循环的剩余部分,并结束循环。你可以尝试一下把print(x)
写在if x == 5:
前面,比较这两种写法的运行结果有什么不同。
break
也可以用于while
循环。
x = 0 while True: if x == 5: break print(x) x += 1
运行结果
0 1 2 3 4
for
循环和while
循环后可以接一个else
,循环结束后,执行else
后的语句。
for x in range(5): print(x) else: print('循环结束')
运行结果
0 1 2 3 4 循环结束
若循环中途遇到break
而终止,则else
后的语句不执行。
x = 0 while True: if x == 5: break print(x) x += 1 else: print('循环结束')
运行结果
0 1 2 3 4
循环也可以嵌套循环,下面的例子输出九九乘法口诀表
for y in range(1, 10): # y的值从1到9 for x in range(1, y + 1): # x的值从1到y print(x, '*', y, '=', int(x * y), end=' ') if x * y < 10: print(' ', end='') # 对齐(可以不要) print() # 行末还行
运行结果
1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81