我有一个希望简单的问题,我似乎无法找到答案。
在下面的代码中,我创建了一个输入验证功能,以确保用户输入四个有效“操作”中的任何一个(AKA单个字母'a','s','m'或'd'和别的,所以,我正在检查用户输入的“操作”是否不等于任何字符串'a','s','m'或'd'。如果满足条件,将打印一条错误消息,程序将重新启动,因为代码(主要是)显示。
print("Select an operation:")
print("Add (a)"), print("Sub (s)")
print("Mul (m)"), print("Div (d)")
operation = input()
if "a" not in operation:
print("Invalid operation.")
continue
请告诉我一种方法,我可以检查操作是否符合四个字母中的任何一个。而且,为了清理,我并不是说我需要OR(逻辑函数)'a','s','m'和'd'。
非常感谢所有的通信和帮助,谢谢! :)
答案 0 :(得分:2)
您可以使用带有值元组的not in
运算符来测试:
if operation not in ('a', 's', 'm', 'd'):
如果True
不等于元组operation
中的任何值,则上述if语句的条件将评估为('a', 's', 'm', 'd')
。
另请注意,您错误地使用了continue
:它只能在循环中使用。
如果您想循环直到用户输入正确的值,您可以使用以下内容:
while True: # Loop continuously
operation = input("Enter a value: ") # Get the input
if operation in ('a', 's', 'm', 'd'): # See if it can be found in the tuple
break # If so, break the loop
答案 1 :(得分:0)
operation = input()
assert operation in ('a', 's', 'm', 'd'), "Error you must use one of 'a', 's', 'm', or 'd'"
我想
基本上你想在 选项列表中检查你的操作
粗略如果您的选项列表很大,那么使用集合更合适......或者提供从操作到方法的映射的字典,即
operations = {
"a":add,
"s":sub,
"m":mul,
"d":div
} #these are methods defined elsewhere
operation = input()
if operation in operations:
operations[operation]() #call the method
答案 2 :(得分:0)
您可能需要以下内容:
allowed_operations = set(('a', 's', 'm', 'd'))
while True:
operation = input() # raw_input() for Python earlier than 3
if operation not in allowed_operations:
print ('Error: Must choose one of a, s, m, d\nPlease try again')
else:
break