我正在研究的问题是: 超市程序,用于检查产品是否可用,然后对产品进行计费。 如果产品ID存在于产品ID列表中,则可以将产品添加到帐单中。 产品售出后,您将减少库存产品的数量。
product = ["apple", "pear", "banana", "orange", "guava"]
productID = ["a", "p", "b", "o", "g"]
productLeft = [3, 3, 3, 3, 3]
buy = str(input("enter product ID"))
if any(buy in s for s in productID):
num = int(productID.index(buy))
left = productID[num]
if left != 0 :
left = left-1
productLeft[num] = left
我收到此错误消息:
left = left-1
TypeError: unsupported operand type(s) for -: 'str' and 'int'
如果这样做:
left = int(productID[num])
然后我收到此错误消息:
left = int(productID[num])
ValueError: invalid literal for int() with base 10: 'a'
请帮助我在当前代码中进行哪些更正以及我应该如何进行
答案 0 :(得分:2)
您正在尝试将产品 ID 视为剩余的商品数量。请勿使用productID
,请使用productLeft
中的值:
left = productLeft[num]
不是使用列表,而是每次都必须搜索产品ID,请使用some dictionaries:
products = {"a": "apple", "p": "pear", "b": "banana", "o": "orange", "guava"}
productLeft = {"a": 3, "p": 3, "b": 3, "o": 3, "g": 3}
和
buy = input("enter product ID")
if buy in products: # valid existing key
if productLeft[buy] > 0:
productLeft[buy] -= 1
else:
print("There is nothing left")
else:
print("Sorry, there is no such product")