更新:Python平均收入读写文件

2024-06-07 11:40:55 发布

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

我在写一个代码来计算家庭平均收入,还有多少家庭生活在贫困线以下。在

这是我目前为止的代码

def povertyLevel():

inFile = open('program10.txt', 'r')
outFile = open('program10-out.txt', 'w')

outFile.write(str("%12s  %12s %15s\n" % ("Account #", "Income", "Members")))

lineRead = inFile.readline()       # Read first record
while lineRead != '':              # While there are more records

   words = lineRead.split()        # Split the records into substrings
   acctNum = int(words[0])         # Convert first substring to integer
   annualIncome = float(words[1])  # Convert second substring to float
   members = int(words[2])         # Convert third substring to integer

   outFile.write(str("%10d  %15.2f  %10d\n" % (acctNum, annualIncome, members)))

   lineRead = inFile.readline()    # Read next record


# Close the file.
inFile.close() # Close file

调用主函数

povertyLevel()

我试着找出年平均收入,我想做的是

平均值=(总和(年收入)/长度(年收入)) 输出文件.写入(avgIncome)

我是在while lineRead里面做的。但是它给了我一个错误

平均值=(总和(年收入)/长度(年收入)) TypeError:“float”对象不可读取

目前,我正试图找出哪个家庭的收入超过平均水平。在


Tags: to代码convert家庭opensubstringfloatinfile
2条回答

avgIncome需要一个sequence(例如^{})(感谢correction,洋红色新星),但是它的参数annualIncome是一个float

annualIncome = float(words[1])

在我看来,你想建立一个清单:

^{pr2}$

(请注意,对于avgIncome调用,我少了一个缩进级别。)

另外,一旦你成功了,我强烈建议你去https://codereview.stackexchange.com/旅行。你可以得到很多关于改善这一点的反馈。在

编辑:

根据你的编辑,我的建议仍然有效。在进行比较之前,您需要先计算平均值。一旦你有了平均值,你需要再次循环数据来比较每一个收入。注意:我建议以某种方式为第二个循环保存数据,而不是重新分析文件。(您甚至可能希望将读取数据与计算平均值完全分开)这可能最好使用新对象或namedtupledict来完成。在

sum()和len()都以iterable作为参数。阅读python文档以了解关于iterables的更多信息。你把一个float作为参数传递给他们。得到浮点数的和或长度意味着什么?即使在编码的世界之外思考,也很难理解这一点。在

似乎您需要回顾python类型的基础知识。在

相关问题 更多 >

    热门问题