计算水费

#(open('D:\\学习\\Python\\各章实验内容答案与素材参考\\ch5\\文本文件\\data4.txt','r'))
feelist = []

f = open('D:\\学习\\Python\\各章实验内容答案与素材参考\\ch5\\文本文件\\data4.txt','r')
fee = f.readlines()
print(fee)
print('--------')

for a in fee:
    b = a.split(',')#字符串是不可以改变的
    feelist.append(b)#如果写a = a.split(','),输出fee是不会有任何改变的。
print(feelist)
print('--------')


for peolist in feelist:
    for term in range(3,len(peolist)):
        peolist[term] = int(peolist[term])#列表可以改变,所以可以这样赋值
print(feelist)


monthfee = []
##for mon in range(1,12+1):
##    num = feelist[1][5]

for peolist in feelist:
    for term in range(4,len(peolist)):
        num = round((peolist[term]-peolist[term-1])*(1.630+1.090),2)#如果term+1,则term==15时term+1==16,超出了range.见下面
        monthfee.append(num)
print(monthfee)

有一些错误是值得注意的。比如那个range范围

字符串和列表改变。

但是这段代码没有能够输出。仍然需要修改。


#(open('D:\\学习\\Python\\各章实验内容答案与素材参考\\ch5\\文本文件\\data4.txt','r'))
feelist = []
##读文件形成列表
f = open('D:\\学习\\Python\\各章实验内容答案与素材参考\\ch5\\文本文件\\data4.txt','r')
fee = f.readlines()
print(fee)
print('--------')

##把大列表分成单人的列表,一个人的信息在一个列表里,形成嵌套
for a in fee:
    b = a.split(',')#字符串是不可以改变的
    feelist.append(b)#如果写a = a.split(','),输出fee是不会有任何改变的。
print(feelist)
print('--------')

##把列表变成可以开始计算的格式,str变成int(某些)
for peolist in feelist:
    for term in range(3,len(peolist)):
        peolist[term] = int(peolist[term])#列表可以改变,所以可以这样赋值
print(feelist)

##弄一个空字符串,把要写的东西放进去,计算水费
s = ''
outfile = open('C:\\Users\\Li Wanru\\Desktop\\result.txt','w')
for peolist in feelist:
    for term in range(0,3):
        s = s + peolist[term]+'\t'
    for term in range(4,len(peolist)):
        num = str(round((peolist[term]-peolist[term-1])*(1.630+1.090),2))
        s = s + num + '\t'
    s = s + '\n'
print(s)

##把s写入文件
outfile.write(s)    
outfile.close()
print('okay')

这绝对不是一段很好的代码,甚至可以说是非常差劲的。s占用了太多的内存,如果能够一行行写入,应该会比这个好。

书上有一句话:写文件的实质是操作输出字符串。程序首先构造好输出字符串,将字符串写入到文件的方法是write。与print不同,write不提供换行。

这是不是意味着,只能write一次。如果write2次那第二次是覆盖操作了吧。。

但是我不想继续研究了,等把题做完再来想这个问题吧。

终于是写完了,形成的txt看起来也很整齐。能不能做kindle文章的排版呢?

你可能感兴趣的:(计算水费)