complex if statement in python

后端 未结 5 896
我寻月下人不归
我寻月下人不归 2021-02-11 17:47

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:

相关标签:
5条回答
  • 2021-02-11 18:14

    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
    
    0 讨论(0)
  • 2021-02-11 18:14
    if
      ...
      # several checks
      ...
    elif not (1024<=var<=65535 or var == 80 or var == 443)
      # fail
    else
      ...
    
    0 讨论(0)
  • 2021-02-11 18:17
    if x == 80 or x == 443 or 1024 <= x <= 65535
    

    should definitely do

    0 讨论(0)
  • 2021-02-11 18:31

    I think the most pythonic way to do this for me, will be

    elif var in [80,443] + range(1024,65535):
    

    although it could take a little time and memory (it's generating numbers from 1024 to 65535). If there's a problem with that, I'll do:

    elif 1024 <= var <= 65535 or var in [80,443]:
    
    0 讨论(0)
  • 2021-02-11 18:35

    This should do it:

    elif var == 80 or var == 443 or 1024 <= var <= 65535:
    
    0 讨论(0)
提交回复
热议问题