Здравствуйте, помогите пожалуйста найти ошибки в коде не проходит тесты. Заранее благодарен.
OC Windows 11
Python 3.12
Удаляем заказ
От менеджеров поступило требование написать функционал, который позволяет очищать заказ. Для этого нужно разработать функцию delete_order, которая имеет следующие параметры
обязательный ключевой параметр number_table - номер стола, где будем очищать заказ
необязательный ключевой параметр delete_all со значением по умолчанию False. Если передать в него True, должна очищаться полностью информация о заказе для указанного столика. При значении False удаление в заказе будет точечным по категориям
произвольное количество ключевых параметров с булевым значением вида
drink=True, desert=True, call=True, шаурма=True
Среди этих значений вам нужно удалять из заказа только те, имена которых находятся в списке категорий и переданное значение равно True
Для успешного решения задания вам необходимо определить новую функцию delete_order и продублировать ранее созданные reserve_table и make_order со всеми их зависимостями.
Не забывайте про кнопку «Запустить код» для проверки работоспособности программы перед отправкой.
Sample Input 1:
tables = {
1: {'name': 'Andrey', 'is_vip': True, 'order': {}},
2: None,
3: None,
4: None,
5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}},
}
make_order(1, soup='Borsh')
make_order(1, soup='Лапша', bring='Салфетку', meal='Манка')
reserve_table(2, 'Vlad')
make_order(2, soup='Чечевичный', salad='Цезарь', breakfast='Яичница')
make_order(2, drink='Raf', main_dish='Утка по-пекински')
make_order(2, desert='Трюфель', call='такси')
print(tables)
delete_order(number_table=2, delete_all=True)
print(tables)
Sample Output 1:
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {'soup': 'Чечевичный', 'salad': 'Цезарь', 'drink': 'Raf', 'main_dish': 'Утка по-пекински', 'desert': 'Трюфель'}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
Failed test #1 of 4. Wrong answer
This is a sample test from the problem statement!
Test input:
tables = {
1: {'name': 'Andrey', 'is_vip': True, 'order': {}},
2: None,
3: None,
4: None,
5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}},
}
make_order(1, soup='Borsh')
make_order(1, soup='Лапша', bring='Салфетку', meal='Манка')
reserve_table(2, 'Vlad')
make_order(2, soup='Чечевичный', salad='Цезарь', breakfast='Яичница')
make_order(2, drink='Raf', main_dish='Утка по-пекински')
make_order(2, desert='Трюфель', call='такси')
print(tables)
delete_order(number_table=2, delete_all=True)
print(tables)
Correct output:
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {'soup': 'Чечевичный', 'salad': 'Цезарь', 'drink': 'Raf', 'main_dish': 'Утка по-пекински', 'desert': 'Трюфель'}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
Your code output:
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': ['Borsh', 'Лапша']}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {'soup': ['Чечевичный'], 'salad': ['Цезарь'], 'drink': ['Raf'], 'main_dish': ['Утка по-пекински'], 'desert': ['Трюфель']}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': ['Borsh', 'Лапша']}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
def reserve_table(table_number, name, is_vip=False):
"""Резервирует столик и добавляет ключ 'order'."""
global tables
if table_number not in tables:
return "Столик с таким номером не существует."
if tables[table_number] is not None:
return "Столик занят."
tables[table_number] = {"name": name, "is_vip": is_vip, "order": {}}
return f"Столик {table_number} забронирован для {name}."
menu = {"salad", "soup", "main_dish", "drink", "desert"}
def make_order(n, **kwargs):
"""Добавляет заказ к столику, обрабатывая несколько блюд
в одной категории и добавляя их в список.
"""
global tables
if n not in tables:
return "Столик с таким номером не существует."
if tables[n] is None:
return "Столик не забронирован."
order = tables[n]['order']
for category, items in kwargs.items():
if category in menu:
if category not in order:
order[category] = []
# Разделяем блюда по запятой, если они есть
dishes = [dish.strip() for dish in items.split(',')]
order[category].extend(dishes)
def delete_order(number_table, delete_all=True, **kwargs):
"""Удаляет заказ из столика."""
global tables
if number_table not in tables:
return "Столик с таким номером не существует."
if tables[number_table] is None:
return "Столик не забронирован."
if delete_all:
tables[number_table]['order'] = {}
return f"Заказ для столика {number_table} полностью очищен."
order = tables[number_table]['order']
for category, delete_flag in kwargs.items():
if category in menu and delete_flag and category in order:
del order[category]
return f"Заказ для столика {number_table} изменен."
OC Windows 11
Python 3.12
Удаляем заказ
От менеджеров поступило требование написать функционал, который позволяет очищать заказ. Для этого нужно разработать функцию delete_order, которая имеет следующие параметры
обязательный ключевой параметр number_table - номер стола, где будем очищать заказ
необязательный ключевой параметр delete_all со значением по умолчанию False. Если передать в него True, должна очищаться полностью информация о заказе для указанного столика. При значении False удаление в заказе будет точечным по категориям
произвольное количество ключевых параметров с булевым значением вида
drink=True, desert=True, call=True, шаурма=True
Среди этих значений вам нужно удалять из заказа только те, имена которых находятся в списке категорий и переданное значение равно True
Для успешного решения задания вам необходимо определить новую функцию delete_order и продублировать ранее созданные reserve_table и make_order со всеми их зависимостями.
Не забывайте про кнопку «Запустить код» для проверки работоспособности программы перед отправкой.
Sample Input 1:
tables = {
1: {'name': 'Andrey', 'is_vip': True, 'order': {}},
2: None,
3: None,
4: None,
5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}},
}
make_order(1, soup='Borsh')
make_order(1, soup='Лапша', bring='Салфетку', meal='Манка')
reserve_table(2, 'Vlad')
make_order(2, soup='Чечевичный', salad='Цезарь', breakfast='Яичница')
make_order(2, drink='Raf', main_dish='Утка по-пекински')
make_order(2, desert='Трюфель', call='такси')
print(tables)
delete_order(number_table=2, delete_all=True)
print(tables)
Sample Output 1:
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {'soup': 'Чечевичный', 'salad': 'Цезарь', 'drink': 'Raf', 'main_dish': 'Утка по-пекински', 'desert': 'Трюфель'}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
Failed test #1 of 4. Wrong answer
This is a sample test from the problem statement!
Test input:
tables = {
1: {'name': 'Andrey', 'is_vip': True, 'order': {}},
2: None,
3: None,
4: None,
5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}},
}
make_order(1, soup='Borsh')
make_order(1, soup='Лапша', bring='Салфетку', meal='Манка')
reserve_table(2, 'Vlad')
make_order(2, soup='Чечевичный', salad='Цезарь', breakfast='Яичница')
make_order(2, drink='Raf', main_dish='Утка по-пекински')
make_order(2, desert='Трюфель', call='такси')
print(tables)
delete_order(number_table=2, delete_all=True)
print(tables)
Correct output:
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {'soup': 'Чечевичный', 'salad': 'Цезарь', 'drink': 'Raf', 'main_dish': 'Утка по-пекински', 'desert': 'Трюфель'}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': 'Лапша'}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
Your code output:
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': ['Borsh', 'Лапша']}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {'soup': ['Чечевичный'], 'salad': ['Цезарь'], 'drink': ['Raf'], 'main_dish': ['Утка по-пекински'], 'desert': ['Трюфель']}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
{1: {'name': 'Andrey', 'is_vip': True, 'order': {'soup': ['Borsh', 'Лапша']}}, 2: {'name': 'Vlad', 'is_vip': False, 'order': {}}, 3: None, 4: None, 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}}}
def reserve_table(table_number, name, is_vip=False):
"""Резервирует столик и добавляет ключ 'order'."""
global tables
if table_number not in tables:
return "Столик с таким номером не существует."
if tables[table_number] is not None:
return "Столик занят."
tables[table_number] = {"name": name, "is_vip": is_vip, "order": {}}
return f"Столик {table_number} забронирован для {name}."
menu = {"salad", "soup", "main_dish", "drink", "desert"}
def make_order(n, **kwargs):
"""Добавляет заказ к столику, обрабатывая несколько блюд
в одной категории и добавляя их в список.
"""
global tables
if n not in tables:
return "Столик с таким номером не существует."
if tables[n] is None:
return "Столик не забронирован."
order = tables[n]['order']
for category, items in kwargs.items():
if category in menu:
if category not in order:
order[category] = []
# Разделяем блюда по запятой, если они есть
dishes = [dish.strip() for dish in items.split(',')]
order[category].extend(dishes)
def delete_order(number_table, delete_all=True, **kwargs):
"""Удаляет заказ из столика."""
global tables
if number_table not in tables:
return "Столик с таким номером не существует."
if tables[number_table] is None:
return "Столик не забронирован."
if delete_all:
tables[number_table]['order'] = {}
return f"Заказ для столика {number_table} полностью очищен."
order = tables[number_table]['order']
for category, delete_flag in kwargs.items():
if category in menu and delete_flag and category in order:
del order[category]
return f"Заказ для столика {number_table} изменен."