简体   繁体   中英

invoice (receipt) program in python. How to prevent overwriting old values

I'm a new learner for python and I'm trying to make a program that prints in invoice of all the items + their price + their quantity. each item is in separate line.

I have got tot he point where I print each item in a line, but I keep overwriting the old values by the last value entered. how can I prevent this? this is the code:

    print("This program prints your invoices."
      "\nPlease enter the item identification, item cost and quantity sold when promted."
      "\nEnter 'done' when no more items"
      "\n=========================================")
saveqty= ()
savetprice=()
qtysum= 0 #quantity =qty for short
sumprice=0
list1 = []
totalprice=0
while True:
    itemid = input('Item identification: ')
    if itemid == "done":
        break


    if len(itemid)<3:
        print("item identification should be at least 3 characters long, try again")
        continue
    else:
        list11 = list[itemid]
        list1 +=[itemid]

    qtysold = input("Qty sold: ")
    try:
        qtysold =int(qtysold)
    except ValueError:
        print("must be an integer value, try again")
        continue
    qtysum+=qtysold


    try:
        itemprice = float(input("Item price: "))
        savetprice= (itemprice)
    except ValueError:
        print("item price must be numerical value, try again")
        continue

    totalprices= (qtysold*itemprice)
    totalprice+=totalprices



for elem in list1:
    print(qtysold,'x ',elem, '@ ', savetprice, 'SAR', '===', totalprices)

total = sumprice
itemtotal = qtysum
print("=========================================\nNo. of items purchased: ", itemtotal,"\nTotal price is: ", totalprice, "SAR")

Below is the code that fixes your problem

print("This program prints your invoices."
      "\nPlease enter the item identification, item cost and quantity sold when promted."
      "\nEnter 'done' when no more items"
      "\n=========================================")
saveqty = ()
savetprice = ()
qtysum = 0  # quantity =qty for short
sumprice = 0
list1 = []
totalprice = 0

while True:
    itemid = input('Item identification: ')
    if itemid == "done":
        break

    if len(itemid) < 3:
        print("item identification should be at least 3 characters long, try again")
        continue

    qtysold = input("Qty sold: ")
    try:
        qtysold = int(qtysold)
    except ValueError:
        print("must be an integer value, try again")
        continue
    qtysum += qtysold

    try:
        itemprice = float(input("Item price: "))
        savetprice = (itemprice)
    except ValueError:
        print("item price must be numerical value, try again")
        continue

    totalprices = (qtysold * itemprice)
    totalprice += totalprices

    list1.append((itemid, qtysold, savetprice, totalprices))

for elem, qtysold, savetprice, totalprices in list1:
    print(qtysold, 'x ', elem, '@ ', savetprice, 'SAR', '===', totalprices)

total = sumprice
itemtotal = qtysum

print("=========================================\nNo. of items purchased: ", itemtotal, "\nTotal price is: ", totalprice, "SAR")

Output:

This program prints your invoices.
Please enter the item identification, item cost and quantity sold when promted.
Enter 'done' when no more items
=========================================
Item identification: 123
Qty sold: 5
Item price: 20
Item identification: 456
Qty sold: 3
Item price: 30
Item identification: done
5 x  123 @  20.0 SAR === 100.0
3 x  456 @  30.0 SAR === 90.0
=========================================
No. of items purchased:  8 
Total price is:  190.0 SAR

Note: You need to save all the information (eg, itemid , qtysold ) in the while loop to list1 if you want to print them out later. Otherwise, qtysold and totalprices will always keep the last value when exiting the while loop. This explains the reason for the problem you are facing.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM