2

我正在尝试学习 python,我正在从一本书中解决一个问题,但我被困在一个问题上。它要求我读取一个文件,每行包含一个“a”或“s”,基本上我的总数是 500。如果该行包含一个“a”,它会在它旁边添加数量,例如它会说“a 20”,它会在我的总数中增加 20,而对于 s,它会减去那个数量。最后,我应该在进行所有更改后返回总数。到目前为止我得到了

def NumFile(file:
    infile = open(file,'r')
    content = infile.readlines()
    infile.close()
    add = ('a','A')
    subtract = ('s','S')

在那之后,我完全不知道如何开始

4

2 回答 2

5

您需要遍历文件的行。这是一个框架实现:

# ...
with open(filename) as f:
    for line in f:
        tok = line.split()
        op = tok[0]
        qty = int(tok[1])
        # ...
# ...

这会将每个操作和数量分别放入opqty

我留给你填写空白(# ...)。

于 2013-04-08T06:50:53.943 回答
0

一个变化可能是

f = open('myfile.txt','r')
lines  = f.readlines()
for i in lines:
  i = i.strip() # removes new line characters
  i = i.split() # splits a string by spaces and stores as a list
  key = i[0]    # an 'a' or an 's'
  val = int( i[1] )   # an integer, which you can now add to some other variable

尝试添加打印语句以查看发生了什么。python 很酷的一点是你可以在一行中堆叠多个命令。这是一个等效的代码

for i in open('myfile.txt','r').readlines():
  i   = i.strip().split()
  key = i[0]
  val = int (i[1])
于 2013-04-08T08:08:13.207 回答