When I print my list instead of using the names in the list the output shows the index numbers. Python 2D-Lists

When I print my list instead of using the names in the list the output shows the index numbers. Python 2D-Lists



Here is my code the lists are where Im having issues. Im new to python and I do not understand how 2D-lists work but I need to add then in to the program for a grade. Any help will be appreciated.


#Define Vars
import locale
locale.setlocale( locale.LC_ALL, '')

order_total = 0.0
price = 3.5
fmt_price = locale.currency(price, grouping=True)
qty = int(0)

#cookie list
cookie_list = list()
cookie_list = "Savannah Thin-Mints Tag-a-longs Peanut-Butter Sandwich".split()


order_list = list()


#cookie choices

def disp_items():
print("Please choose one of our flavours. Enter the item number to choose")
for c in range(len(cookie_list)):
print(". t".format(c+1, cookie_list[c]))

print()

#Menu Choices

def disp_menu():
choice_list = ["a", "d", "m", "q"]

while True:
print("nWhat would you like to do?")
print("a = add an item")
print("d = delete an item")
print("m = display the meal so far")
print("q = quit")
choice = input("nmake a selection: ")

if choice in choice_list:
return choice
else:
print("I dont't understand that entry. Please Try again.")

# Math Function**********************

def calc_tot(qty):
#this function is qty * price
return qty * 3.5





def disp_order():
print("nGirl Scout Cookie Order for", cust)
print()
print("ItmtNametQtytPrice")
print("---t----t----t----")
order_total_items = 0 #accumulator
order_price = 0

for c in range(len(order_list)):
detail_list = [" ", 0]


detail_list.append(order_list)

print(".ttt".format(c+1, order_list[c][0], order_list[c][1], price))
order_total_items += order_list[c][1]
order_price += price


print("nYour Order Contains items for total of n".format(order_total_items, order_price))
print("-" * 30)







#ADD Process

def add_process():
valid_data = False

while not valid_data:
disp_items()

try:
item = int(input("Enter item number: "))

if 1 <= item <= len(cookie_list):
valid_data = True
else:
print("nThat was not a vaild choice, please try again.")

except Exception as detail:
print("error: ", detail)


#Valid Qty
valid_data = False

while not valid_data:

try:

qty = int(input("Enter Quantity: "))

if 1 <= qty <= 10:
valid_data = True
else:
print("nThat was not a valid quantity, please try again.")

except Exception as detail:
print("Error; ", detail)
print("Please try again")



#Function call for multiplication
item_total = calc_tot(qty)
fmt_total = locale.currency(item_total, grouping=True)

#User Choice

print("nYou choose: boxes of for a total of ".format(qty,
cookie_list[item-1],
fmt_total))
print()


#verify inclusion of this item
valid_data = False

while not valid_data:
incl = input("Would you like to add this to your order? (y/n): ")
print()
if incl.lower() =="y":

#2-D List
inx = item - 1

detail_list = [inx, qty]
order_list.append(detail_list)

valid_data = True
print(" was added to your order".format(cookie_list[inx]))

elif incl.lower() == "n":
print(" was not added to your order".format(cookie_list[inx]))
valid_data = True

else:
print("That was not a vaild response, please try again")

#Delete function

def del_item():
if len(order_list) == 0:
print("n** You have no items in your order to delete **n")
else:
print("nDelete an Item")
disp_order()

valid_data = False
while not valid_data:
try:
choice = int(input("Please enter the item number you would like to delete: "))
if 1<= choice <= len(order_list):

choice = choice - 1

print("nItem . with boxes will be deleted".format(choice +1,
order_list[choice][0],
order_list[choice][1]))
del order_list[choice]
valid_data = True

except Exception as detail:
print("Error: ", detail)
print("Please try again")



#Main program
# Banner

print("Welcome to the Girl Scout Cookie")
print("Order Program")

cust = input("Please enter your name: ")

while True:
choice = disp_menu()
if choice == "a":
add_process()
elif choice == "d":
del_item()
elif choice == "q":
break

disp_order()




disp_order()
print("Thank you for your order")



Here's the output


Girl Scout Cookie Order for *****

Itm Name Qty Price
--- ---- ---- ----
1. **0** 1 3.5
2. **0** 1 3.5
3. **4** 5 3.5

Your Order Contains 7 items for total of 10.5



Under name there should be a name of a girl Scout Cookie and not the index number, how do i fix this?

Many Thanks.


name





Hi Bubbajones24, welcome to SO! As is, this code does not reproduce your problem. Try creating a "minimal reproducible example" of the problem (help center has lots of tips on these). A few specific things: 1) the indendation isn't valid python (small, but makes it un-runnable). 2) order_list is set to be an empty list, but then you access and print from it? 3) you immediately overwrite the cookie_list variable. 4) what is cust? what is price? Is there more code here? I think if you clean this up a little you'll get much better resposne!
– en_Knight
Aug 24 at 20:04





1 Answer
1



When you print the order in disp_order() you should print from cookie_list[c] in the second column. And print the whole item instead off just the first letter.


disp_order()


cookie_list[c]


print(".ttt".format(c+1, cookie_list[c], order_list[c][1], price))



The cookie names are not of equal length, so you'll have to adjust for that.






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

Edmonton

Crossroads (UK TV series)