gpt4 book ai didi

python - 在函数内更改全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:18 25 4
gpt4 key购买 nike

我是编程新手,正在寻找一些关于该做什么的建议。我正在尝试编写的程序需要用户提供几个数字。我想使用一个函数来测试用户是否为每个输入的值输入了一个数字。如果输入不是数字,我希望函数一直询问数字,直到输入一个数字。我想知道是否有更好的方法将值传递给全局变量,而不是将函数中的每个变量显式声明为全局变量。我不确定是否有更好的方法...

rowNum = None

def numTest(c, d):
x = False
while x is not True:
try:
c = raw_input(d)
c = float(c)
x = True
except:
print "The value you entered isn't a valid number, please try again."
global rowNum
rowNum = c

numTest(rowNum, "Enter number of rows: ")
print rowNum
# I want to use the numTest function on several variables...
# e.g.
# numTest(contourLevel, "Enter number of contour levels: ")
# numTest(cellSize, "Enter cell size: ")
# numTest(labelSize, "Enter label size: ")

最佳答案

只要让它成为一个函数,返回一些东西而不是操纵一个全局变量,更容易维护!

def get_num(msg):
while True:
try:
return int(raw_input(msg)) # number of rows should be int
except ValueError:
print "The value you entered isn't a valid number, please try again."

num_rows = get_num("Enter number of rows: ")
print num_rows

而不是你提到的 numTest(cellSize, "Enter cell size: ") 这样的东西,你应该做 cellSize = get_num("Enter cell size: ")。返回值是更好的做法。

你可以让这个函数更通用 intfloat 像这样:

def get_num(msg, type_=int):
while True:
try:
return type_(raw_input(msg))
except ValueError:
print "The value you entered isn't a valid number, please try again."

现在你还可以拥有:

x = get_num("test") # normal int
x = get_num("foo", float)

关于python - 在函数内更改全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com