Функция-валидатор True/False при наличии условий в Python

Напиши функцию-валидатор бронирования can_they_book, которая принимает количество взрослых adults_count и детей children_count и возвращает True, если выполняются все условия:

  1. номер вмещает не более 8 персон
  2. должен быть хотя бы один взрослый
  3. на одного взрослого может быть не больше двух детей

Считай непереданные аргументы равными 0.

9 автотестов проходит, а вот 3 не проходит:

  1. adult_count = 0, can_book = False
    TypeError: can_they_book() missing 1 required positional argument: 'children_count'

  2. adult_count = 2, can_book = True
    TypeError: can_they_book() missing 1 required positional argument: 'children_count'

  3. 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)
→ Ссылка
Автор решения: MarianD

Считай непереданные аргументы равными 0.

def can_they_book(adults_count=0, children_count=0)
  1. номер вмещает не более 8 персон

С этим бы хорошо исправились.

  1. должен быть хотя бы один взрослый

Опять все в порядке.

  1. на одного взрослого может быть не больше двух детей

Ваш код

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
→ Ссылка