我是Python的新手,了解它是如何工作的这是我制作的一个程序,我似乎无法减少数量
如何从列表中的单个元素中减去特定数字?
import csv
stockfile = open("Stock list.txt")
csvf = csv.reader(stockfile,delimiter = ",")
#Sets csvf vaiable to open text file
#Delimiter is what seperates your values
code = []
item = []
price = []
quantity = []
quantity = list(map(int, quantity))
for row in csvf:
code.append(row[0])
item.append(row[1])
price.append(row[2])
quantity.append(row[3])
usersearch = input("Please enter a 7-digit code: ")
#Asks the user to enter the unique item codes
while usersearch not in code:
print("This is not a valid 7-digit code")
usersearch = input("Please enter a 7-digit code: ")
if usersearch in code:
print("The code has been found")
index = code.index(usersearch)
print("The item you have chosen is: %s"%item[index])
print("The price is: £%s"%price[index])
print("There are %s left in stock"%quantity[index])
quantity[index] -= 1
我想将数量[index]减少1
当我使用quantity[index] -= 1
时出现错误:
TypeError: - =''str'和'int'
不支持的操作数类型这些是文件的内容:
0000001,PS4,300,50
0000011,Xbox One,300,50
<00> 0000111,极品飞车,40,200001111,正当理由3,45,24
0011111,Dualshock 4,48,30
没关系我弄明白,quantity=list(map(int, quantity))
必须在quantity[index] -= 1
答案 0 :(得分:5)
您可以使用扩充作业-=
:
a[4] -= 3
或者只是将减法的结果重新分配回索引(无论如何-=
都是这样做):
a[4] = a[4] - 3
答案 1 :(得分:1)
Python有一个强烈的“名字”概念。使用您的示例:
a = [12,34,43,21,11]
a
是一个'名称',指向一个包含五个数字的列表,或者更一般地说,a
指向内存中某些数据被保存的位置 - 在这种情况下是阵列。当您“编入”列表时,实际上,您使用的名称更具体。因此,名称a[4]
指向内存中保存整数的位置11
。
所以当你这样做时:
a[4] = "bob"
您说'将名称a[4]
指向的内存中的位置更改为“bob”'。当你这样做时:
a[4] = a[4] - 3
您说'更改名称a[4]
指向的内存中的位置,并将其更改为以下评估的结果:a[4] - 3
。该评估首先查看a[4]
中已有的内容,然后减去三个。在这种情况下,8
将结果分配给a[4]
引用的内存中的位置。
请注意,使用名称“获取特定”取决于原始名称的“数据类型”。由于您的a
是一个列表,Python知道如何索引它。这是Python(在REPL中)尝试索引到一些其他常见类型:
>>> s = "abcde"
>>> s[4]
'e'
>>> b = 5
>>> b[5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
>>> c = { 'a':1, 'b':2, 'c':3, 'd':4, 'e':5 }
>>> c[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4
>>> c['d']
4
请注意,在最后一个中,密钥d
有效但4
没有。当你想要了解你正在做的事情时,重要的是要知道你正在索引的内容!