Python中的复杂if语句
我想在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: