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

Tru*_*ufa 2 python operators

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

if answer == "yes" or "Yes" or "Y" or "y" or "why not":
    print("yeah")
Run Code Online (Sandbox Code Playgroud)

用同样的方式用英语你不会说:

可能的答案是是或是或否或为什么不是.

你宁愿说:

可能的答案是肯定的,是的,Y或为什么不答案.

这样做更优雅的方式是什么?

提前致谢!!

Joh*_*hin 6

选项1:answer in ["yes", "Yes", "Y", "y", "why not"]......不是一个好主意,每次运行时都会建立一个列表.

选项2:answer in ("yes", "Yes", "Y", "y", "why not")...更好的想法,(常量,不可变)元组是在编译时构建的.

选项3:执行一次:

allowables = set(["yes", "Yes", "Y", "y", "why not"])

然后在answer in allowables每次需要时使用它.当允许值的数量很大时,这是最好的方法,或者允许值的集合在运行时可能会有所不同.

  • @trufa你可能想要使用answer.lower()或answer.upper(),这会让它变得麻木不仁,所以你可以接受'YEs','Why Not'等等,`answer.lower()in('是','y','为什么不')` (4认同)