如何使用float在字典中转换一个值字符串并用新值进行数学运算?

2024-09-28 01:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在和codeaccademy一起学习python,任务是拿两个给定的字典(一个是食物和购买价格的列表+第二个是相同食物的列表,但是有库存量),然后计算如果所有的食物都卖了,我会有多少收入。在

一开始,我收到了这个错误消息"can't multiply sequence by non-int of type 'list'",我觉得这很奇怪,因为我调用的值是数字?但是好的,然后我尝试使用float函数转换字符串(在计算时使用float(quan)和{})。但是,我会得到这个错误:"TypeError: float() argument must be a string or a number" 我还试图通过float(prices.value())进行转换,但这也给出了相同的错误消息。 我认为错误在于我如何使用float函数而不是循环,因为我试图只输出cost和quan,并且输出看起来正常。在

我将非常感谢你的帮助。在

 prices = {
     "banana": 4,
     "apple": 2, 
     "orange": 1.5, 
     "pear": 3, 
 }
 name, cost = prices.keys(), prices.values()    
 stock = {
     "banana": 6,
     "apple": 0,
     "orange": 32,
     "pear": 15
 }
 items, quan = stock.keys(), stock.values()
 for name, cost in prices.iteritems():
    print float(cost) * float(quan)

还有一个求和函数:还有一个要编辑的循环?因为我应该找到一个单一的最终价值,如果一切都能卖出去


Tags: 函数消息apple列表错误stockfloat食物
3条回答

一种方法是仅循环关键点:

for key in prices:
    if key in stock:
        print(prices[key] * stock[key])

虽然在您的例子中,两个字典都有相同的键,但是我添加了一个条件来检查prices中的每个键是否也在stock中。然后,假设是,将字典值相乘。在


将所有值相加

^{pr2}$

如果你想包括

^{3}$

或者如果你想要多行:

total = 0

for key in prices:
    total += prices[key] * stock[key]

print(total)

cost和{}都是列表,不能传递给{}。我怀疑你为什么把解决方案复杂化。您只需使用:

for fruit in prices:
    print prices[fruit] * stock.get(fruit, 0)

或者,如果你愿意,你可以用听写理解来让结果更清楚:

^{pr2}$

您正在将quan设置为dict中所有值的列表。这不是您想要的;您正在寻找与name对应的单个值作为键。在

相关问题 更多 >

    热门问题