首页 > 解决方案 > 无法赋值

问题描述

我在尝试为“杂货清单”分配值时遇到问题

具体来说,给定一个 .txt 文档,其中包含:

Grocery
Apple: 12
egg: 10
milk: 11

我正在尝试打开文件,并计算它的总价格。到目前为止我所拥有的:

shoplist={}
line=0

for item in open ("lab3demo.txt","r"):
    item= item.split(":")

    line+=1
    if line ==1:
        continue

    print (item)

到目前为止它确实返回['Apple',12\r\n']等。

但是,我随后尝试将价格分配为 value price = shoplist[item],但这是行不通的。因为我需要它来输出

item : price
item : price
item : price
total: total price

这是我做不到的。我应该怎么做?

我曾尝试从字典开始,但还没有走得太远。

标签: pythondictionary

解决方案


认为你想要做的是:

  • 将行拆分为itemprice变量。
  • 将其添加到字典中,item作为键,并price作为相应的值。

如果是这样,你有两件事错了。首先,这里:

item= item.split(":")

这只是item形成一对两个值。您希望将这两个值放在两个单独的变量中,item并且price,因此您必须告诉 Python:

item, price = item.split(":")

接着:

然后我试图将价格分配为一个值price = shoplist[item]

你已经把它弄反了。item这将在 中查找shoplist,并将结果值存储在price. 但是您想将and添加到:itempriceshoplist

shoplist[item] = price

完成此操作后,在循环结束时,您将拥有这样的 dict:

{'Apple': '12', 'egg': '10', 'milk': '11'}

您仍然需要弄清楚如何:

  • 循环遍历每个itempriceitemsshoplist
  • 以正确的格式打印item出来price
  • 将每个price字符串从字符串转换为int.
  • 将每个price值添加到total
  • 以正确的格式打印出total循环之后。

但是你应该能够让这一切正常工作。


推荐阅读