将一个列表中声明的价格分配给另一个列表中的项目,并计算总价

2024-05-29 06:29:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个一维列表。 一个是在我的菜单上储存比萨饼。 第二是为这个比萨饼储存价格。你知道吗

但我不知道,如何分配每个比萨饼的价格,而且,如果用户选择例如比萨饼“Margerita”,我的程序必须知道Margerita的成本例如15美元,在这个选择之后,程序可以打印支付比萨饼的总金额。请不要注意比萨店的饮料我只需要解决比萨的问题。你知道吗

pizzeria_menu = ['Margherita', 'Capricossa', 'Salami', 'Wiejska']
pizzeria_drinks = ['Pepsi', 'Mirinda', 'Sprite']
pizza_prices = [20, 15, 25, 30]

def clientOrders():

    pizzeria_orders = []

    clientPizzaChoice = input('\nJaka pizza dla Ciebie? ')

    clientDrinkChoice = input('Jakis napoj do tego? ')

    if clientPizzaChoice in pizzeria_menu and clientDrinkChoice in pizzeria_drinks:
        pizzeria_orders.append(clientPizzaChoice)
        pizzeria_orders.append(clientDrinkChoice)
        print('Zamawia pan pizze: ' + clientPizzaChoice + ' i napoj ' + clientDrinkChoice + '.')

    elif clientPizzaChoice in pizzeria_menu and clientDrinkChoice not in pizzeria_drinks:
        print('Zamowil pan tylko pizze: ' + clientPizzaChoice + '.')
        pizzeria_orders.append(clientPizzaChoice)

    elif clientPizzaChoice not in pizzeria_menu and clientDrinkChoice in pizzeria_drinks:
        print('Zamowil pan tylko napoj: ' + clientDrinkChoice + '.')
        pizzeria_orders.append(clientDrinkChoice)

    else:
        print('Bardzo nam przykro, ze nic Pan nie zamowil. :(')  
clientOrders()```

Tags: andin价格panmenuprint储存orders
2条回答

如果确实需要使用列表,可以使用list的index()方法:参见data structure doc。你知道吗

pizzeria_menu = ['Margherita', 'Capricossa', 'Salami', 'Wiejska']
pizza_prices = [20, 15, 25, 30]

clientpizza = input("Order you pizza, please: ")

try:
    idx = pizzeria_menu.index(clientpizza)
    price = pizza_prices[idx]
    print("Your pizza {} costs {:d}".format(clientpizza, price)) 
except ValueError:
    print("Pizza not in the menu")

或者如果您更喜欢if语句而不是tryexcept块:

if clientpizza in pizzeria_menu:
    idx = pizzeria_menu.index(clientpizza)
    price = pizza_prices[idx]
    print("Your pizza {} costs {:d}".format(clientpizza, price)) 
else:
    print("Pizza not in the menu")

列表索引方法:

Return zero-based index in the list of the first item whose value is x. Raises a ValueError if there is no such item.

因此,在假设列表中没有重复值的情况下,这种方法可以很好地工作。
例如,pizzeria_menu.index('Salami')返回2,因为'Salami'是位置2处的元素(索引从0开始)。你知道吗

price = pizza_prices[idx]这是基本索引,它返回位于idx位置的列表元素。
例如,pizza_prices[2]就是25。你知道吗

您应该能够使其适应您的代码。你知道吗

如果必须使用列表,我可以看到两种方法:

  1. 使用元组列表
pizzeria_menu = [('Margherita', 20), ('Capricossa', 15), ...]

您可以使用for循环来填充这个元组列表,并使用for循环来检索项目的价格,这也可以使用列表列表来实现。你知道吗

  1. 使用索引

通过使用枚举功能,您可以在比萨饼菜单中找到存储比萨饼的索引,并使用索引值检索其价格。你知道吗

pizzeria_menu = ['Margherita', 'Capricossa', 'Salami', 'Wiejska']
pizza_prices = [20, 15, 25, 30]

pizza_to_find = "Margherita"
pizza_ix = -1

for ix, pizza_name in enumerate(pizzeria_menu):
  if pizza_name == pizza_to_find:
    pizza_ix = ix

price_to_find = pizza_prices[pizza_ix]


相关问题 更多 >

    热门问题