如何调试猜数字游戏错误结果?排查猜对时无正确提示问题
问题分析与解决
嘿,我一眼就揪出你代码里的问题啦!核心原因是类型不匹配:
random.randint(1,6)生成的y是整数类型(int)- 而
input()函数获取的用户输入是字符串类型(str)
在Python里,字符串和整数直接做相等判断(start_game != y)永远会返回True,所以你的while循环永远不会退出,else分支自然也永远不会执行,你也就看不到"correct guess"的提示了。而且更糟的是,当你尝试用字符串和整数做大小比较(start_game > y或start_game < y)时,Python3会直接抛出TypeError错误!
修复方案
只需要把用户输入的字符串转换成整数就行,修改所有input()的地方,用int()包裹:
import random y = random.randint(1,6) # 第一次输入就转成整数 start_game = int(input("Pick a number between 1 and 6")) while start_game != y: if start_game > y: print("guess too high") start_game = int(input("Pick a number between 1 and 6")) elif start_game < y: print("guess too Low") start_game = int(input("Pick a number between 1 and 6")) else: print("correct guess")
额外优化(可选)
如果用户输入了非数字的内容(比如字母),int()会报错,你可以加个异常处理让游戏更健壮:
import random y = random.randint(1,6) while True: try: start_game = int(input("Pick a number between 1 and 6")) if start_game > y: print("guess too high") elif start_game < y: print("guess too Low") else: print("correct guess") break # 猜对了就退出循环 except ValueError: print("Please enter a valid number!")
这样不管用户输入什么奇怪的内容,游戏都不会崩溃啦~
内容的提问来源于stack exchange,提问作者Jed




