Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—如何对由或/和运算符分隔的变量进行分组_Python_Operators - Fatal编程技术网

Python—如何对由或/和运算符分隔的变量进行分组

Python—如何对由或/和运算符分隔的变量进行分组,python,operators,Python,Operators,我试图找到一种方法使以下(示例)代码更加优雅: if answer == "yes" or "Yes" or "Y" or "y" or "why not": print("yeah") 同样地,你不会用英语说: 可能的答案是“是”、“是”、“Y”或“为什么不” 你宁愿说: 可能的答案是“是”、“是”、“Y”或“为什么不” 更优雅的方式是什么 提前谢谢 您可以使用来与列表进行比较: if answer in ["yes", "Yes", "Y", "y", "why not"]:

我试图找到一种方法使以下(示例)代码更加优雅:

if answer == "yes" or "Yes" or "Y" or "y" or "why not":
    print("yeah")
同样地,你不会用英语说:

可能的答案是“是”、“是”、“Y”或“为什么不”

你宁愿说:

可能的答案是“是”、“是”、“Y”或“为什么不”

更优雅的方式是什么

提前谢谢

您可以使用来与列表进行比较:

if answer in ["yes", "Yes", "Y", "y", "why not"]:
    print("yeah")

以下代码执行相同的操作:

if answer in ["yes", "Yes", "Y", "y", "why not"]:
    print "yeah"

选项1:
回答[“是”、“是”、“Y”、“Y”、“为什么不”]
。。。这不是个好主意,每次运行时都会生成一个列表

选项2:
回答(“是”、“是”、“Y”、“Y”、“为什么不”)
。。。更好的想法是,(常量,不可变)元组是在编译时构建的

选项3:执行一次:

allowables=set([“是”、“是”、“Y”、“Y”、“为什么不”])


然后在每次需要时使用允许回答中的
答案。当允许值的数量很大,或者允许值的集合在运行时可能会变化时,这是最好的方法。

以防万一,我对Python非常陌生,我无法彻底搜索重复,因为我不知道如何调用它。@Ben:一个稍微偏离(这个)主题的问题,我可以从哪里了解原因(显然现在)您必须使用print(“-”)而不是print“-”?谢谢,我不想就这个问题开始提问that@JeffM当前位置我看到了你的答案,它也是正确的,我也谢谢你!!但本确实是最快的枪@杰夫M-有时纯粹是运气。:-)@Trufa——这是Python3(也称为Python3000)中(为数不多的)主要语法变化之一。就个人而言,我会从开始,但我对阅读官方文件而不是教程很着迷@特鲁法:最快的枪并不总是最好的。考虑等待和审慎的评估答案……出于某种原因,我不知道为什么,我必须使用打印(“是”),而不是打印“是”,因为这是行不通的,这是真正的FoT Python的最新版本吗?@特鲁法:显然你正在使用Python 3。因此,在这种情况下,
print
现在是一个函数,而不再是一个语句。这就解释了为什么这对你不起作用。打印是Python3中的一个函数。@JeffM:好的,这就解释了。谢谢@约翰,你说得对,我的确很匆忙地选择了正确的答案。很抱歉,这主要是因为我对语言的无知,而且我认为这个问题很简单,可以用第一个答案“完全”回答。因此,我向您道歉并感谢您的回答。出于好奇:您建议在选项2中使用(),但在选项3中形成冻结集时使用[]?为什么?@akira:(A)在选项3中,构建序列只做了一次,所以没关系(B)set((…)似乎会干扰读者,set([…])不会t@trufa您可能需要使用answer.lower()或answer.upper(),这会使其不敏感,因此您可以接受“是”、“为什么不”等,
answer.lower()在('YEs'、'y'、'Why Not'中)
@John Machin:(A)这很重要。。只有“没那么多”:,(B)你如何衡量你令人不安的说法