Форум сайта python.su
Добрый день.
Все было хорошо, но встал с одной задачей.
Тема: Логический тип данных и логические связки
Задача: Вася не смог попасть в магазин в Италии. Несмотря на удачно подобранное время посещения магазина в этот день в городе праздновался день броколетти (цветной капусты) и магазин был закрыт по случаю праздника. Зато Вася смог купить билет до Испании за сущие копейки. В Испании есть магазин, который открыт с A до B часов включительно. Испания - жаркая страна, поэтому с C до D часов включительно наступает сиеста, когда все заведения, включая магазин, закрыты. При этом A < B, C < D. Обратите внимание, что время сиесты не обязательно полностью содержится в интервале работы магазина. Вася может прийти в испанский магазин в X часов. Выведите True если магазин открыт в это время и False, если он закрыт.
Числа A, B, C, D, X вводятся по одному в строке и находятся в пределах от 0 до 23.
Как я вижу решение:
A = int(input())
B = int(input())
C = int(input())
D = int(input())
X = int(input())
q1 = A <= X < C and X < C or X > D and X < B
print(q1)
При загрузке в тестировщик пишет, что “код” скрытые тесты не прошел.
Подскажите, пожалуйста, что мне нужно изучить что бы понимать как решаются подобные задачи? Учебник по логике, алгебра логики, таблицы истинности? Что нужно освоить?
Офлайн
Сначала нужно проверить, может ли он прийти в магазин вообще.
Если он не может прийти в магазин, то ответ уже известен и дальше проверять ничего не надо.
Если он может прийти в магазин, то нужно проверить, не находится ли он в паузе в этой.
Если он находится в паузе, то ответ известен.
Если он находится вне паузы, то ответ известен.
Сам сделаешь? Или тебе ещё подсказывать надо?
Vladimir_GaletaТебе надо освоить принцип “разделяй и властвуй”, который в программировании используется постоянно. В твоём решении видно, что ты всё смешал и делаешь всё сразу. А я предложил сначала проверить это, а потом проверить вот это, только если первая проверка оказалась недостаточной. Я разделил решение на отдельные этапы.
Подскажите, пожалуйста, что мне нужно изучить что бы понимать как решаются подобные задачи? Учебник по логике, алгебра логики, таблицы истинности? Что нужно освоить?
Отредактировано py.user.next (Июль 31, 2021 04:56:39)
Офлайн
Большое спасибо за совет. Склоняю голову)
Если я правильно понял, то нужно не все в одну строчку писать, а делить по этапам или действиям. При этом, после каждого действия необходимо проверять. Я правильно понял?
А как выражается, может ли он вообще придти в магазин?
Офлайн
Vladimir_GaletaЕсли в эти часы магазин открыт, то может придти в него. Если магазин закрыт, то не может
может ли он вообще придти в магазин?
Офлайн
Vladimir_GaletaНе, оно пишется в одну строчку, но думается оно в виде вот этих отдельных этапов. Это замаскированная задача на два отрезка в одномерном пространстве.
Если я правильно понял, то нужно не все в одну строчку писать, а делить по этапам или действиям.
>>> a, b, c, d, x = 1, 5, 3, 6, 4 >>> a <= x <= b and not c <= x <= d False >>>
Отредактировано py.user.next (Авг. 1, 2021 02:59:02)
Офлайн
Большое спасибо за помощь. Получилось решить задачу. Много времени убил. Но благодаря вам решил. Еще раз спасибо
Офлайн