I'm now creating a function that returns a string of three words by comparing several variables with one integer value. I wonder how to write this in Python. For example,
x = 0
y = 1
z = 3
Mylist = []
if x or y or z == 0 :
Mylist.append("c")
elif x or y or z == 1 :
Mylist.append("d")
elif x or y or z == 2 :
Mylist.append("e")
elif x or y or z == 3 :
Mylist.append("f")
This will return the list below.
["c", "d", "f"]
Is this possible?
boolean-logic python if문 match compare
You seem to misunderstand how boolean expression works. This is different from the sentence in natural language, and I think you want to compare the same number as below.
if x == 1 or y == 1 or z == 1:
If you follow the example you posted, x
and 'y' are evaluated by themselves. (If 0
, False
and other numbers True
)
This can be expressed briefly as follows:
if 1 in (x, y, z):
As shown below:
if 1 in {x, y, z}:
A better way would be to use the set
to gain the advantage of eliminating duplicate values.
With or
, Python sees each content as a separate syntax. x or y == 1
is divided into the first test for x
and the test for y == 1
if it is false.
This is a result of operator priority. Because the or
operator has a lower priority than the ==
operator, it is evaluated earlier.
Of course, even if x or yor z == 1
is interpreted as (x or yor z) == 1
, the result will not come out as desired.
Boolean expressions connected by or
such as x or y or z
are determined as soon as they meet a variable with a true value. Because if only one thing is true, the whole thing is true. In python, 0 or empty (for lists or dictionaries), or false are all interpreted as false. See Boolean expression to find out what value Python is judging as false.
For example, if x = 2; y = 1; z = 0
, the value of the Boolean expression x or y or z
becomes 2, the first true value to meet. Therefore, even though y==1
is true, the value of x or z
becomes 2, so it becomes 2==1 and becomes false.
© 2024 OneMinuteCode. All rights reserved.