[英](IndexError: list index out of range)
在制作這個簡單的程序時,我遇到了這個似乎與列表有關的錯誤。 但是,我真的不知道如何正確修復它。
PS:如果你能給我一些建議或者我可以讓我的程序變得更好的方法,那就太酷了。
def getOrder():
mainDish = ["Burger", "Pizza", "Taco", "Italian Sandwich"]
mainDish_Price = [3.55, 7.99, 12.99, 5.99]
drink = ["Cola", "Pepsi", "Sprite", "Water"]
drink_Price = [0.80, 0.60, 0.30, 0.20]
sideDish = ["French Fries", "Onion Rings", "Salad", "Chips"]
sideDish_Price = [1.25, 2.99, 1.75, 2.25]
myOrder_Count = []
myOrder_Cost = []
qty_Count = []
fullPrice = 0
total_Drink_Order = 0
total_MainDish_Order = 0
total_SideDish_Order = 0
count = 0
i = 0
while(True):
print("AI : Resturant Bot Options.")
print("AI : Choose [1] For Main Dish.")
print("AI : Choose [2] For Sides.")
print("AI : Choose [3] For Drinks.")
print("AI : Choose [4] For Getting Reciept.")
print("AI : Choose [5] For Exit.")
choice = int(input("Select Your Choice : "))
if(choice == 1):
print("\n" + "AI:"
"\n\n1 : Burger $3.55"
"\n\n2 : Pizza $7.99"
"\n\n3 : Taco $12.99"
"\n\n4 : Italian Sandwich $5.99")
mainDish_Order = int(input("\n\nAI: Select Your Choice. "))
qty = int(input("AI: Please Enter The Quantity. "))
if(mainDish_Order == 1):
myOrder_Count.append(mainDish[0])
myOrder_Cost.append(mainDish_Price[0])
count += 1
total_MainDish_Order += mainDish_Price[0] * qty
elif(mainDish_Order == 2):
myOrder_Count.append(mainDish[1])
myOrder_Cost.append(mainDish_Price[1])
count += 1
total_MainDish_Order += mainDish_Price[1] * qty
elif(mainDish_Order == 3):
myOrder_Count.append(mainDish[2])
myOrder_Cost.append(mainDish_Price[2])
count += 1
total_MainDish_Order += mainDish_Price[2] * qty
elif(mainDish_Order == 4):
myOrder_Count.append(mainDish[3])
myOrder_Cost.append(mainDish_Price[3])
count += 1
total_MainDish_Order += mainDish_Price[3] * qty
if(choice == 2):
print("\n" + "AI: " +
"\n\n1 : French Fries $1.25"
"\n\n2 : Onion Rings $2.99"
"\n\n3 : Salad $1.75"
"\n\n4 : Chips $2.25")
sideDish_Order = int(input("AI : Please Select Your Choice."))
qty = int(input("AI: Please Enter The Quantity : "))
if(sideDish_Order == 1):
myOrder_Count.append(sideDish[0])
myOrder_Cost.append(sideDish_Price[0])
count += 1
total_SideDish_Order += sideDish_Price[0] * qty
elif(sideDish_Order == 2):
myOrder_Count.append(sideDish[1])
myOrder_Cost.append(sideDish_Price[1])
count += 1
total_SideDish_Order += sideDish_Price[1] * qty
elif(sideDish_Order == 3):
myOrder_Count.append(sideDish[2])
myOrder_Cost.append(sideDish_Price[2])
count += 1
total_SideDish_Order += sideDish_Price[2] * qty
elif(sideDish_Order == 4):
myOrder_Count.append(sideDish[3])
myOrder_Cost.append(sideDish_Price[3])
count += 1
total_SideDish_Order += sideDish_Price[3] * qty
if(choice == 3):
print("\n" + "AI :"
"\n\n1 : Cola $0.80"
"\n\n2 : Pepsi $0.60"
"\n\n3 : Sprite $0.40"
"\n\n4 : Water $0.20")
drink_Order = int(input("AI : Select Your Choice : "))
qty = int(input("AI: Please Enter The Quantity : "))
if(drink_Order == 1):
myOrder_Count.append(drink[0])
myOrder_Cost.append(drink_Price[0])
count += 1
total_Drink_Order += drink_Price[0] * qty
elif(drink_Order == 2):
myOrder_Count.append(drink[1])
myOrder_Cost.append(drink_Price[1])
count += 1
total_Drink_Order += drink_Price[1] * qty
elif(drink_Order == 3):
myOrder_Count.append(drink[2])
myOrder_Cost.append(drink_Price[2])
count += 1
total_Drink_Order += drink_Price[2] * qty
elif(drink_Order == 4):
myOrder_Count.append(drink[3])
myOrder_Cost.append(drink_Price[3])
count += 1
total_Drink_Order += drink_Price[3] * qty
fullPrice = total_MainDish_Order + total_SideDish_Order + total_Drink_Order
if(choice == 4):
print("..")
time.sleep(2)
print("...")
time.sleep(3)
print("....")
time.sleep(3)
print("AI: Here's Your Reciept")
print(" ")
print("**************")
while(i < count):
print(f"Items : {myOrder_Count[i]}")
print(f"Cost : ${myOrder_Cost[i]}")
print(f"qty : {qty_Count[i]} \n")
i += 1
print("**************")
print(f"AI: The Final Cost Is ${fullPrice}")
exit()
if(choice == 5):
print("AI: System Shutdown.")
exit()
getOrder()
您的代碼中的問題是列表qty_Count
始終為空,因此當代碼嘗試在列表為空時運行print(f"qty: {qty_Count[i]} \n")
行時,它找不到索引所以程序崩潰了。
我找不到您在該列表中存儲任何數據的位置,因此要么找到解決該問題的方法 - 通過將數據插入列表 - 要么從打印中刪除該部分。
編輯:此代碼可以正常工作。
import time
def getOrder():
mainDish = ["Burger", "Pizza", "Taco", "Italian Sandwich"]
mainDish_Price = [3.55, 7.99, 12.99, 5.99]
drink = ["Cola", "Pepsi", "Sprite", "Water"]
drink_Price = [0.80, 0.60, 0.30, 0.20]
sideDish = ["French Fries", "Onion Rings", "Salad", "Chips"]
sideDish_Price = [1.25, 2.99, 1.75, 2.25]
myOrder_Count = []
myOrder_Cost = []
qty_Count = []
fullPrice = 0
total_Drink_Order = 0
total_MainDish_Order = 0
total_SideDish_Order = 0
count = 0
i = 0
while(True):
print("AI : Resturant Bot Options.")
print("AI : Choose [1] For Main Dish.")
print("AI : Choose [2] For Sides.")
print("AI : Choose [3] For Drinks.")
print("AI : Choose [4] For Getting Reciept.")
print("AI : Choose [5] For Exit.")
choice = int(input("Select Your Choice : "))
if(choice == 1):
print("\n" + "AI:"
"\n\n1 : Burger $3.55"
"\n\n2 : Pizza $7.99"
"\n\n3 : Taco $12.99"
"\n\n4 : Italian Sandwich $5.99")
mainDish_Order = int(input("\n\nAI: Select Your Choice. "))
qty = int(input("AI: Please Enter The Quantity. "))
qty_Count.append(qty)
if(mainDish_Order == 1):
myOrder_Count.append(mainDish[0])
myOrder_Cost.append(mainDish_Price[0])
count += 1
total_MainDish_Order += mainDish_Price[0] * qty
elif(mainDish_Order == 2):
myOrder_Count.append(mainDish[1])
myOrder_Cost.append(mainDish_Price[1])
count += 1
total_MainDish_Order += mainDish_Price[1] * qty
elif(mainDish_Order == 3):
myOrder_Count.append(mainDish[2])
myOrder_Cost.append(mainDish_Price[2])
count += 1
total_MainDish_Order += mainDish_Price[2] * qty
elif(mainDish_Order == 4):
myOrder_Count.append(mainDish[3])
myOrder_Cost.append(mainDish_Price[3])
count += 1
total_MainDish_Order += mainDish_Price[3] * qty
if(choice == 2):
print("\n" + "AI: " +
"\n\n1 : French Fries $1.25"
"\n\n2 : Onion Rings $2.99"
"\n\n3 : Salad $1.75"
"\n\n4 : Chips $2.25")
sideDish_Order = int(input("AI : Please Select Your Choice."))
qty = int(input("AI: Please Enter The Quantity : "))
qty_Count.append(qty)
if(sideDish_Order == 1):
myOrder_Count.append(sideDish[0])
myOrder_Cost.append(sideDish_Price[0])
count += 1
total_SideDish_Order += sideDish_Price[0] * qty
elif(sideDish_Order == 2):
myOrder_Count.append(sideDish[1])
myOrder_Cost.append(sideDish_Price[1])
count += 1
total_SideDish_Order += sideDish_Price[1] * qty
elif(sideDish_Order == 3):
myOrder_Count.append(sideDish[2])
myOrder_Cost.append(sideDish_Price[2])
count += 1
total_SideDish_Order += sideDish_Price[2] * qty
elif(sideDish_Order == 4):
myOrder_Count.append(sideDish[3])
myOrder_Cost.append(sideDish_Price[3])
count += 1
total_SideDish_Order += sideDish_Price[3] * qty
if(choice == 3):
print("\n" + "AI :"
"\n\n1 : Cola $0.80"
"\n\n2 : Pepsi $0.60"
"\n\n3 : Sprite $0.40"
"\n\n4 : Water $0.20")
drink_Order = int(input("AI : Select Your Choice : "))
qty = int(input("AI: Please Enter The Quantity : "))
qty_Count.append(qty)
if(drink_Order == 1):
myOrder_Count.append(drink[0])
myOrder_Cost.append(drink_Price[0])
count += 1
total_Drink_Order += drink_Price[0] * qty
elif(drink_Order == 2):
myOrder_Count.append(drink[1])
myOrder_Cost.append(drink_Price[1])
count += 1
total_Drink_Order += drink_Price[1] * qty
elif(drink_Order == 3):
myOrder_Count.append(drink[2])
myOrder_Cost.append(drink_Price[2])
count += 1
total_Drink_Order += drink_Price[2] * qty
elif(drink_Order == 4):
myOrder_Count.append(drink[3])
myOrder_Cost.append(drink_Price[3])
count += 1
total_Drink_Order += drink_Price[3] * qty
fullPrice = total_MainDish_Order + total_SideDish_Order + total_Drink_Order
if(choice == 4):
print("AI: Here's Your Reciept")
print(" ")
print("**************")
while(i < count):
print(f"Items : {myOrder_Count[i]}")
print(f"Cost : ${myOrder_Cost[i]}")
print(f"qty : {qty_Count[i]} \n")
i += 1
print("**************")
print(f"AI: The Final Cost Is ${fullPrice}")
exit()
if(choice == 5):
print("AI: System Shutdown.")
exit()
getOrder()
對於超出范圍的列表,您不要 append 到 qty_Count。 您也可以擺脫 elif 只需使用 _Order 編號作為索引。 此外,當您只更改食物和價格時,重復打印。 例子:
if(choice == 1):
print("\n" + "AI:", end="")
for food, price in zip(mainDish, mainDish_Price):
print(f"\n\n1 : {food:20} ${price}")
mainDish_Order = int(input("\n\nAI: Select Your Choice. "))
qty = int(input("AI: Please Enter The Quantity. "))
myOrder_Count.append(mainDish[mainDish_Order-1])
myOrder_Cost.append(mainDish_Price[mainDish_Order-1])
count += 1
total_MainDish_Order += mainDish_Price[mainDish_Order-1] * qty
qty_Count.append(qty)
我很喜歡看你的劇本,我記得做過類似的事情。 如果您正處於使用函數的階段,並且看起來像這樣,那么我建議您使用更多的 go 並使您的程序更加模塊化並將其分解而不是一個 function 中的所有內容,它使調試成為容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.