1. 什么是循环?
循环就是在某个条件满足的情况下,一直做某件事。
其实孙悟空被压在五指山下就是一个循环,观音菩萨跟猴子说,你在这里一直等,等到唐僧来了,你就可以出来了。这个逻辑用Python的while循环表示就是:
while 唐僧没来:
猴子等着
while循环的语法就是:
while 条件成立:
执行代码块
循环结束后,执行此处代码
2. 简单的循环
'''
程序要求:
编写一段代码,在屏幕上输出0~100之间的所有整数。
'''
num = 0
while num < 100:
# 当变量num小于100时,将其输出到屏幕上,并将num的值加1
# 当变量num大于等于100时,循环结束
print("{}".format(num))
num += 1
'''
程序要求:
编写一段代码,在屏幕上输出0~100之间的所有偶数。
'''
num = 0
while num < 100:
# 当变量num小于100时,判断其是否能被2整除。
# 如果能整除,则将其输出到屏幕上,否则不输出
# 无论是否能被2整除,都将num的值加1
# 当变量num大于等于100时,循环结束
if (num % 2) == 0:
print("{}".format(num))
num += 1
3. break语句:中止循环
正常情况下,只有在while
的判定条件不满足时才会结束循环。但实际使用时,有些场景确需要提前结束循环,这个时候就需要用到break
语句。
'''
猜数字小游戏
程序要求:
1. 生成一个0~10之间的随机整数
2. 循环获取用户输入,允许用户输入三次
3. 当用户输入的值等于随机数时,结束循环;否则,就要等三次机会耗尽之后自动结束循环。
'''
import random # 导入随机数生成模块
rand_num = random.randint(0,10) # 生成一个0~10之间的整数
count = 0
while count < 3:
in_num = int(input("请输入一个0~10之间的整数:")) # 接收一个用户输入
if in_num == rand_num:
# 当用户输入等于随机数时,输出提示信息,并通过break语句跳出循环
print("恭喜你,猜对了。")
break
count += 1
print("游戏结束,随机数是{}。".format(rand_num))
上面的程序中,如果用户在第1次输入时就猜对了,那么就会执行break
语句直接跳出循环,执行最后的print()
语句输出游戏结束信息。
总结一句话来说,break
语句就是让程序可以提前结束while
循环。
4. continue语句:跳过本次循环
continue
和break
有些类似,但区别在于continue
只是中止本次循环,还会接着执行后面的循环,而break
则是完全中止循环。
'''
程序要求:
遍历1~100以内的所有整数,并将小于20或者大于90的数输出到屏幕。
'''
count = 0
while count < 100:
count += 1
if 20 <= count <= 90::
# 当20 <= count <= 90时,执行continue语句,
# 会跳过后面的print(),直接执行下一次循环。
# 例如,count = 20时,满足if条件,执行continue,跳过print()
# 直接进入下次循环判定,count < 100,然后执行count += 1,
# 此时count变为21,还是满足if条件,则继续continue,
# 跳过print(),进入下次循环判定...
continue
print("{}".format(count))
print("循环结束。")
总结:continue
语句中止本次循环,直接跳过循环代码块中continue
语句之后的内容,开启下次循环。
5. while…else…
语法:
while 条件:
执行代码块
else:
# 如果循环自然结束,而不是break导致的结束,则执行该代码块
执行代码块
while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句。
# 示例1:循环自然结束,else中的代码会被执行
count = 0
while count <= 5 :
count += 1
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----out of while loop ------")
# 示例2:循环过程中,执行break语句导致循环提前终止,不会执行else中的代码
count = 0
while count <= 5 :
count += 1
if count == 3:
break
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----out of while loop ------")
6. 死循环
死循环就是给while
传入一个一直满足的判定条件,那么循环就永远不会结束。
while True:
print("这是一个死循环,永远不会结束...")
7. 猜年龄小游戏
'''
练习:猜年龄游戏升级版
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如果猜对了,就直接退出
'''
import random
# 随机生成一个年龄
age = random.randint(0, 100)
count = 0
while count < 3:
input_age = int(input("请输入你猜测的年龄值(还有%d次机会):" % (3 - count)))
if input_age == age:
print("猜对了,牛批!")
break
else:
print("猜错了,减少一次机会。")
count += 1
if count >= 3:
sel = input("机会都用完了,还想继续猜吗?(Y/y/N/n):")
if sel.strip() == "Y" or sel.strip() == "y":
print("用户选择继续游戏!")
count = 0
elif sel.strip() == "N" or sel.strip() == "n":
print("用户选择退出!")
break
else:
print("用户输入非法值,退出!")
print("游戏结束!正确的年龄是{}岁!".format(age))