这个python代码计算食物账单有什么问题?

时间:2016-02-13 19:00:56

标签: python

我一直在为Codecademy做一个课程,它给了我这个任务:

  

定义一个函数compute_bill,它将一个参数food作为输入。   在函数中,创建一个初始值为零的变量total。   对于food列表中的每个项目,请将该项目的价格添加到total。   最后,返回总数。

这是我的代码:

def compute_bill(food):
    total=0
    for x in food:
        total+=x
    return total 

这是他们给我的错误:

  

compute_bill(['apple'])导致TypeError:不支持的操作数   类型为+ =:'int'和'str'

我不知道我做错了什么。

4 个答案:

答案 0 :(得分:7)

您没有正确阅读作业:

  

对于食物清单中的每个项目,将该项目的价格添加到总数中。

您要添加商品本身,而不是商品的价格

你可能有一些方法可以找到每个项目的价格,比如字典。您无法添加'apple'字符串,但如果苹果价格为0.10(10美分),那么您可以0.10添加到total }。

例如,如果你有一个名为prices的字典,你可以这样做:

prices = {
    'apple': 0.10,
    'pear': 0.15,
    'cumquat': 0.50,
}

def compute_bill(food):
    total = 0
    for item in food:
        total += prices[item]
    return total 

请注意,我将x更改为item,这是一个与您的作业文字相符的更具描述性的变量名称。

答案 1 :(得分:2)

你应该总结每种食物的价格,而不是食物本身的价格。假设你有一本价格字典,你的代码应该是这样的:

def compute_bill(food):
  total = 0
  for x in food:
    total += prices[x]
return total

答案 2 :(得分:0)

错误告诉您:您无法添加整数和字符串。这是因为您要添加总计(整数)和食物本身,而不是价格。您可以使用your_dictionary[food]解决此问题,而不仅仅是food。希望这有帮助!

答案 3 :(得分:0)

这是正确的代码,我花了很长时间来修复它,但确保它看起来与此相似:

def compute_bill(food):
    total = 0
    for each in food:
        total += prices[each]
    return total