Вы пытаетесь использовать метод list.append()
unbound .list
- это встроенный тип, а .append()
- метод, который при использовании в экземплярах списка позволяет добавлять значения в этот список.Но вы не сказали list.append()
к какому экземпляру списка добавляться.
Обычно вы вызываете методы в конкретном экземпляре списка :
food.append("coffee")
Этовсе тот же метод list.append()
, но теперь он привязан к экземпляру списка food
, и Python затем проверяет, вызван ли list.append(food, "coffee")
.Обычно вы не используете list.append()
напрямую (например, это помешает подклассам переопределить метод append()
), оставьте его Python, чтобы выяснить правильную привязку здесь.
Делайте это везде, где вы используетеlist.append("...")
сейчас.
Вы также печатаете неверную переменную в цикле «вот что вы заказали»:
for item in food:
print(order)
, и вы никогда не давали tot
начальное значение;у вас есть order=0
, но вы также используете order
для хранения ввода клиента!Вы, вероятно, перепутали order
и tot
.
Для каждого элемента в списке food
вы хотите напечатать item
, а не последнее, что заказал клиент:
for item in food:
print(item)
или, если вы хотите быть по-настоящему изящным и впечатляющим, используйте какой-то продвинутый синтаксис Python и распечатайте весь список с символами новой строки между ними за один шаг:
print(*food, sep="\n")
Возможно, вы захотите определитьсопоставление продуктов питания с ценами с использованием словаря:
prices = {
"coffee": 2.50,
"hot cocoa": 2.30,
"tea": 1.50,
"bagel": 1.50,
"donut": 1.00,
"muffin": 1.50,
}
Это значительно упрощает проверку правильности заказов и позволяет добавлять больше элементов в меню в будущем!Теперь вы можете просто использовать:
tot = 0
food = []
while True:
order = input("What's your order? ")
if order == 'done':
break
if order not in prices:
print("Sorry, we don't have any", order)
else:
food.append(order)
tot = tot + prices[order]
print("Here is your order:", *food, sep="\n")
print("That'll be", tot)
Обратите внимание, как я прокрался в дополнительное сообщение для заказов, для которых у вас нет цен.Кроме того, приведенное выше добавляет "hot cocoa"
, а не "hotcocoa"
в список food
, примите это во внимание, если это может быть проблемой для вас.