我正在编写一个程序,其中我的函数guessgetter
定义如下:
def guessgetter():
print("What number do you choose?")
num = int(input())
if num > 100 or num < 1:
print("Please choose a number between 1 and 100")
guessgetter()
我知道这种语法是有效的。但是,当我稍后在代码中引用(是的,在运行我创建的函数之后)到num
时,它表示我没有为它定义一个值。我该如何解决这个问题?
答案 0 :(得分:3)
问题是虽然num是在函数guessgetter的范围内定义的,但它并没有在代码的其他地方定义。如果要使用函数生成的num值,请尝试添加函数的最后一行
return num
然后按如下方式调用该函数:
x = guessgetter()
将您获得的值存储到可以在函数外部使用的变量x中。
答案 1 :(得分:0)
在函数guessgetter
的范围之外,变量num
不存在。如果您稍后想知道num
的价值是什么,则必须使变量num
全局(即可在任何地方访问)。最简单的方法是添加行
global num
在分配num之前到你的函数:
def guessgetter():
print "What number do you choose?"
global num
num = int(input())
if num > 100 or num < 1:
print("Please choose a number between 1 and 100")
guessgetter()
答案 2 :(得分:0)
您需要从函数返回值,并在调用函数时捕获返回的值。您还需要处理尾递归。这导致:
def guessgetter():
print("What number do you choose?")
num = int(input())
if num > 100 or num < 1:
print("Please choose a number between 1 and 100")
num = guessgetter()
return num
您可以将其用作:
guess = guessgetter()