How do boolean operators work in 'if' conditions?

后端 未结 3 652
有刺的猬
有刺的猬 2021-01-23 06:50

I am currently new to Python and am trying to run a few simple lines of code. I cannot understand how Python is evaluating this syntax after the if statement. Any expla

相关标签:
3条回答
  • 2021-01-23 07:25

    You probably want:

    if number in (1, 2, 3):
    
    0 讨论(0)
  • 2021-01-23 07:28

    Python has boolean values, such as True and False, and it also has falsy values, such as any empty list, tuple, or dictionary, an empty string, 0, and None. Truthy values are the opposite of that, namely anything that's defined.

    Python's or evaluates and short-circuts on the first element that returns a truthy value.

    So, the expression (1 or 2 or 3) is going to return 1.

    If you want to compare against all elements, then you're looking for the in keyword:

    if number in (1, 2, 3):
        # Do logic
    
    0 讨论(0)
  • 2021-01-23 07:51

    The or operator takes two arguments, on its left and right sides, and performs the following logic:

    1. Evaluate the stuff on the left-hand side.
    2. If it is a truthy value (e.g, bool(x) is True, so it's not zero, an empty string, or None), return it and stop.
    3. Otherwise, evaluate the stuff on the right-hand side and return that.

    As such, 1 or 2 or 3 is simply 1, so your expression turns into:

    if number == (1):
    

    If you actually mean number == 1 or number == 2 or number == 3, or number in (1, 2, 3), you'll need to say that.

    (Incidentally: The and operator works the same way, except step 2 returns if the left-hand-side is falsey.)

    0 讨论(0)
提交回复
热议问题