我有两个字典,我需要相乘,并得到总数,都具有相同的关键字(我需要的股票和价格的一些项目的总数)。
# Create a list "menu" with 4 items
menu = ["sandwich", "burger", "fish", "chips"]
# Create a dictionary "stock" with the stock value for each item in the menu
stock = {"sandwich" : 6, "burger" : 5, "fish" : 6, "chips" : 10}
# Create a dictionary "price" with the price for each item in the menu
price = {"sandwich" : 4.50, "burger" : 6.00, "fish" : 6.50, "chips" : 3.50}
# Get the values from stock and price for each menu item and multiply by eachother
for key in price:
menu_stock = price[key] * stock[key]
# Get the sum of these values
total_stock_worth = sum(menu_stock)
# Print statement with the calculated total stock worth
print("The total stock worth is £" + str("{:.2f}".format(total_stock_worth)))
我收到错误消息(对于第12行:总库存价值=总和(菜单库存)):TypeError:“float”对象不可迭代
我追求的输出是:股票总价值为131.00英镑
4条答案
按热度按时间vjrehmav1#
sum
函数与iterable
配合使用,例如:list, set
等。在您的代码中,menu_stock
是float
,而不是iterable
。要解决您的问题,请将menu_stock
声明为列表,并将append
声明为列表中每个stock
和price
的乘积。在循环之后,调用sum
函数以计算total_stock_worth
。此外,您不需要调用
str()
方法,format()
会自动为您执行此操作。解决方案
rqcrx0a62#
menu_stock
(在循环中)存储float值,而sum
函数要求其参数为***可迭代***。因此,在计算
price*stock
s的和之前,需要累加所有乘积。qnyhuwrf3#
要计算
total_stock_worth
,请尝试:图纸:
yhxst69z4#
您有两种选择:
for
-循环,并将total_stock_worth
递增+=
;或sum( )
。在您的代码中,您尝试将两者混合,但由于以下两个原因而失败:
sum
;total_stock_worth = ...
时,都将擦除先前存储在total_stock_worth
中的值。下面是两个选项:
两个选项的输出相同:
根据个人喜好,您可以替换:
与:
其中
+=
可读作"增量";这两条线其实是等价的。