有没有办法缩短这个 if 语句?

Kof*_*611 3 python boolean python-3.x

我试图做到这一点,如果两个或多个变量为 False,则语句结束;但是按照我的方式,代码占用了太多空间。

if g == False and h == False:
  print("Use a different formula.")
  return
elif g == False and i == False:
  print("Use a different formula.")
  return
elif g == False and c == False:
  print("Use a different formula.")
  return
elif h == False and i == False:
  print("Use a different formula.")
  return
elif h == False and c == False:
  print("Use a different formula.")
  return
elif i == False and c == False:
  print("Use a different formula.")
  return
elif g == False and h == False and i == False:
  print("Use a different formula.")
  return
elif g == False and h == False and c == False:
  print("Use a different formula.")
  return
elif h == False and i == False and c == False:
  print("Use a different formula.")
  return
elif c == False and i == False and g == False:
  print("Use a different formula.")
  return
elif g == False and h == False and i == False and c == False:
  print("Use a different formula.")
  return
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,从技术上讲它应该可以工作,但必须有一种方法来缩短它。请帮忙。

kay*_*ya3 9

Python 的布尔值TrueFalse可以分别作为整数1和算术处理0。所以如果你把它们加在一起,结果小于或等于2,那么至少有两个一定是假的。

if g + h + c + i <= 2:
    ...
Run Code Online (Sandbox Code Playgroud)

正如@MadPhysicist 在评论中指出的那样,这是有效的,因为它boolint.

  • 您可能需要明确添加“bool”实际上是 Python 中“int”的子类。 (2认同)