1

我正在编写一个程序,其中我的函数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,它说我没有为它定义一个值。我怎样才能解决这个问题?

4

3 回答 3

3

问题是,虽然 num 是在函数 guessgetter 的范围内定义的,但它并没有在代码的其他地方定义。如果要使用函数生成的 num 的值,请尝试添加为函数的最后一行

return num

然后调用函数如下:

x = guessgetter()

将获得的值存储到可在函数外部使用的变量 x 中。

于 2013-08-18T00:17:18.570 回答
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()
于 2013-08-18T01:16:49.283 回答
0

You need to return the value from the function, and capture the returned value when you call the function. You also need to deal with the tail recursion. This leads to:

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

You can use it as:

guess = guessgetter()
于 2013-08-18T01:35:05.067 回答