Python猜数字游戏输入4/5位数字后无响应闪退问题排查求助
问题根因
你代码的核心问题是采用了3个独立的串行while循环,一旦输入值的大小关系变化,就会跳出当前循环,后续循环不满足条件时程序会直接终止:
- 当你第一次输入4/5位数字时,因为
x取值范围是1~100,输入值肯定大于x,会进入第一个while y>x循环,提示你重新输入 - 如果你后续输入的数字小于
x,第一个循环条件不满足直接退出,进入第二个while y<x循环,再次提示你输入 - 要是这时候你输入的数字又大于
x,第二个循环条件不满足直接退出,第三个while y==x条件也不满足,程序就会直接结束,没有任何提示,和你描述的现象完全吻合。
另外还有一个隐形问题:如果输入内容不是合法整数,int()转换会抛出ValueError导致程序直接崩溃闪退,如果你是双击运行py脚本,看起来就是无响应退出。你之前只修改最后一段判断逻辑,没有解决核心的串行循环问题,所以问题依然存在。
修复后的代码
import random x = random.randint(1, 100) # 首次输入加异常捕获,避免非整数输入崩溃 while True: try: y = int(input('write your number: ')) break except ValueError: print("请输入合法的整数") # 统一用一个循环处理所有判断逻辑 while True: if y > x: print('my number is smaller') elif y < x: print('my number is bigger') else: print('you are right') break # 猜不对就继续要求输入,同样加异常捕获 while True: try: y = int(input('write your number: ')) break except ValueError: print("请输入合法的整数")
改动说明
- 把所有猜数字的判断逻辑放到同一个死循环内,只要没猜对就不会退出循环,不会出现大小关系变化后程序直接终止的问题
- 增加了非法输入的异常捕获,避免输入非整数内容时程序直接崩溃
- 修正了原代码里的拼写错误
your right,如果需要保留原拼写可以自行改回
内容的提问来源于stack exchange,提问作者meysam
相关产品推荐
相关产品推荐

