Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2024, 18:27   #1
Nicodim
Пользователь
 
Регистрация: 31.05.2023
Сообщений: 23
По умолчанию Программирование на Python

Здравствуйте, помогите пожалуйста найти ошибки в коде не проходит тесты. Заранее благодарен.

Удаляем заказ

От менеджеров поступило требование написать функционал, который позволяет очищать заказ. Для этого нужно разработать функцию 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} изменен."
Nicodim вне форума Ответить с цитированием
Старый 01.11.2024, 00:56   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,376
По умолчанию

Код стоит обрамлять тегами [CODE] (с помощью соответствующей кнопки), т.к. в питоне отступы влияют на интерпретацию кода. Я бы сначала проверял delete_flag, а потом уже нахождение в menu и в order. Вижу только одну ошибку - неверное значение по умолчанию для delete_all параметра.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 01.11.2024, 18:32   #3
Nicodim
Пользователь
 
Регистрация: 31.05.2023
Сообщений: 23
По умолчанию

Благодарю за подсказку.
Nicodim вне форума Ответить с цитированием
Старый 04.11.2024, 14:18   #4
Nicodim
Пользователь
 
Регистрация: 31.05.2023
Сообщений: 23
По умолчанию

Здравствуйте, помогите пожалуйста найти ошибки в коде не проходит тесты. Заранее благодарен.

Удаляем заказ

От менеджеров поступило требование написать функционал, который позволяет очищать заказ. Для этого нужно разработать функцию 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} изменен."

Последний раз редактировалось Nicodim; 04.11.2024 в 14:25.
Nicodim вне форума Ответить с цитированием
Старый 05.11.2024, 03:32   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,376
По умолчанию

С отступами получше, но они не все верно стоят, поправил, чтобы питон не жаловался:
Код:
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} изменен."
Вы не поправили значение по умолчанию для параметра delete_all. Но эта ошибка не влияет на результат приведенного теста. Остальные ошибки связаны с реализацией make_order. Когда заказан, например, один суп, то название супа хранится не в списке (см. 2 столик). Или вот 1 столик заказал два разных супа, ваш код сохраняет оба супа в список, а в примере корректного вывода только последний суп указан.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.11.2024, 13:18   #6
Nicodim
Пользователь
 
Регистрация: 31.05.2023
Сообщений: 23
По умолчанию

Благодарю вас, что подсказали где икать.
Nicodim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование на Python Задача на программирование покрытие отрезками Nicodim Помощь студентам 2 29.12.2023 21:19
Программирование в Python fyz abkbvjyjdf Помощь студентам 1 17.12.2022 11:34
Программирование на Python fyz abkbvjyjdf Помощь студентам 11 14.12.2022 19:42
Программирование на python Семен_13 Python 7 17.10.2022 17:59
Программирование Python Белка и Стрелка Помощь студентам 1 29.05.2017 23:53