自制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




