Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
simple syntax question
#1
Hi.

Why does the order matter here? What would be the correct syntax to print two True statements?
var = "*"
print(var == ("/" or "*"))
print(var == ("*" or "/"))
Thanks
Reply
#2
print("/" or "*") # yields "/"
print("*" or "/") # yields "*"
The doc says that with "or", only the first parameter is used in the logical comparison.
Thus, for your example; False outputs for the 1st print, and True outputs for the second print.
Reply
#3
Thanks, Archie. I'm not sure I completely follow, though.

Docs says:

x or y
if x is false, then y, else x
(1) This is a short-circuit operator, so it only evaluates the second argument if the first one is false.


So if I'm reading this correctly,

var = "*"
print(var == ("/" or "*")) # var == "/" is False, so it will evaluate var == "*" which is True, making the whole statement True
print(var == ("*" or "/")) # var == "*" is True, so the statement is True

Also, I put parentheses around ("/" or "*") to hopefully show the scope of OR but it evaluates the same either way Huh
Reply
#4
Multiple expressions with "or" keyword
Reply
#5
(Mar-10-2019, 05:34 PM)Yoriz Wrote: Multiple expressions with "or" keyword

Thanks Yoriz. I'll stick to the methods advised in that link. So I will use:
print(var == "/" or var == "*")
I'm still really confused though about one thing which hopefully you can help explain... The "*" argument should make this statement True but it evaluates False:

var = "*"
var == ("/" or "*")
I double-checked the docs again and it does say it will evaluate the second argument if the first is false. So... what am I not understanding here??? Sad
Reply
#6
You are missing that the first argument is true.
Any string value other than "" is evaluated to True.
Reply
#7
(Mar-10-2019, 11:58 PM)Yoriz Wrote: You are missing that the first argument is true.
Any string value other than "" is evaluated to True.

Okay I get it now, thanks!

Clear example of what's going on for anyone else:

var = 10
var == True
Evaluates false, because 10 is not the same as True, and like the thread above noted, any non-empty string will be changed to True.
Reply
#8
(Mar-11-2019, 12:11 AM)speedskis777 Wrote: Evaluates false, because 10 is not the same as True
This is not a good example,as it's the bool() value of 10 that normally in almost all cases is used in conditions with if statements and loops.
>>> var = 10
>>> bool(var) 
True
>>> bool(var) == True
True

# So if test with "if" var is True
>>> if var:
...     print('This is True')
...     
This is True
Also in first code you use or without if statements which is not normal.
>>> "/" or "*"
'/'
>>> "Hello" or "*"
'Hello'
>>> "" or "*"
'*'

# Here get a True or False value because use "if"
>>> if "/" or "*":
...     print('This is True')
... else:    
...     print('This is False')
...     
This is True

# Both False then is False
>>> if 0 or "":
...     print('This is True')
... else:    
...     print('This is False')
...     
This is False
Quiz True or False in this list?
>>> lst = ['a', '', {}, (), 9, 0, [], None, ('hello'), {'a': 99}]
>>> [bool(i) for i in lst]
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Very Beginner question on simple variables Harvy 1 169 Apr-12-2024, 12:03 AM
Last Post: deanhystad
  Simple Question - ' defined as "a". ?' Ryan012 10 1,607 May-27-2023, 06:03 PM
Last Post: Ryan012
  syntax error question - string mgallotti 5 1,298 Feb-03-2023, 05:10 PM
Last Post: mgallotti
  Very simple question about filenames and backslashes! garynewport 4 1,927 Jan-17-2023, 05:02 AM
Last Post: deanhystad
  Python Tkinter Simple Multithreading Question AaronCatolico1 5 1,564 Dec-14-2022, 11:35 PM
Last Post: deanhystad
  A simple "If...Else" question from a beginner Serena2022 6 1,700 Jul-11-2022, 05:59 AM
Last Post: Serena2022
  Simple syntax to asynchronously get access to MODBUS register orion67 1 2,839 Jan-22-2022, 12:40 PM
Last Post: orion67
  Simple arithmetic question ebolisa 5 2,038 Dec-15-2021, 04:56 PM
Last Post: deanhystad
  Simple code question about lambda and tuples JasPyt 7 3,309 Oct-04-2021, 05:18 PM
Last Post: snippsat
Big Grin question about simple algorithm to my problem jamie_01 1 1,669 Oct-04-2021, 11:55 AM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020