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

自制Python乘法小游戏:值相等却判断不等问题排查求助

问题根源与修复方案

嘿,这个问题我太熟啦!核心问题出在类型不匹配上,咱们一点点拆解:

为什么判断会失败?

你打印出来的数值看起来一样,但背后的数据类型完全不同:

  • answer 是通过两个整数相乘得到的,所以它的类型是整数(int)
  • question2 是通过 input() 获取的用户输入,不管用户输入的是数字还是字母,input() 都会返回字符串(str)——哪怕输入的是"6",它也是字符串类型,不是整数

在Python里,字符串和整数直接用==比较永远会返回False——哪怕它们的内容看起来一模一样,比如"6" == 6的结果就是False。你的question3只是question2的引用,本质还是字符串,所以判断自然不成立。

修复代码

只需要把用户输入的字符串转换成整数就行,修改后的代码如下:

import random
# Variables
number1 = random.randint(0, 12)
number2 = random.randint(0, 12)
answer = number1 * number2
#print(answer)
print("What is", number1,"x", number2, "?")  # 这里不需要赋值给question,print()返回None
# Game loop
for i in range (1):
    question2 = input()
    try:
        question3 = int(question2)  # 把输入转成整数
        if question3 == answer:
            print("Well done!")
        else:
            print("Wrong!")
    except ValueError:
        print("Please enter a valid number!")  # 处理用户输入非数字的情况

额外小优化

  • 原来的question = print(...)是没必要的,因为print()函数的返回值是None,这个变量其实没用,直接打印就行
  • 加个try-except块可以避免用户输入非数字时程序崩溃,让小游戏更健壮

内容的提问来源于stack exchange,提问作者Frank Odogu

火山引擎 最新活动