在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。
if...else 循环语句
单分支
if 条件:
满足条件后要执行的代码
成立走if,不成立不走if,走if后面的
双分支
if 条件:
满足条件执行代码
else:
if条件不满足就走这段
缩进
你会发现,上面的if代码里,每个条件的下一行都缩进了4个空格。这就是Python的一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?
Python的缩进有以下几个原则:
- 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
- 同一级别的代码,缩进必须一致
- 官方建议缩进用4个空格,当然你也可以用2个,如果你想被人笑话的话。
多分支
回到流程控制上来,if...else ...可以有多个分支条件
if 条件:
满足条件执行代码
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
else:
上面所有的条件不满足就走这段
代码是从上到下依次判断,只要满足一个,就不会再往下走啦!
示例:
匹配成绩的小程序。成绩有ABCDE5个等级,与分数的对应关系如下
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39
要求用户输入0-100的数字后,你能正确打印他的对应成绩
1 #成绩匹配 2 score = int(input("请输入成绩:")) 3 if score > 100: 4 print("成绩满分才100!") 5 elif score >= 90: 6 print("A") 7 elif score >= 80: 8 print("B") 9 elif score >= 60: 10 print("C") 11 elif score >= 40: 12 print("D") 13 elif score >= 0: 14 print("E") 15 else: 16 print("请正确输入成绩")
while 循环
while 条件:
执行代码...
程序从0打印到100的程序 ,每循环一次,+1
1 count = 0 2 while count <= 100 : #只要count<=100就不断执行下面的代码 3 print("loop ", count ) 4 count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
输出
loop 0
loop 1
loop 2
loop 3
....
loop 98
loop 99
loop 100
跳过语句
pass
条件成立后,不进行任何操作就跳过。
1 #循环打印1-100,第50次不打印值,第60-80次,打印对应值的平方 2 count = 1 3 while count<= 100: 4 if count < 50: 5 print("loop",count) 6 elif count == 50: 7 pass #就是过 8 elif count >= 60 and count <= 80: 9 print(count**2) 10 else: 11 print("loop",count) 12 count+=1 13 print("--------loop is ended--------")
loop 1
loop 2
......
loop 58
loop 59
3600
3721
...
6241
6400
loop 81
loop 82
...
loop 99
loop 100
--------loop is ended--------
死循环
while 是只要后边条件成立(也就是条件结果为真)就一直执行。
count = 0 while True: print("Forever 21",count) count+=1
循环中止语句
如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句
- break用于完全结束一个循环,跳出循环体执行循环后面的语句
- continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
break语句用在while和for循环中。
continue语句用在while和for循环中。
例子:break
count = 0 while count <= 100 : #只要count<=100就不断执行下面的代码 print("loop ", count) if count == 5: break count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0 print("-----out of while loop ------")
输出
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
-----out of while loop ------
例子:continue
count = 0 while count <= 100 : #只要count<=100就不断执行下面的代码 print("loop ", count) if count == 5: break count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0 print("-----out of while loop ------")
输出
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop 5
loop 5
loop 5
.......
count = 0 while count <= 100 : count += 1 if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop continue print("loop ", count) print("-----out of while loop ------")
输出
loop 1
loop 2
loop 3
loop 4
loop 5
loop 95
loop 96
loop 97
loop 98
loop 99
loop 100
loop 101
-----out of while loop ------
练习
1、优化猜年龄游戏,允许用户最多猜3次,中间猜对了,直接跳出循环。
#优化猜年龄游戏,允许用户最多猜3次,中间猜对了,直接跳出循环。 _age = 18 count = 0 while count < 3: age = int(input("请输入所猜年龄:")) if age < _age : print('猜小了,猜大一点!') elif age > _age : print('猜大了,猜小一点') else: print("恭喜你,猜对了!") break count+=1
#优化猜年龄游戏,允许用户最多猜3次,中间猜对了,直接跳出循环。 count = 0 age =26 while count <3: user_name = int(input("your guess:")) if user_name == age: print("恭喜你答对了,可以抱得傻姑娘回家!") break elif user_name < age: print("try bigger") else: print("try smaller") count+=1
2、优化猜年龄游戏,允许用户最多猜3次,猜了3次后,再问是否还想玩,如果用户选Y,则再允许猜3次,以此往复…
#、优化猜年龄游戏,允许用户最多猜3次,猜了3次后,再问是否还想玩,如果用户选Y,则再允许猜3次,以此往复… _age = 18 count = 0 while count <= 3: if count <= 2: age = int(input("请输入所猜年龄:")) if age < _age : print('猜小了,猜大一点!') elif age > _age : print('猜大了,猜小一点') elif age == _age: print("恭喜你,猜对了!") break count+=1 else: answer = input("是否继续猜,输入'y'继续") if answer == "y": count = 0 else: break
#、优化猜年龄游戏,允许用户最多猜3次,猜了3次后,再问是否还想玩,如果用户选Y,则再允许猜3次,以此往复… count = 0 age =26 while count <3: user_name = int(input("your guess:")) if user_name == age: print("恭喜你答对了,可以抱得傻姑娘回家!") break elif user_name < age: print("try bigger") else: print("try smaller") count+=1 if count == 3: choice = input("你个笨蛋,没猜对,还想继续吗?(y/Y)") if choice == "y" or choice = "Y": count = 0
while ... else ..
与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句
while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句
#while count = 0 while count <= 5: print("loop",count) count +=1 else: print("loop is done") print("out of loop")
输出
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop is done
out of loop
如果执行过程中被break啦,就不会执行else的语句啦
#while...else count = 0 while count <= 5: print("loop",count) if count ==3: break count +=1 else: print("loop is done") print("out of loop")
输出
loop 0
loop 1
loop 2
loop 3
out of loop
for
for i in range(10): print(i)
输出
0
1
2
3
4
5
6
7
8
9
range()为for循环实现,而生成一个列表
for.....esle
for循环可以和else搭配,正常循环结束,执行else
while可以定义为死循环,for循环有边界
不想while 循环中间强制停止(break),可以用标志位
#run_flag = True exit_flag = False #标志位 while not exit_flag: ........ ......... #run_flag = False exit_flag = True