Member 13438998 Ответов: 1

Как мне избавиться от дополнительного значения, которое добавляется в другой список


Кажется, я не могу понять, почему в функции order_cost() есть дополнительные три, когда пользователь хочет, чтобы его заказ был доставкой. Когда я вызываю эту функцию, дополнительные три влияют на общую стоимость заказа и отображают ее как $23.00 вместо $20.00, что является правильной стоимостью для этого заказа. Может кто-нибудь помочь мне найти корень этой проблемы, пожалуйста, спасибо.
DELIVERY_CHARGE = ['Delivery', 3.00]
customer_order_list = [["Meat lovers", 8.50],["Hawaiian", 8.50]]

delivery = input("Would like your order to be a delivery?, Please enter yes or no ")

def order_cost():
  if delivery == "yes":
    customer_order_list.append(DELIVERY_CHARGE)
    customer_order_cost = [price[1] for price in customer_order_list]
    print(customer_order_cost)
    total_cost = sum(customer_order_cost)
  else:
    customer_order_cost = [price[1] for price in customer_order_list]
    print(customer_order_cost)
    total_cost = sum(customer_order_cost) 
  return total_cost

order_cost()


Что я уже пробовал:

Поскольку я не мог понять, что вызвало эту проблему, я просто решил вычесть 3 из общей стоимости заказа, если клиент хотел получить заказ на доставку, чтобы убедиться, что дополнительные три не влияют на фактическую истинную общую стоимость заказа и чтобы она была точной, в результате чего общая стоимость составит $20,00 вместо $23,00.
DELIVERY_CHARGE = ['Delivery', 3.00]
customer_order_list = [["Meat lovers", 8.50],["Hawaiian", 8.50]]

delivery = input("Would like your order to be a delivery?, Please enter yes or no ")

def order_cost():
  if delivery == "yes":
    customer_order_list.append(DELIVERY_CHARGE)
    customer_order_cost = [price[1] for price in customer_order_list]
    print(customer_order_cost)
    total_cost = sum(customer_order_cost) - 3
  else:
    customer_order_cost = [price[1] for price in customer_order_list]
    print(customer_order_cost)
    total_cost = sum(customer_order_cost) 
  return total_cost

order_cost()

1 Ответов

Рейтинг:
1

Richard MacCutchan

Это происходит из-за первых нескольких утверждений, которые находятся вне вашей функции. Каждый раз, когда вы запускаете эту функцию, она добавляет еще один элемент доставки в конец списка. Распечатайте список в своем коде, и вы увидите, как это происходит. Исправьте это, переместив эти операторы внутрь функции.

На самом деле вы могли бы сделать свою функцию намного проще, удалив дублированный код таким образом:

def order_cost():
  DELIVERY_CHARGE = ['Delivery', 3.00]
  customer_order_list = [["Meat lovers", 8.50],["Hawaiian", 8.50]]
 
  delivery = input("Would like your order to be a delivery?, Please enter yes or no ")
 
  if delivery == "yes":
    customer_order_list.append(DELIVERY_CHARGE)
  customer_order_cost = [price[1] for price in customer_order_list]
  print(customer_order_cost)
  total_cost = sum(customer_order_cost)
  return total_cost