Python:TypeError:不能将序列乘以str类型的非int

时间:2014-05-10 21:22:10

标签: python

所以,我正在制作基于文本的"购物"程序,我遇到了一个对我来说没有意义的错误。错误消息是:

TypeError: can't multiply sequence by non-int of type str

以下是我认为错误所在位置的代码段(注释位于我认为错误所在的行上方):

def buy():
    print "\nType in a store item to buy."
    find_item = raw_input(prompt)
    if find_item in store_items:
        print "Amount?"
        amount = raw_input(prompt)
        if amount:
                        #Error in next line?
            store_rec.append(store_items[find_item] * amount)
            get_buy()

如果您想知道, store_items 是包含商店项目的字典,如下所示:

store_items = {
    "carrot": "carrot",
    "apple": "apple",
    "pear": "pear",
    "taco": "taco",
    "banana": "banana",
    "tomato": "tomato",
    "cranberry": "cranberry",
    "orange": "orange",
}

然后 store_rec 是一个空列表,如下所示:

store_rec = []

它包含告诉用户下次要购买什么的建议,但这不是我认为错误所在的位置。我在错误所在的行中尝试执行的操作是将用户指定的项目数量附加到空 store_rec 列表中。不幸的是,我得到了错误。它似乎应该工作,但它没有。所以,考虑到这一点,我的问题的任何帮助都表示赞赏!

1 个答案:

答案 0 :(得分:3)

如果您仔细阅读错误,它会告诉您错误 - 将序列乘以字符串是没有意义的;首先必须将字符串转换为整数。

通过更改行来将金额转换为整数:

amount = raw_input(prompt)

amount = int(raw_input(prompt))