Why Python evaluates this to true?

python true false example
python boolean
return true python
python truth value testing
real in python
python dictionary
python if
python evaluate math expression

I come from C background and found this quite strange.

a = 0

b = 0

if (a == b) != 0:
    print('non zero and equal')
else:
    print('something wrong')

This prints "non zero and equal".

In C, a == b evaluates to true, i.e. non-zero. Now, you compare non-zero with zero and this comes to false, i.e. 0.

How does this work in Python?

I tried doing something like this:

if a==b !=0:

It worked but I got to know there is some lazy evaluation there and I need to understand it.

a==b comes to True.

Also, True != 0 which evaluates to True.

5. Conditionals — How to Think Like a Computer Scientist: Learning , A boolean expression (or logical expression) evaluates to one of two states true or false. Python provides the boolean type that can be either set to False or True. I am learning about logical operators in Python. Why does the above expression evaluates to True.

In Python3 True evaluates to 1 and False as 0. Find below for more understanding. Also read this operator comparisons to clear your understanding.

Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> True != 0
True
>>> False != 1
True
>>> False == 0
True
>>> True == 1
True
>>> True == 4
False

9. Notes about booleans and logical operators — Python Notes , All other values are considered true -- so objects of many types are always special methods may be found in the Python Reference Manual. >>> True and True True >>> True and False False >>> True or False True >>> False or False False Boolean logic in Python. Python takes this logical evaluation one step further: and returns the first value if it evaluates to false, otherwise it returns the second value.

It same as C, when a == b it comes out to be true which is 1

(a == b) != 0

gives

1!= 0

and hence the print statement

2.3.1 Truth Value Testing, To evaluate a string-based expression , Python's eval() runs the following steps: Parse expression; Compile it to bytecode; Evaluate it as a Python� In programming you often need to know if an expression is True or False. You can evaluate any expression in Python, and get one of two answers, True or False. When you compare two values, the expression is evaluated and Python returns the Boolean answer:

Python eval(): Evaluate Expressions Dynamically – Real Python, Expressions with operands and operators evaluate to either True or False and they can be used in an if or while condition to determine if a code� Boolean expressions are Python expressions that return a truth value (True or False) when the interpreter evaluates them. They’re commonly used in if statements to check if some condition is true or false. Since Boolean expressions aren’t compound statements, you can use eval () to evaluate them:

Truthy and Falsy Values in Python: A Detailed Introduction, First, we look at what kind of values evaluate to "True" or "False" in python. Anything that is "empty" usually evaluates to False, along with the� It doesn't. [code ]__name__ == "__main__"[/code] is [code ]True[/code] only when [code ]shark.py[/code] is executed as the main file. For instance, say you create

The and-or trick in python, You can evaluate any expression in Python, and get one of two answers, True or False . When you compare two values, the expression is evaluated and Python� In the above example, even though a and b are two different variables, a is b returned True. This is because, type of a is int which is an immutable object. So python (for optimisations) allocated

Comments
  • You might like to read this
  • (a == b) gets evaluated first due to parentheses, so effectively you are evaluating True != 0 which is True as True equates to 1
  • In C, int a = 0; int b = 0; return (a == b) != 0;, you get 1, because you used != for the final 0 comparison. The same thing happens here.
  • As others have said, you're mistaken about how C works. It behaves the same as Python here (aside from the first comparison producing 1, not a special True value, but Python's True has a numeric value of 1 so it's all basically the same).
  • The result of comparison of values of a==b is True, which you then, compare with numerical value 0, which is evaluates to False.
  • True == 1 but True is not 1
  • It is of type bool. Try type(a==b). It will give you bool and not str. Which is effectively 1