Python 数学游戏不起作用
我为我正在制作的一个程序做了一个函数,这是一个数学游戏,你必须输入一个答案,如果答案正确,你就赢了。我认为这个游戏很简单,但出于某种原因,每当你输入答案时,程序就会说它是错的,即使答案是对的Python 数学游戏不起作用,python,math,Python,Math,我为我正在制作的一个程序做了一个函数,这是一个数学游戏,你必须输入一个答案,如果答案正确,你就赢了。我认为这个游戏很简单,但出于某种原因,每当你输入答案时,程序就会说它是错的,即使答案是对的 def gameChoice(): print("what game do you want to play? A math game") game_choice = input(">>") if game_choice == 'math game': n
def gameChoice():
print("what game do you want to play? A math game")
game_choice = input(">>")
if game_choice == 'math game':
number1 = random.randint(1, 30)
number2 = random.randint(1, 30)
answer = (number1 + number2)
print("%d + %d = %d" %(number1, number2, answer))
player_answer = input(">> ")
if player_answer == answer:
print("congrats, you got it right")
else:
print("sorry, try again")
守则:
player_answer is a string
及
这使得这两个球从来都不相等
player_answer = int(input(">> "))
这会使输入自动成为整数,而不是int,您可以使用literal_eval(来自ast内置)。这将允许一个float或int,以防将来需要支持float。您还需要一些异常处理,以防用户输入字符串或只是按Enter键 然后,您将希望循环,直到用户正确执行为止。一个可能的解决办法是:
import random
from ast import literal_eval
def gameChoice():
print("what game do you want to play? A math game")
game_choice = input(">>")
if game_choice == 'math game':
number1 = random.randint(1, 30)
number2 = random.randint(1, 30)
answer = (number1 + number2)
while True:
print("%d + %d = %d" % (number1, number2, answer))
try:
player_answer = literal_eval(input(">> "))
except ValueError:
print('Please enter a number for the answer')
except SyntaxError:
print('Please enter an answer')
else:
if player_answer == answer:
break
else:
print("sorry, try again")
print("congrats, you got it right")
player\u answer
是一个字符串,但answer
是一个int。您可能应该将player\u answer
转换为一个整数,然后比较两个可能的重复项。。。更接近,但它适用于2.xraw\u输入
。在这里使用ast
似乎很愚蠢,这比尝试转换到int
和捕获(如果不能)要做的工作多得多。我还相信,如果你想让你的代码处理浮动,你应该重构你的代码来处理浮动。在这种情况下,这有点过分了,但我不确定这是不是需要更多的工作。它实际上只是使用“literal_eval”而不是“int”并添加导入。我主要是把它作为int的一个替代品,并没有为程序员做更多的工作,而是为系统做了更多的工作。这太过分了。
import random
from ast import literal_eval
def gameChoice():
print("what game do you want to play? A math game")
game_choice = input(">>")
if game_choice == 'math game':
number1 = random.randint(1, 30)
number2 = random.randint(1, 30)
answer = (number1 + number2)
while True:
print("%d + %d = %d" % (number1, number2, answer))
try:
player_answer = literal_eval(input(">> "))
except ValueError:
print('Please enter a number for the answer')
except SyntaxError:
print('Please enter an answer')
else:
if player_answer == answer:
break
else:
print("sorry, try again")
print("congrats, you got it right")