流程控制

在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。

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("请正确输入成绩")
View Code


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
View Code
输出
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--------")
View Code

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 

 循环中止语句 

如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到breakcontinue 语句

  • 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

  

原文地址:https://www.cnblogs.com/fantsaymwq/p/9477052.html