Я выполнял некоторые упражнения CodingBat с использованием Python, пока не наткнулся на проблему с моим предлагаемым решением.Если заявления Заказа
Ссылка для упражнения here
Я пытался решить ее, используя этот код:
def alarm_clock(day, vacation):
if vacation and day == 0 or day == 6:
return "off"
elif vacation and day != 0 and day != 6:
return "10:00"
if vacation == False and day == 0 or day == 6:
return "10:00"
elif vacation == False and day != 0 or day != 6:
return "7:00"
Что происходит, что когда день 6 и отдых в False, то он возвращает «выключено» вместо "10:00". Можете ли вы поделиться светом здесь? Является ли одно из первых утверждений If оценочным значением «10:00»?
В качестве побочного примечания вы не должны использовать 'vacation == False'; просто используйте 'not vacation'. (Есть некоторые люди, которые утверждают, что '== False' хороши, но (а) они ошибаются, (б) они хотели бы, чтобы вы использовали« отпуск == Истинный », а не просто« отпуск »в двух других и (c) они ошибаются. :)) – abarnert
Кроме того, об этом может быть проще подумать с вложенными утверждениями. Во-первых, 'if vacation:' ... 'else:'. Затем внутри каждого из них 'if day == 0 or day == 6:' ... 'else:'. Это означает 10 строк кода вместо 8, но они более короткие строки, более очевидные и сложнее ошибиться (в частности, ваша ошибка никогда не может возникнуть именно так). – abarnert
Или, иначе, делать 'weekday = day == 0 или day == 6', тогда вы можете писать« отпуск и будний день »,« отпуск, а не будний день »,« не отпуск и будний день »,« не отпуск, а не будний день » ', что, вероятно, даже более читаемо. – abarnert