所以我想要将所有值一起计算,以生成将在列表下方打印的totalItems var。输出给了我5而不是全部反击。有人可以解释我为什么,而不仅仅是给出正确的代码。
stuff = {'coins': 5, 'arrows': 42, 'rope': 1}
def getInvent(inventory):
itemTotal = 0
print('Inventory:')
print(str(stuff['coins']) + ' Coins')
print(str(stuff['arrows']) + ' Arrows')
print(str(stuff['rope']) + ' Rope')
for k, v in stuff.items():
itemTotal = itemTotal + v
print('Total number of items: ' + str(itemTotal))
return itemTotal
getInvent(stuff)
答案 0 :(得分:2)
您可以使用sum()
和dict.values()
将for循环变为单行:
>>> sum(stuff.values())
48
<强>解释强>
stuff.values()
为您提供字典中所有值的列表:
>>> stuff.values()
[1, 5, 42]
sum()
将可迭代的所有项目(如列表)加在一起:
>>> sum([1, 5, 42])
48
完整示例:
stuff = {'coins': 5, 'arrows': 42, 'rope': 1}
def getInvent(inventory):
print('Inventory:')
print(str(stuff['coins']) + ' Coins')
print(str(stuff['arrows']) + ' Arrows')
print(str(stuff['rope']) + ' Rope')
itemTotal = sum(inventory.values())
print('Total number of items: ' + str(itemTotal))
return itemTotal
getInvent(stuff)
答案 1 :(得分:1)
你不应该在循环中return
,因为在这种情况下它会立即返回(在循环的第一次迭代中)。相反,将回报放在循环之外。
for k, v in stuff.items():
itemTotal = itemTotal + v
print('Total number of items: ' + str(itemTotal))
return itemTotal
函数在遇到return
语句时会立即返回。因此,在返回值之前,应确保循环完整运行。