条形码检查程序列表索引错误

时间:2016-11-03 20:35:41

标签: python

我正在尝试制作一个程序,让用户输入条形码和数量,并根据包含条形码,产品数量和产品描述的文本文件进行检查。

确切的测试文件看起来像这样,但每行之间没有空格。

12345678,imac,1049.00

12345670,macbookpro,1749.00

11111111,iphone,599.00

22222222,macbook,1249.00

87654321,ipadPro,549.00

我的代码并不总是有效。例如,如果您输入' 11111111'作为条形码,它打印"未找到的产品"当它进入" 12345678"时,它的行为应该像它一样。我不确定为什么会这样,但我相信有人可以告诉我。感谢

#"""
order = []

print("Enter a GTIN-8 product code and the quantity required. Press '/' when you're done")
print("")
while True:
    try:
        number = input("Enter GTIN: ")
        if number == "/":
            break
        else:
            if len(number) == 8:
                int(number)
                qty = input("Enter quantity: ")
                int(qty)
                order.append(number)
                order.append(qty)
                print("")
            else:
                print("Length of GTIN-8 barcode should be 8.")
    except ValueError:
        print("Only enter numbers.")
        continue

#"""



#order = ["12345678", "2", "12345670", "2", "11111111", "3", "87654321", "8"]


file = open("file.txt", "r")



count = 0
for line in file:
    product = line.split(',')
    if order[count] == product[0]:
        totalCost = float(order[1]) * float(product[2].strip('\n'))
        receipt = product[productCount], product[1], order[1], product[2].strip('\n'), str(totalCost)
        receipt = " ".join(receipt)
        print(receipt)
    else:
        print("Product not found")
    count = count + 2
    if count >= len(order):
        break

1 个答案:

答案 0 :(得分:0)

正如Jean-Francois Fabre指出的那样,在你的for循环中,你只是检查文件的第一行是否与你的订单匹配,然后才放弃并打印未找到的产品。即使您解决了这个问题,另一个问题是,您只是循环读取文件一次。您应该重构代码,以便for循环的外部循环遍历订单,内部循环查看文件的行,直到找到/到达文件的末尾。