Ваш первый if
оператор проверяет if day in range(1, 6)
.Если day
равно 1
, это всегда будет правдой.Поскольку первое условие соответствует, ни одно из условий elif
даже не выполняется.(Кроме того, поскольку вы return
немедленно, после этой точки другой код в функции также не выполняется.)
Возможно, вы захотите переставить операторы if
, чтобы сначала проверить специальные случаи, итогда общие случаи.Кроме того, можно предварительно вычислить логическое значение weekend
и / или weekday
, а затем явно выразить все условия:
def alarm_clock(day, vacation):
weekday = 1 <= day <= 5
weekend = not weekday
if weekend and vacation:
return "off"
if weekend and not vacation:
return "10:00"
if weekday and vacation:
return "10:00"
if weekday and not vacation:
return "7:00"
Или даже, используя троичное выражение:
def alarm_clock(day, vacation):
weekday = 1 <= day <= 5
if vacation:
return "10:00" if weekday else "off"
return "7:00" if weekday else "10:00"