有没有一种方法可以缩短此if语句?

时间:2020-07-27 18:04:28

标签: python python-3.x boolean

我正在尝试使之成为两个或更多变量为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

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

1 个答案:

答案 0 :(得分:9)

Python的布尔值TrueFalse可以算术上分别视为整数10。因此,如果将它们加在一起并且结果小于或等于2,则至少两个必须为false。

if g + h + c + i <= 2:
    ...

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