Как структурировать и распечатать меню в ресторанном стиле с разбивкой по категориям и согласованными ценами на Python? Python

Программы на Python
Ответить
Anonymous
 Как структурировать и распечатать меню в ресторанном стиле с разбивкой по категориям и согласованными ценами на Python?

Сообщение Anonymous »

Я работаю над консольной программой на Python, которая отображает ресторанное меню с категориями и ценами и позволяет пользователям выбирать позиции по номерам. Я хочу, чтобы меню было легко сканировать, подобно тому, как группируются и форматируются настоящие меню кафе.
Вот упрощенная, но более длинная версия моего текущего кода:

Код: Выделить всё

menu = {
"Drinks": [
{"name": "Cold Brew Coffee", "price": 4.50},
{"name": "Vanilla Latte", "price": 5.00},
{"name": "Caramel Mocha", "price": 5.25}
],
"Seasonal": [
{"name": "Peppermint Mocha", "price": 5.75},
{"name": "Sugar Cookie Latte", "price": 5.75}
]
}

item_number = 1
item_map = {}

for category, items in menu.items():
print(category)
print("-" * len(category))
for item in items:
print(f"{item_number}. {item['name']} ${item['price']}")
item_map[item_number] = item
item_number += 1
print()
Это работает, но я столкнулся с несколькими проблемами:
  • Цены не совпадают, когда имена товаров имеют разную длину
  • Логика форматирования смешивается со структурой данных
  • Я не уверен, что использование таких словарей является самым чистым подходом в долгосрочной перспективе
Мне бы хотелось, чтобы результат больше походил на настоящее меню, в котором цены выстраиваются вертикально, а категории четко разделены, без ручного подсчета пробелов.
Концептуально я пытаюсь смоделировать меню, похожие на настоящие меню напитков в кафе, которые четко разделяют обычные и сезонные блюда, как в этом примере: https://dbrosmenu.com/
Что будет лучший способ:
  • Структурировать данные меню
  • Четко отформатировать выровненный вывод (без жестко запрограммированных пробелов)
  • Сохранять простой для пользователей числовой выбор
Четкое объяснение с примером кода будет очень полезно.

Подробнее здесь: https://stackoverflow.com/questions/798 ... igned-pric
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»