三、循环

之前写的猜年龄小游戏只能猜一次,现在希望添加功能,让用户一直猜,直到猜对为止,怎么做呢?

age = 18
while True:
guess_age = int(input("请输入猜测的年龄>>>"))
if guess_age == age:
print("猜对了")
elif guess_age > age:
print("猜大了")
else:
print("猜小了")

 

上述代码实现了用户多次猜测的需求,但是却引入了一个bug,即使用户猜对了,也会提示用户继续
猜,这显然不合理,我们希望用户猜对以后,游戏就结束了。

age = 18
while True:
guess_age = int(input("请输入猜测的年龄>>>"))
if guess_age == age:
print("猜对了")
break # 终止循环
elif guess_age > age:
print("猜大了")
else:
print("猜小了")

break 的作用就是完全终止整个循环,我们判断用户输入正确,就直接使用 break 结束循环。

通过 while 循环,打印0-100之间所有的整数

i = 0
while i < 100:
i += 1
print(i)

 

加一个需求,如果数字能被 3 整数,就不打印,怎么做

i = 0
while i < 100:
i += 1
if i % 3 == 0:
continue # 跳过本次循环,不再执行后面的代码
print(i)

 

continue 的作用就是跳过本次循环,不再执行后面的代码。

while i < 100:
i += 1
if i % 3 == 0:
continue # 跳过本次循环,不再执行后面的代码
print(i)
else:
print("循环结束")

 

可以再 while 循环后面加一个首尾的语句,在没有 break 或代码报错的前提下,else中的内容会在循环
结束后执行。
for 循环用于迭代序列(列表、元组、字典、集合、字符串)

for i in "hello world":
print(i)

 

for 循环也可以使用 break 语句和 continue 语句。
如需循环指定的次数,可以使用 range 函数,range 函数返回一个数字序列,默认情况下从 0 开始,并
默认,每次循环递增1,直到指定的数字结束。

for i in range(5):
print(i)
print("-----------------------")
# 可以指定从几开始
for i in range(2, 7): # 左闭右开区间
print(i)
print("-----------------------")
# 可以指定步长,也就是指定每次循环增加几
for i in range(2, 17, 3):
print(i)

 

试试以下的需求:一个用户登录的功能,登录成功打印欢迎语句,登录失败超过三次,就提示用户账户
已锁定并退出程序不让用户登录了。用户名和密码可以以变量的形式预设在程序中。

# 程序中预设用户名和密码
u_name = "fanmao"
u_pwd = "123456"
# 用户最多有三次登录机会,循环三次
for i in range(3):
# 接受用户的输入
name_inp = input("请输入用户名>>>")
pwd_inp = input("请输入密码>>>")
if name_inp == u_name and pwd_inp == u_pwd:
print("登录成功,欢迎来到凡猫的世界")
break
else:
if i < 2:
print("登录失败,请重试")
else:
print("账户已锁定")