Python的while True循环无限执行,如何执行一次后运行后续代码
问题修复说明
你的代码出现无限循环有以下几个明确原因:
while True是无限循环语法,你没有设置break语句触发跳出,所以会永远重复执行循环内的代码input()函数返回的结果是字符串类型,和你生成的整数类型随机数直接做相等判断,永远不会成立,所以你写的猜中分支永远不会运行- 代码缩进错误:和猜中判断
if对应的else错误和while对齐,导致逻辑完全错位 - 你自定义的
func()函数写在了if分支内部,分支外无法调用,同时也没有对应跳出循环的逻辑 - 你生成随机数用了
randint(0,10),和提示用户的「1到10」范围不符
修正后可正常运行的代码
如果需要保留用户可选择是否重试的功能,用下面的代码即可:
import random import time while True: guess = input("请输入1-10之间的幸运数字:\n") # 将输入转为整数类型才能和随机数正常比较 guess = int(guess) number = random.randint(1, 10) print(f"生成的随机数是:{number}") if guess == number: print("太棒了,你猜对了!") else: print("没关系,要不要再试一次?") answer = input("你还要继续玩吗?(y/n):\n") if answer == 'n': print("祝你今天愉快!") time.sleep(2) # 跳出循环,执行后面的代码 break # 循环结束后会执行这里及之后的所有代码 print("猜数字游戏已结束")
如果你的需求是固定只执行一次猜数字逻辑,不需要给用户重试选项,直接去掉while True结构即可,不需要写循环:
import random import time guess = input("请输入1-10之间的幸运数字:\n") guess = int(guess) number = random.randint(1, 10) print(f"生成的随机数是:{number}") if guess == number: print("太棒了,你猜对了!") else: print("没关系,下次好运!") print("祝你今天愉快!") time.sleep(2) # 后续代码正常执行 print("猜数字逻辑已执行完成,运行后续内容")
内容的提问来源于stack exchange,提问作者Sharayh
相关产品推荐
相关产品推荐

