Функция-валидатор True/False при наличии условий в Python
Напиши функцию-валидатор бронирования can_they_book, которая принимает количество взрослых adults_count и детей children_count и возвращает True, если выполняются все условия:
- номер вмещает не более 8 персон
- должен быть хотя бы один взрослый
- на одного взрослого может быть не больше двух детей
Считай непереданные аргументы равными 0.
9 автотестов проходит, а вот 3 не проходит:
adult_count = 0, can_book = False
TypeError: can_they_book() missing 1 required positional argument: 'children_count'adult_count = 2, can_book = True
TypeError: can_they_book() missing 1 required positional argument: 'children_count'adult_count = 9, can_book = False
TypeError: can_they_book() missing 1 required positional argument: 'children_count'
def can_they_book(adults_count: int, children_count: int) -> bool:
if adults_count == 1 and children_count > 2:
return False
if adults_count + children_count >= 9:
return False
if adults_count == 0:
return False
if adults_count + children_count <= 8:
return True
Ответы (2 шт):
Нужно установить значения по умолчанию
def can_they_book(adults_count = 0, children_count = 0)
Считай непереданные аргументы равными 0.
def can_they_book(adults_count=0, children_count=0)
- номер вмещает не более 8 персон
С этим бы хорошо исправились.
- должен быть хотя бы один взрослый
Опять все в порядке.
- на одного взрослого может быть не больше двух детей
Ваш код
if adults_count == 1 and children_count > 2:
return False
нужно исправить:
if adults_count < 2 * children_count:
return False
Теперь, когда все 3 проверки были успешными, не надо еще один раз проверять количество персон - значит, вместо вашего
if adults_count + children_count <= 8:
return True
достаточно
return True