在字典中使用变量

时间:2012-01-10 17:55:26

标签: python variables dictionary

我是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”。

缺少什么?

3 个答案:

答案 0 :(得分:4)

number是函数guess_number的本地变量。它不存在于它之外。你返回的是价值 - 不是变量本身,而是它的价值 - 你需要使用或分配给某些东西。您甚至可以将它分配给同名的变量 - 只要您理解它的另一个恰好具有相同名称的变量:

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

答案 1 :(得分:1)

更改

guess_number("Noam","Male")

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

numberguess_number函数的(本地)范围中定义,但不在全局范围内定义。要在全局范围中引用numbernumber首先需要绑定到可从全局范围访问的值,并且(函数的局部变量不可访问。请参阅下面的LEGB规则。)

参考:

答案 2 :(得分:0)

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

guess_number("Noam","Male")

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