在CLI工具中,是否有一种干净的方法来组合user true循环以获取用户的输入?我需要3输入3个不同的问题,这必须立即验证以及。现在,我只是在三个时间循环,这很好,但感觉有点不对劲。
while True:
a = raw_input("Enter a:")
if validate(a):
break
else:
continue
while True:
b = raw_input("Enter b:")
if validate(b):
break
else:
continue发布于 2018-07-10 11:19:49
是的,当然,这就是函数的作用:
def get_input(prompt, validate=validate)
while True:
res = raw_input(prompt)
try:
res = validate(res):
return res
except ValidationError as e:
print("invalid value: {}".format(e))请注意,我更改了validate API,以便它现在应该引发一个ValidationError,而不是返回一个布尔值。这允许有一条错误信息来解释出了什么问题.此外,它还返回已验证的值,该值允许在需要时对其进行键入(例如,如果您想要一个int或float),或者实际返回任何您想要的作为最终结果的值。
发布于 2018-07-10 11:03:05
def validate_input(q):
res = None
while not res:
res = validate(raw_input(q))
return res
a = validate_input('Enter a')
b = validate_input('Enter b') 发布于 2018-07-10 11:15:00
这个程序首先问这三个问题,验证它们,然后在循环中只问那些没有验证的问题。直到所有问题得到验证:
# This is only example validate function:
def validate(resp):
if resp == "a":
return True
return False
valid = [False, False, False]
while not all(valid):
a = valid[0] or input("Enter a:")
b = valid[1] or input("Enter b:")
c = valid[2] or input("Enter c:")
valid = [True if valid[i] else bool(validate(v)) for i, v in enumerate((a, b, c))]https://stackoverflow.com/questions/51263436
复制相似问题