将随机数分配给变量

时间:2014-09-23 17:59:23

标签: python variables random

好的,所以解释这有点令人困惑。 基本上,我想要#num;'每次调用时都会生成一个随机数,但是当在函数内部时,我希望变量保持不变,以便给出正确的答案。

#finding random numbers to be used in questions
import random
num1 = int(random.randrange(0,101,1))
num2 = int(random.randrange(0,101,1))


#defining a function that asks an addition question, using random numbers
def addition_question(num1,num2):
    answer1 = num1 + num2
    print("What is",num1,"+",num2,"?")
    given1=input()
    if given1==answer1:
        print("Correct!")
    else:
        print("Sorry, wrong answer!")


print("Question 1:")
addition_question(num1,num2)

我认为目前它正在做的是每次调用num1和num2时为其分配不同的值。

有没有办法巩固函数中变量的值,同时仍然将函数值加到函数随机函数之外?

3 个答案:

答案 0 :(得分:0)

这里的课程是最好的选择。

class NumberQuestion(object):
    def __init__(self):
        self.num1 = random.randrange(0,101,1)
        self.num2 = random.randrange(0,101,1)

    def addition_question(self):
        answer1 = self.num1 + self.num2
        print("What is %s + %s?" % (self.num1, self.num2))
        given1 = input()
        if int(given1) == answer1:
            print("Correct!")
        else:
            print("Sorry, wrong answer!")

print("Question 1:")
question = NumberQuestion()
question.addition_question()

答案 1 :(得分:0)

您很可能将int与字符串if given1 == answer1进行比较,因此将input转换为整数,您也可以使用while loop继续要求用户进行更多猜测直到他们输入正确答案。

def addition_question(num1,num2):
    answer1 = num1 + num2
    print("What is",num1, "+",num2,"?")
    while True:
        given1 = int(input())
        if given1 == answer1:
            print("Correct!")
            break
        else:
            print("Sorry, wrong answer, guess again!")

答案 2 :(得分:0)

这可能是您使用新获得的closure技能的好机会

def question_generator():
    '''returns a function which does the addition stuff'''
    num1 = random.randrange(0,101,1)
    num2 = random.randrange(0,101,1)
    def addition_question():
        answer1 = num1 + num2
        print("What is",num1,"+",num2,"?")
        given1=int(input())
        if given1==answer1:
            print("Correct!")
        else:
            print("Sorry, wrong answer!")
    return addition_question

new_question = question_generator()
print("Question 1:")
new_question()

注意:每次调用question_generator()时,都会创建一个新函数,该函数具有新的num1和num2。如果再次调用new_question,它将包含相同的num1和num2

addition_question这是一个闭包。它“记住”它的创建范围。 每次调用question_generator时,返回函数的范围都包含两个新创建的随机数。返回的函数会记住num1num2的值。

如果您不需要保存返回的功能,可以致电question_generator()()以产生新的附加问题。