Напишите программу, вычисляющую общую сумму, которую покупатель должен заплатить при покупке товаров. Список приведен с ценами

Напишите программу, вычисляющую общую сумму, которую покупатель должен заплатить при покупке товаров. Программа должна отобразить список из пяти (5) товаров с соответствующими ценами. Пользователь выбирает товары из списка и вводит номер приобретаемого товара (на основе списка) и количество каждого приобретаемого товара. Это действие будет повторяться до тех пор, пока пользователь не перестанет выбирать элементы. Программа отобразит общую сумму, которую должен оплатить клиент.

Это тип программы, которую мне нужно сделать, и ниже приведен код, который я сделал, но он останавливается, когда я выбираю второй элемент, я не знаю, почему он это делает.



Apple=40.00
Banana=30.00
Fish=100.00
Bread=45.00
Milk=20.00
price=0.00

print("Apple: Php 40.00")
print("Banana: Php 30.00")
print("Fish: Php 100.00")
print("Bread: Php 45.00")
print("Milk: Php 20.00")

while True:
    choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
    if choice == 'Apple':
        choice=input('Would you like to pick another order? y/n\n')
        if choice == 'y':
            choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
        else:
            for cost in price:
                sum += cost
                break
                print("Total cost: Php",sum)
                print(" ")
    elif choice == 'Banana':
        choice=input('Would you like to pick another order? y/n\n')
        if choice == 'y':
            choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
        else:
            for cost in price:
                sum += cost
                break
                print("Total cost: Php",sum)
                print(" ")
    elif choice == 'Fish':
        choice=input('Would you like to pick another order? y/n\n')
        if choice == 'y':
            choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
        else:
            for cost in price:
                sum += cost
                break
                print("Total cost: Php",sum)
                print(" ")
    elif choice == 'Bread':
        choice=input('Would you like to pick another order? y/n\n')
        if choice == 'y':
            choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
        else:
            for cost in price:
                sum += cost
                break
                print("Total cost: Php",sum)
                print(" ")
    elif choice == 'Milk':
        choice=input('Would you like to pick another order? y/n\n')
        if choice == 'y':
            choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
        else:
            for cost in price:
                sum += cost
                break
                print("Total cost: Php",sum)
                print(" ")
    else: 
        print("Error!")
    break

person zaza li    schedule 11.05.2021    source источник
comment
Добро пожаловать в СО. У вас есть break после части else:. Я полагаю, что он должен быть в состоянии else:, не так ли?   -  person ewong    schedule 11.05.2021


Ответы (1)


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

#create our dictionary, shopping items as keys and price of items as values
shoppingDict = {"Apple":40.00,"Banana":30.00,"Fish":100.00,"Bread":45.00,"Milk":20.00}
#iterate through the dictionaries items printing them out in a certain format
for k,v in shoppingDict.items():print(f'{k}: Php {v}')
while True:
    #prompt user to enter an item
    choice=input('\nChoose an item: Apple, Banana, Fish, Bread, Milk\n')
    #check if that item is found in the dictionary
    #if so add the key's value(price) to price
    try:price += shoppingDict.get(choice)
    #if the user does not enter a valid item, we will print error
    except KeyError:print('Error')
    #ask them if they want to play again
    if input('Would you like to go again? y/n') == 'n':
        print(f'Total Cost: {price}')
        break

Подробнее о словарях см. здесь.

person BuddyBob    schedule 11.05.2021
comment
Я собирался дать аналогичный ответ, и вы меня опередили. +1 Рассматривая исходный код постера, возможно, лучше уточнить, как этот код упрощается по сравнению с тем, как они пытаются его использовать. - person Superspork; 11.05.2021
comment
Обновлен мой код с дополнительной информацией о моей упрощенной версии @Superspork - person BuddyBob; 11.05.2021
comment
Подождите, я попробовал это @BuddyBob, но потом он говорит, что цена не определена. - person zaza li; 11.05.2021
comment
Все равно большое спасибо за ответ! Это было очень полезно! - person zaza li; 11.05.2021