Python 3.x “如何拥有多个”;“子字符串”;将in运算符与字符串一起使用时

Python 3.x “如何拥有多个”;“子字符串”;将in运算符与字符串一起使用时,python-3.x,operators,Python 3.x,Operators,我有一个希望很简单的问题,我似乎找不到答案 在下面的代码中,我创建了一个输入验证特性,以确保用户输入四个有效的“操作”(即单个字母“A”、“s”、“m”或“d”中的任意一个,而其他任何字母都不存在),因此,我检查用户输入的“操作”是否与字符串“A”、“s”、“m”或“d”中的任意一个不相等。如果满足条件,将打印一条错误消息,程序将重新启动,如代码(大部分)所示 请告诉我一种方法,我可以检查操作是否匹配四个字母中的任何一个。我只是想澄清一下,我不是说我需要或(逻辑函数)“a”、“s”、“m”和“d

我有一个希望很简单的问题,我似乎找不到答案

在下面的代码中,我创建了一个输入验证特性,以确保用户输入四个有效的“操作”(即单个字母“A”、“s”、“m”或“d”中的任意一个,而其他任何字母都不存在),因此,我检查用户输入的“操作”是否与字符串“A”、“s”、“m”或“d”中的任意一个不相等。如果满足条件,将打印一条错误消息,程序将重新启动,如代码(大部分)所示

请告诉我一种方法,我可以检查操作是否匹配四个字母中的任何一个。我只是想澄清一下,我不是说我需要或(逻辑函数)“a”、“s”、“m”和“d”

非常感谢您的来信和帮助,谢谢!:)

嗯,也许吧

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
您可以将运算符与值元组一起使用,以测试:

if operation not in ('a', 's', 'm', 'd'):
如果
操作
不等于元组
中的任何值('a','s','m','d')
,则上述if语句的条件将计算为
True


还要注意,您使用的
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

您可能需要以下内容:

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

第一个注意事项:对于Python2.x,使用raw_input()而不是input();记住,在Python3之前,input()实际上类似于eval(raw_input())——危险。接下来,您可以通过简单地为允许的操作创建一个集合()来测试成员身份:如果操作不在集合中(('a','s','m','d')):。。。(或者甚至只使用元组:if operation not in('a','s','m','d'):…断言失败将引发异常…如果他希望程序继续,他应该使用循环:而True:…if operation not in('a','s','d','m')):…其他:breakyeah…但我想我会让他自己解决这个问题…和其他所有永远得到这个答案的新手一起?这不是欢迎未来Python程序员进入这个领域的最佳计划。我不确定那些正在寻找复制粘贴答案的人是我想成为未来Python程序员的人y语言…我希望他们至少能理解他们为什么要做某件事…此外,我非常清楚地说明了他在代码下需要做什么…但这并不重要,几乎任何问题都有大量的复制和粘贴答案…通常甚至来自我…我认为帮助他们理解这个概念更重要e对未来程序员的帮助比复制/粘贴解决方案更大\
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