这是我昨天在这里问到的一个问题(What is the best way to validate user input against the contents of a list?)。使用这样的函数,我得到了一个很好的建议:
getuser = input("Please enter your username :")
print("1. render_device")
print("2. audit_device")
askuser = input("Would you like to render_device or audit_device? : ")
def verify_input(sites_set):
get_site_name = input("Please enter the site name you'd like to render :")
if get_site_name in sites_set:
print('Proceed')
return
else:
print('Not in either list, please enter a valid site')
verify_input(sites_set)
if askuser == "1":
sites_2017 = ["bob", "joe", "charlie"]
sites_2018 = ["sarah", "kelly", "christine"]
verify_input(set(sites_2017 + sites_2018))
在函数内以及调用它时,它可以正常工作。但是,问题是我需要
get_site_name
作为全局变量,因为其输入稍后会在脚本中引用(而不是在函数中)。当我将get_site_name
设置为全局时,该函数可以引用它,并且在输入有效站点时可以正常工作,但是当输入无效站点时,它只会不断重复循环"Not in either list"
错误,这可能是因为raw_input
变量中的get_site_name
不是在本地定义。解决这个问题的最佳方法是什么?
最佳答案
关于什么:
def verify_input(sites_set):
while get_site_name not in sites_set:
get_site_name = input("Please enter the site name you'd like to render :")
print('Proceed')
return
关于python - 在函数中引用全局变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970506/