I need to realize a complex if-elif-else statement in Python but I don't get it working.
The elif line I need has to check a variable for this conditions:
80, 443 or 1024-65535 inclusive
if ... # several checks ... elif (var1 > 65535) or ((var1 < 1024) and (var1 != 80) and (var1 != 443)): # fail else ...
This should do it:
elif var == 80 or var == 443 or 1024 <= var <= 65535:
It's often easier to think in the positive sense, and wrap it in a not:
elif not (var1 == 80 or var1 == 443 or (1024 <= var1 <= 65535)): # fail
You could of course also go all out and be a bit more object-oriented:
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