Python中函数中包含的变量值
我正在编写一个程序,其中的函数Python中函数中包含的变量值,python,variables,Python,Variables,我正在编写一个程序,其中的函数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() def guessgetter(): 打
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()
def guessgetter():
打印(“您选择什么号码?”)
num=int(输入())
如果num>100或num<1:
打印(“请选择一个介于1和100之间的数字”)
猜
我知道这个语法是有效的。但是,当我稍后在代码中(是的,在运行我创建的函数之后)提到
num
时,它表示我没有为它定义一个值。如何修复此问题?问题在于,虽然num是在函数guessgetter的作用域中定义的,但它没有在代码的其他地方定义。如果要使用函数生成的num值,请尝试将其添加为函数的最后一行
return num
然后调用函数,如下所示:
x = guessgetter()
要将获得的值存储到可在函数外部使用的变量x中。在函数范围之外的
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()
def guessgetter():
打印“您选择什么号码?”
全局数
num=int(输入())
如果num>100或num<1:
打印(“请选择一个介于1和100之间的数字”)
猜
您需要从函数返回值,并在调用函数时捕获返回值。您还需要处理尾部递归。这导致:
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
你确定任何类型的全局变量都是Pythonic的吗?是的,可能不是。然而,这确实解决了问题,而不改变任何其他代码行。使用
while
循环:whilenum>100或num<1:num=int(输入(“请选择一个介于1和100之间的数字”)
我同意用while循环替换递归;我留下它或多或少只是为了说明递归调用的返回值也必须被捕获——如果您保留递归调用的话。
guess = guessgetter()