Python中的复杂if语句

31 投票
7 回答
161374 浏览
提问于 2025-04-15 20:42

我想在Python中实现一个复杂的if-elif-else语句,但我搞不定。

我需要的elif行要检查一个变量是否满足以下条件:

80、443或者1024到65535之间的数字(包括这两个数字)

我试过:

if
  ...
  # several checks
  ...
elif (var1 > 65535) or ((var1 < 1024) and (var1 != 80) and (var1 != 443)):
  # fail
else
  ...

7 个回答

7
if x == 80 or x == 443 or 1024 <= x <= 65535

绝对应该这样做

18

通常,从积极的角度思考会更简单,然后再用“不是”来包裹它:

elif not (var1 == 80 or var1 == 443 or (1024 <= var1 <= 65535)):
  # fail

当然,你也可以更彻底一点,采用面向对象的方式:

class PortValidator(object):
  @staticmethod
  def port_allowed(p):
    if p == 80: return True
    if p == 443: return True
    if 1024 <= p <= 65535: return True
    return False


# ...
elif not PortValidator.port_allowed(var1):
  # fail
46

这样做就可以了:

elif var == 80 or var == 443 or 1024 <= var <= 65535:

撰写回答