这是我昨天在这里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
不在本地定义。
解决这个问题的最佳方法是什么?
答案 0 :(得分:0)
那又怎么样:
let $uris :=
cts:uris((),'limit=200000',
cts:and-query(
cts:collection-query("/TRA")
))
for $uri in $uris
let $result :=
try { fn:exists(doc($uri)) }
catch($err) { $err }
return
typeswitch($result)
case element(error:error) return ("received the following exception: ", $result)
default return $result
,
xdmp:elapsed-time()