2014-09-23 131 views
0

好了,所以这是一个有点混乱来解释。 基本上,我想“NUM1”生成一个随机数每次调用的时间,但是当函数里面,我想变量保持不变,从而给出正确的答案。分配随机数变量

#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时分配一个不同的值。

有什么办法巩固在职权范围内变量的值,同时还kepping功能外随机他们的价值?

+0

目前还不清楚你在问什么。唯一的时间'num1'和'num2'被赋值是在脚本的开始处。该函数只需要两个数字作为参数。每次使用'num1'和'num2'作为参数多次调用它,每次都会得到相同的值。 – chepner 2014-09-23 18:09:53

回答

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() 
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!") 
+0

哦......我很愚蠢,不把它当成一个整数。感谢你! – 2014-09-23 18:25:04

+0

不客气,num1和num2不会改变,只是将字符串与误导性的int进行比较。 – 2014-09-23 18:26:18

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()()产生一个新的问题,另外,如果你不需要保存返回的功能。