Reputation: 25
Given a day of the week encoded as 0=Sun, 1=Mon, 2=Tue, ...6=Sat, and a boolean indicating if we are on vacation, return a string of the form "7:00" indicating when the alarm clock should ring. Weekdays, the alarm should be "7:00" and on the weekend it should be "10:00". Unless we are on vacation -- then on weekdays it should be "10:00" and weekends it should be "off".
My code:
def alarm_clock(day,vacation):
if(vacation):
if(day == 0 | day == 6):
return "off"
return "10:00"
else:
if(day == 0 | day == 6):
return "10:00"
return "7:00"
With input:
print(alarm_clock(0,True))
My code returns '10:00' when it should be 'off'
With input:
print(alarm_clock(0,False))
My code returns '7:00', it should be '10:00'
Where is the bug in my code?
Upvotes: 0
Views: 2451
Reputation: 85
You are using a bitwise or "|". You need to use a logical or "or"
def alarm_clock(day,vacation):
if(vacation):
if(day == 0 or day == 6):
return "off"
return "10:00"
else:
if(day == 0 or day == 6):
return "10:00"
return "7:00"
Upvotes: 0
Reputation: 2729
As you can see in the official documentation, the logical "or" operator
in Python is or
, not |
which is a bitwise operator
Upvotes: 0
Reputation: 5274
Change it like this:
def alarm_clock(day,vacation):
if(vacation):
if(day == 0 or day == 6):
return "off"
return "10:00"
else:
if(day == 0 or day == 6):
return "10:00"
return "7:00"
print(alarm_clock(0,True))
results:
off
The pipe isn't doing what you'd expect: Pipe character in Python it is in fact a bitwise operator. :)
Upvotes: 1