我是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”。
缺少什么?
答案 0 :(得分:4)
number
是函数guess_number
的本地变量。它不存在于它之外。你返回的是价值 - 不是变量本身,而是它的价值 - 你需要使用或分配给某些东西。您甚至可以将它分配给同名的变量 - 只要您理解它的另一个恰好具有相同名称的变量:
number = guess_number("Noam", "Male")
答案 1 :(得分:1)
更改
guess_number("Noam","Male")
到
number = guess_number("Noam","Male")
number
在guess_number
函数的(本地)范围中定义,但不在全局范围内定义。要在全局范围中引用number
,number
首先需要绑定到可从全局范围访问的值,并且(函数的局部变量不可访问。请参阅下面的LEGB规则。)
参考:
答案 2 :(得分:0)
函数“guess_number”中的变量“number”仅对该函数是本地的。要解决您的问题,您必须为“guess_number”的结果分配一个变量“number”。因此,改变
guess_number("Noam","Male")
到
number = guess_number("Noam","Male")