You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何调试猜数字游戏错误结果?排查猜对时无正确提示问题

问题分析与解决

嘿,我一眼就揪出你代码里的问题啦!核心原因是类型不匹配

  • random.randint(1,6)生成的y是整数类型(int)
  • input()函数获取的用户输入是字符串类型(str)

在Python里,字符串和整数直接做相等判断(start_game != y)永远会返回True,所以你的while循环永远不会退出,else分支自然也永远不会执行,你也就看不到"correct guess"的提示了。而且更糟的是,当你尝试用字符串和整数做大小比较(start_game > ystart_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

火山引擎 最新活动