2012-01-10 64 views
0

我是Python的初学者,开始搞乱它。 我有这个简单的代码:在字典中使用变量

def guess_number(Name,Gender): 
    if Gender=='Male': 
     Title='Mr.' 
    else: 
     Title='Ms.' 
    number=int(raw_input("Hello " + Title + Name + ", guess what my favorite number is between 1-10")) 
    if number==4: 
     print number 
     print "That's my favorite number!" 
    else: 
     print number 
     print "Try Again!" 
    return number 

choice_dict=dict([(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0),(8,0),(9,0),(10,0)]) 

for i in range(10): 
    guess_number("Noam","Male") 
    choice_dict[number]=choice_dict[number]+1 

print choice_dict[1], choice_dict[2], choice_dict[3], choice_dict[4], choice_dict[5], choice_dict[6], choice_dict[7], choice_dict[8], choice_dict[9], choice_dict[10] 

这是一个简单的过程,其中一个叫功能“guess_number”它要求一个人1-10之间一定数量。它重复该功能10次,并且对于每个选择的数字,它将在字典中的数字上加1,最后它打印出每个数字被选择的次数。

出于某种原因,我不明白它告诉我即使我在函数“guess_number”中返回了变量“number”,“number”没有被定义。

缺什么?

回答

1

变化

guess_number("Noam","Male") 

number = guess_number("Noam","Male") 

numberguess_number功能的(本地)范围定义,而不是在全球范围内。为了在全球范围内引用numbernumber首先需要绑定到从全球范围访问,和值

参考(从一个函数的局部变量不可访问,请参见LEGB规则,下面。):

4

number是一个局部变量的函数guess_number。它不在其外面。你回报的是价值 - 不是变量本身,而是它的价值 - 你需要使用或分配给某物。你甚至可以把它分配给同一名称的变量 - 只要你知道这是另一个变量恰好具有相同的名称:

number = guess_number("Noam", "Male") 
+0

+1,很好的解释。 – 2012-01-10 17:59:02

+0

谢谢你!我现在知道了。 – Pichie 2012-01-11 20:22:46

0

变量在函数“guess_number”“数”只是该功能的本地功能。要解决您的问题,您必须为“guess_number”的结果分配一个变量“number”。因此,改变

guess_number("Noam","Male") 

number = guess_number("Noam","Male")