下面是计算超级市场账单的代码。一切都很好,但问题是,我被告知,如果输入只有苹果,这个解决方案就行不通。
我相信苹果的价值应该是0,因为苹果没有存货,但我仍然相信有些事情我做得不对。请帮忙。
groceries = ["apple","banana", "orange",]
stock = {"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
def computeBill(food):
total = 0
for item in food:
tot = prices[item] * stock[item]
print item, tot
total += tot
return total
computeBill(groceries)
我不知道为什么这样不行。如果您的输入是
['apple']
,则会发生以下情况:除非他们希望能够传入一个条目而不将其包装在列表中,所以调用“computeBill('apple')”。在这种情况下,您必须在函数的开头进行类型检查。可能是这样的
我将自己给出这个答案并提出建议,因为您的
computeBill
功能的规范似乎没有很好地定义。如果这些项目没有库存,并且您的讲师说在这种情况下返回
0
是不可接受的,那么您的其他选项是引发一个异常或一个表示错误状态的哨兵值。或者如果您不想引发异常,如果您觉得这无论如何都不是一个有效的总数,则可以返回
-1
:这个函数还有一些其他的问题,比如它是如何计算列表和股票的,但是你说你现在不关心这些问题。
相关问题 更多 >
编程相关推荐