python - 需要帮助编写一个 Python 程序,该程序将读取此输入文件并显示以下信息:输入文件的总和、平均值、最小值和最大值
问题描述
我已经开始了我的代码,并且在一个非常好的开始,但是,当我在我的代码中添加总和、平均值、最小值和最大值时,我遇到了一个障碍,我相信这是一个非常容易解决的问题给知道在做什么的人。任何帮助将不胜感激。我文件中的数字是 14、22 和 -99。到目前为止,这是我的代码:
def main ():
contents=''
try:
infile = openFile()
count, sum = readFile(infile)
closeFile(infile)
display(count, sum)
except IOError:
print('Error, input file not opened properly')
except ValueError:
print('Error, data within the file is corrupt')
def openFile():
infile=open('numbers.txt', 'r')
return infile
def readFile(inf):
count = 0
sum = 0
line = inf.readline()
while line != '':
number = int(line)
sum += number
count += 1
line = inf.readline()
return count, sum
def closeFile(inF):
inF.close()
def display(count, total):
print('count = ', count)
print('Sum = ', total)
main()
解决方案
您的代码包含许多反模式:您显然试图像 OO 一样构造它但不使用类......但是这个:
line = inf.readline()
while line != '':
number = int(line)
sum += number
count += 1
line = inf.readline()
是最糟糕的部分,可能是罪魁祸首。
惯用的 Python 很少使用readline
并仅迭代文件对象,但良好的做法建议剥离输入行以忽略尾随空白字符:
for line in inf:
if line.strip() == '':
break
sum += number
count += 1
推荐阅读
- php - 仅计算顶级 WooCommerce 产品类别形成自定义运输计算
- react-admin - 为什么我会收到“关联的参考资料似乎不再可用”?
- c# - Autofac - 注册所有派生接口及其实现
- spring - Spring Security 多次调用需要在 SecurityContext 中使用多个令牌的不同 OAuth 服务器
- go - Private struct methods
- javascript - 增加 MapboxGL.PointAnnotation 的大小
- python - Tensorflow ValueError:logits和标签必须具有相同的形状((None,2)vs(None,1))
- c++ - 运算符“”在 C++ 中做了什么?
- laravel - 为 laravel 应用程序将包更新应用到 ubuntu
- javascript - 使用 Jasmine 在 Angular 中测试异步函数的问题