(py)目前,当用户输入除“y”和“n”这两个选项之外的其他内容时,下面的代码不会验证/输出错误消息,因为它在while循环中。
again2=input("Would you like to calculate another GTIN-8 code? Type 'y' for Yes and 'n' for No. ").lower() #**
while again2 == "y":
print("\nOK! Thanks for using this GTIN-8 calculator!\n\n")
restart2()
break #Break ends the while loop
restart2()
当我们输入两种选择时,我正在努力想办法允许我用输出作出回应。例如:
if again2 != "y" or "n"
print("Not a valid choice, try again")
#Here would be a statement that sends the program back to the line labelled with a **
因此,当用户的输入不等于“y”或“n”时,程序将返回初始语句并要求用户再次输入。任何仍然支持尽可能少的有效代码的想法?谢谢!
答案 0 :(得分:1)
def get_choice(prompt="Enter y/n?",choices=["Y","y","n","N"],error="Invalid choice"):
while True:
result = input(prompt)
if result in choices: return result
print(error)
可能是解决此问题的一种很好的通用方法
result = get_choice("Enter A,B, or C:",choices=list("ABCabc"),error="Thats not A or B or C")
你可以粗略地使它不区分大小写...或添加其他类型的标准(例如必须是26到88之间的整数)
答案 1 :(得分:0)
递归解决方案:
def get_input():
ans = input('Y/N? ') #Use raw_input in python2
if ans.lower() in ('y', 'n'):
return ans
else:
print('Please try again.')
return get_input()
如果它们真的很顽固,当它达到最大递归深度时会失败(~900错误答案)