我无法从问题函数中获取答案变量来检查答案是否确实正确。
以下是我到目前为止所做的事情:
import random
import operator
a = 0
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():
guess = input("")
if guess == a:
print("Correct")
else:
print("Wrong, the answer is ", a)
generateQuestion()
askQuestion()
我切断了所有工作正常的东西。
我知道我在顶部设置了= 0,否则我得到 未定义 错误。但是,我无法从generateQuestion()之外获得数学。
答案 0 :(得分:2)
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)
variable = generateQuestion()
askQuestion(variable)
答案 1 :(得分:2)
您可以通过将答案值直接传递到askQuestion
来减轻对全局的需求。
如果您正在运行python 3,请不要忘记将返回值从input
转换为int。如果使用python 2,则不需要int
转换。
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("")
try:
if int(guess) == a:
print("Correct")
else:
print("Wrong, the answer is ", a)
except:
print('Did not input integer')
askQuestion(generateQuestion())
答案 2 :(得分:0)
您有范围问题。 a
内的变量generateQuestion
与外部的a
不是同一个变量。
要解决此问题,您需要将a
声明为generateQuestion
内的全局。
import random
import operator
a = 0
ops = {
'+':operator.add,
'-':operator.sub
}
def generateQuestion():
x = random.randint(1, 10)
y = random.randint(1, 10)
op = random.choice(list(ops.keys()))
global a
a = ops.get(op)(x,y)
print("What is {} {} {}?\n".format(x, op, y))
return a
def askQuestion():
guess = input("")
if guess == a:
print("Correct")
else:
print("Wrong, the answer is ", a)
generateQuestion()
askQuestion()