Using inequality operators, I have to define a procedure weekend
which takes a string as its input and returns the boolean True
if it's 'Saturday' or 'Sunday' and False
otherwise.
Here is my code
def weekend(day):
if day != 'Saturday' or day != 'Sunday':
return False
else:
return True
This seemingly returns False
to every day, I don't know why, logically it would work... Can anyone please explain?
Fixed version:
if day != 'Saturday' and day != 'Sunday'
Better version:
return day in ['Saturday', 'Sunday']
Why or
doesn't work:
When you use or
, your condition would read something like "if today is not Saturday or today is not Sunday". Now replace "today" by "Saturday":
If Saturday is not Saturday or Saturday is not Sunday
The statement "Saturday is not Saturday" is obviously false and "Saturday is not Sunday" is obviously true, so the entire statement becomes "if false or true", which is always true.
Replace "today" by any other day and you will find that the sentence always evaluates to one of these sentences, which are always true:
if True or False # day = Sunday
if False or True # day = Saturday
if True or True # any other day