【发布时间】:2017-03-28 20:10:13
【问题描述】:
问题:
这是家庭作业的最后一个问题,它给我带来了最大的麻烦。我花了很多时间在上面,但我无法得到正确的结果。我不确定错误是什么,我假设它是一个逻辑错误。为了避免混淆,我将完整复制作业,而不是试图总结。解释如何达成解决方案的详细回复也会有所帮助,因为我想更好地理解这个概念。
我们希望通过跟踪每个商品的数量来跟踪我们商店的库存 我们目前拥有的产品。我们将使用带有 name:amount 键值的字典 对。名称为字符串,金额为整数。
我们将定义 shelve 函数,它接受一个字典作为库存 以及一个 (name, number) 对的列表,每个对都表明我们应该通过添加数字来更新该命名产品的库存。 (数字可能是 消极的)。第二个参数名为 product_list。 首次提及产品时,需要将其添加到 库存字典。当它的计数达到零时,它应该保持在 零计数的库存。但计数绝不能变为负数。 如果任何特定项目的库存变成负数,您必须提高 一个 ValueError 表示某些产品的数量低于零。 - 返回值:无。 (对现有的库存进行更改)。 - 建议:使用 try-except 块添加项目。 (不过,您可能会找到其他解决方案,这没关系)。 - 要求:只要项目的计数变为负数,就会引发 ValueErrors;采用 构造异常时的字符串“产品的负金额”。
例子:
d = {"apple":50, "pear":30, "orange":25}
ps = [("apple",20),("pear",-10),("grape",18)]
shelve(d,ps)
d
{'pear': 20, 'grape': 18, 'orange': 25, 'apple': 70}
shelve(d,[("apple",-1000)])
Traceback (most recent call last):
ValueError: negative amount for apple
我的代码:
def shelve(inventory,product_list):
invt = {}
count = 0
try:
for x in product_list:
if x== True:
invt{x} = product_list.shelve{x}
count += key
except ValueError:
print ('negative amount for (product)')
其他例子:
检查d = {"apple":50} shelve(d,[("apple",20),("apple",-30)]) 是否将d 修改为{"apple":40}。
检查shelve({}, [("apple",-20)]) 是否引发ValueError。
感谢您的帮助。
【问题讨论】:
-
如果您执行
shelve({}, [('apple', -20), ('apple, 30)])会引发 ValueError 还是{'apple' : 10}? -
你有
except except ValueError- 应该只是except ValueError吗? -
@StevenSummers 我相信它应该返回 {'apple' : 10}
-
@RobGwynn-Jones 它应该只是除了 ValueError,我编辑了错误。我的道歉
标签: python python-3.x dictionary python-3.5