我是新手使用的功能,所以我真的被困在这里有一些错误。 当我运行第二个函数时,我得到一个'int对象不可订阅错误'
当我运行第三个函数时,它正在根据希望的用户输入更改列表,但是当程序再次运行时,它表明更改不是永久性的,列表与之前相同用户输入更改。 (它最后还加上'无'。
答案 0 :(得分:0)
首先,看起来你已经达到了学习课程和词典的程度,因为如果你学习它们,很多都可以简化。但如果你想继续使用列表列表来存储你的数据,这是修复你的第二个功能的方法:
此列表理解符合您的预期:
[i[products[0].index(inquiry)] for i in products[1:]]
如您所愿,products[1:]
是products
列表中最后两项的列表,如下所示:[[10,30,15], [300, 400, 500]]
因此,当您在第一次迭代中迭代此列表时,i
将为[10,30,15]
,而在第二次迭代中,它将为[300,400,500]
但是下面的其他列表理解并不像你期望的那样,
当您执行products[2]
或products[1]
时,您不会创建products
列表的子列表,只需获取该位置的列表即可:
[i[products[0].index(inquiry)] for i in products[2]]
列表i
将结束[300, 400, 500]
意味着在第一次迭代中i
将只是整数300
因为您想要做的是迭代单个字段,您应该不使用列表理解并直接使用products[2]
和products[1]
:
def retrieve_info():
inquiry = input('Which product would you like information about?')
if inquiry in products[0]:
inquiry_2 = input('Would you like information about the quantity, price, or both?')
if inquiry_2 == 'both':
print([i[products[0].index(inquiry)] for i in products[1:]])
if inquiry_2 == 'price':
print(products[2][products[0].index(inquiry)])
if inquiry_2 == 'quantity':
print(products[1][products[0].index(inquiry)])
if inquiry_2 not in ['both','price','quantity']:
print('error')
else:
print('product not in inventory system')
对于数据存储功能,对我来说似乎很好,尝试在函数的开头和结尾打印products
以查看它是否发生变化