python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
其基本形式为:
while 判断条件:
执行语句……
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假false时,循环结束。
执行流程图如下:
还是上一篇文章,讲的猜年龄的例子,需要无限次数执行
可以使用while循环来做,代码如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
age_of_oldboy = 56
while True:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it.")
break
elif guess_age > age_of_oldboy:
print("think smaller...")
else:
print("think bigger!")
执行效果如下:
break 表示跳出循环,否则程序无法退出
如果不想无限次数猜,只限制3次机会,怎么做呢?代码如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
age_of_oldboy = 56
#初始次数
count = 0
while True:
if count == 3:
print("only allow 3 guesses!")
break
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it.")
break
elif guess_age > age_of_oldboy:
print("think smaller...")
else:
print("think bigger!")
#每次执行加1
count += 1
执行效果如下:
代码还可以优化一下,如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
age_of_oldboy = 56
#初始次数
count = 0
#判断次数,是否小于3次
while count < 3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it.")
break
elif guess_age > age_of_oldboy:
print("think smaller...")
else:
print("think bigger!")
#每次执行加1
count += 1
#判断执行次数
if count == 3:
#提示只允许猜3次
print("only allow 3 guesses!")
上面代码,表示针对某一个条件做循环。
最后,当尝试3次之后,提示信息,程序结束。
针对最后的if判断,其实是可以省略的,代码如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
age_of_oldboy = 56
#初始次数
count = 0
#判断次数,是否小于3次
while count < 3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it.")
break
elif guess_age > age_of_oldboy:
print("think smaller...")
else:
print("think bigger!")
#每次执行加1
count += 1
else:
#提示只允许猜3次
print("only allow 3 guesses!")
为什么一个else就搞定了呢?
这就是python优秀的地方
当次数小于3次,可以继续猜
否则就必定大于3次,程序直接输出提示信息,程序退出。
再来加一个条件,当次数达到3次的时候,提示是否继续?输入y继续,输入n,程序终止!
代码如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
age_of_oldboy = 56
#初始次数
count = 0
#判断次数,是否小于3次
while count < 3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy:
print("yes, you got it.")
break
elif guess_age > age_of_oldboy:
print("think smaller...")
else:
print("think bigger!")
#每次执行加1
count += 1
#当次数达到3次的时候
if count == 3:
#提示是否继续游戏?
continue_confirm = input("Do you want to continue y/n ?")
#不输入n时
if continue_confirm != "n":
#次数重置为0
count = 0
执行效果如下: