从Unity JS切换到Python一点点,一些更好的观点让我想不起为什么这不起作用。
我最好的猜测是变量guess
实际上是一个字符串,所以字符串5与整数5不同?
这是发生了什么,以及如何解决这个问题。
import random
import operator
ops = {
'+':operator.add,
'-':operator.sub
}
def generateQuestion():
x = random.randint(1, 10)
y = random.randint(1, 10)
op = random.choice(list(ops.keys()))
a = ops.get(op)(x,y)
print("What is {} {} {}?\n".format(x, op, y))
return a
def askQuestion(a):
guess = input("")
if guess == a:
print("Correct!")
else:
print("Wrong, the answer is",a)
askQuestion(generateQuestion())
答案 0 :(得分:3)
是的,"5"
与5
不同,你绝对正确。您可以使用5
将str(5)
转换为字符串。另一种方法是将"5"
转换为整数int("5")
,但该选项可能会失败,因此可以更好地处理异常。
因此,对您的计划的更改可能是以下内容:
if guess == str(a):
而不是:
if guess == a:
另一个选择是将guess转换为整数,如另一个答案所述。
编辑:这仅适用于Python版本2.x:
但是,您使用的是input()
,而不是raw_input()
。如果键入整数,input()
将返回一个整数(如果键入的文本不是有效的Python表达式,则会失败)。我测试了你的程序并询问了What is 4 - 2?
;我输入了2
并且它已经Correct!
了,所以我看不出你的问题是什么。
您是否注意到,如果您的计划要求What is 9 - 4?
,您可以输入9 - 4
并说明Correct!
?这是因为您使用的是input()
,而不是raw_input()
。同样,如果您输入例如c
,您的计划因NameError
但我会使用raw_input()
,然后将答案与str(correct_answer)
答案 1 :(得分:1)
我假设你使用的是python3。
代码的唯一问题是从input()
获得的值是字符串而不是整数。所以你需要转换它。
string_input = input('Question?')
try:
integer_input = int(string_input)
except ValueError:
print('Please enter a valid number')
现在您将输入作为整数,您可以将其与a
编辑代码:
import random
import operator
ops = {
'+':operator.add,
'-':operator.sub
}
def generateQuestion():
x = random.randint(1, 10)
y = random.randint(1, 10)
op = random.choice(list(ops.keys()))
a = ops.get(op)(x,y)
print("What is {} {} {}?\n".format(x, op, y))
return a
def askQuestion(a):
# you get the user input, it will be a string. eg: "5"
guess = input("")
# now you need to get the integer
# the user can input everything but we cant convert everything to an integer so we use a try/except
try:
integer_input = int(guess)
except ValueError:
# if the user input was "this is a text" it would not be a valid number so the exception part is executed
print('Please enter a valid number')
# if the code in a function comes to a return it will end the function
return
if integer_input == a:
print("Correct!")
else:
print("Wrong, the answer is",a)
askQuestion(generateQuestion())