从另一个函数获取变量的值

时间:2015-03-23 05:24:33

标签: python function variables

我无法从问题函数中获取答案变量来检查答案是否确实正确。

以下是我到目前为止所做的事情:

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()之外获得数学。

3 个答案:

答案 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()

看看这个: http://nbviewer.ipython.org/github/rasbt/python_reference/blob/master/tutorials/scope_resolution_legb_rule.ipynb