0
を修正する方法がわからない、私は他の場所でサイトにこのコードを見つけましたが、私は同じエラーメッセージが出続ける何らかの理由:は、インデックスエラーが発生している私は
products[row[0]] = [row[1], row[2], row[3]]
IndexError: list index out of range.
私はこれを修正する方法がわかりませんよどんな助けもありがとう、ありがとう。
これはコードです:
MAX_FIELD_LEN = 8
def main():
products = {}
product_location = {}
location = 0
# This is the file directory being made.
with open('stockfile.txt', 'r+') as f:
# This is my file being opened.
for line in f:
# keep track of each products location in file to overwrite with New_Stock
product_location[line.split(',')[0]] = location
location += len(line)
# Need to strip to eliminate end of line character
line = line[:-1]
# This gets rid of the character which shows and end of line '\n'
row = line.split(',')
# The row is split by the comma
products[row[0]] = [row[1], row[2], row[3]]
# The products are equal to row 1 and row 2 and row 3. The GTIN is going to take the values of the product and price so GTIN 12345678 is going to correspond to Fridge and 1.
print(products)
total = 0
while True:
GTIN = input('Please input GTIN: ')
# To terminate user input, they just need to press ENTER
if GTIN == "":
break
if (GTIN not in products):
print('Sorry your code was invalid, try again:')
break
row = products[GTIN]
description, value, stock = row
print('Stock data: ')
print('GTIN \t\tDesc. \t\tStock \t\tValue')
print(GTIN,'\t',description,'\t', stock, '\t', value)
quantity = input('Please also input your quantity required: ')
row[2] = str(int(stock) - int(quantity))
product_total = int(quantity) * int(value)
for i in range(len(row)):
row[i] = row[i].rjust(MAX_FIELD_LEN)
New_Stock = GTIN.rjust(MAX_FIELD_LEN) + ',' + ','.join(row) + '\n'
#print(New_Stock, len(New_Stock))
f.seek(product_location[GTIN])
f.write(New_Stock)
print('You bought: {0} {1} \nCost: {2}'.format(GTIN, description, product_total))
total = total + product_total
f.close()
print('Total of the order is £%s' % total)
main()
あなただけの問題の関連情報の代わりに、全体のコードが含まれている場合には役立つだろう。あなたがそれらに3つの以上のカンマを持っていない、あなたのファイルの行を持っているよう –
が鳴ります。おそらくあなたは*空の行を持っていますか? –
私の推測では、stockfile.txtが3未満「」文字の行が含まれていないだろう。あなたも入力を提供できますか? – Binus