+ =:' int'不支持的操作数类型和' str'

时间:2016-09-06 15:34:43

标签: python python-3.x

我是python的新手,但下面的代码一直在返回:

unsupported operand type(s) for +=: 'int' and 'str'

代码:

shopping_list = ["banana", "orange", "apple"]

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}

# Write your code below!
def compute_bill(food):
    total = 0
    for number in food:
        total += number
    return total

compute_bill(['apple'])

2 个答案:

答案 0 :(得分:3)

您当前的代码正在尝试将食物的字符串名称添加到总数中。试试这个:

def compute_bill(food):
    total = 0
    for f in food:
        number = prices.get(f, 0)
        total += number
    return total

.get()将解决传递prices词典中没有条目的食物的问题:例如,"apple"没有价格,它只会将0添加到总计中。这将使您的程序在以下情况下不会崩溃:commute_bill(['appple', 'grape'])。也就是说,如果您尝试计算拼写错误的水果或不在prices的水果的价格,它不会崩溃。但是,您的程序可能需要崩溃(或者至少在输入错误数据时引发错误并处理该错误) - 该部分由您决定。

答案 1 :(得分:2)

def compute_bill(food):
    total = 0
    for number in food:
        total += prices[number]  # You need to pull from the prices dictionary
    return total

这并不能解决库存中没有"apples"的问题。