【问题标题】:Read from file and average total从文件中读取和平均总数
【发布时间】:2013-04-29 01:09:52
【问题描述】:

Python 3.x 我试图从一个名为 numbers.txt 的文件中读取。里面有几行数字。我需要打印总数和平均值。除此之外,我还需要对 IOerror 和 ValueError 使用异常处理。

提前谢谢你。我知道有这样的问题,但建议出错了。

def main():
    total = 0.0
    length = 0.0
    average = 0.0
    try:
        filename = raw_input('Enter a file name: ')
        infile = open(filename, 'r')
        for line in infile:
            print (line.rstrip("\n"))
            amount = float(line.rstrip("\n"))
            total += amount
            length = length + 1
        average = total / length
        infile.close()
        print ('There were', length, 'numbers in the file.')
        print (format(average, ',.2f'))
    except IOError:
        print ('An error occurred trying to read the file.')
    except ValueError:
        print ('Non-numeric data found in the file')
    except:
        print('An error has occurred')

【问题讨论】:

  • 到目前为止你有什么?这是作业吗?
  • @user2330409 如果是家庭作业,你应该在问之前尝试一下。 SO 不是一个让你完成作业的网站,它是在你无法正确调试某些东西时提供帮助的。
  • 感谢您的回复,这是家庭作业,我只是在上面添加了它。好吧,我已经尝试了一段时间,它确实需要调试。对不起,我没有在帖子中添加代码。
  • @user2330409 你遇到了什么错误?
  • 对于我的原始代码,它只是说我的输出发生了错误

标签: python list exception-handling average


【解决方案1】:
with open('numbers.txt', 'r') as my_file:
    try:
        data = [float(n) for n in my_file.read().split()]
    except (IOError, ValueError):
        data = []
total = sum(data)
average = total / len(data)
print('Numbers: {nums}\nTotal: {total}\nAverage: {average}'.format(nums = data, total = total, average = average))

为了将来参考,因为这是相当简单的代码,您可以分别谷歌搜索每个部分,然后将它们拼凑在一起。

【讨论】:

  • 谢谢,未来我会使用谷歌,但这让我很沮丧。你给我的代码几乎可以工作,但给出了错误:TypeError: unsupported operand type(s) for +: 'int' and 'str'
  • @user2330409 检查我的编辑(我忘了读取文件会返回一个字符串)。
  • 非常感谢!现在说得通了。
猜你喜欢
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2015-09-10
  • 2016-01-19
  • 1970-01-01
  • 2018-09-26
  • 2015-12-06
  • 1970-01-01
相关资源
最近更新 更多