python中的数据类型错误

时间:2018-04-02 14:28:54

标签: python

我正在研究的问题是: 超市程序,用于检查产品是否可用,然后对产品进行计费。 如果产品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'

请帮助我在当前代码中进行哪些更正以及我应该如何进行

1 个答案:

答案 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")