Python 如何计算多个整数列表的平均值?
如何计算多个整数列表的平均值 我遇到了一个问题,试图让这个程序计算文本文件中数据的平均值 这是我的代码:Python 如何计算多个整数列表的平均值?,python,list,integer,average,Python,List,Integer,Average,如何计算多个整数列表的平均值 我遇到了一个问题,试图让这个程序计算文本文件中数据的平均值 这是我的代码: import string from operator import itemgetter Options=("alphabetical order","highest to lowest","average score") Option=raw_input("Which order do you want to output?" + str(Options)) choices=("Clas
import string
from operator import itemgetter
Options=("alphabetical order","highest to lowest","average score")
Option=raw_input("Which order do you want to output?" + str(Options))
choices=("Class 1","Class 2", "Class 3")
file = open("Class1.txt","r")
#Highest to Lowest
lines = file.readlines()
loopcount = len(lines)
for i in range(0,loopcount):
poszerostring = lines.pop(0)
new = str(poszerostring)
new1 = string.strip(new,'\n')
tempArray = new1.split(',')
resultsArray = [tempArray.append(poszerostring)]
name = tempArray.pop()
resultsArray.append(int(tempArray.pop()))
resultsArray.append(int(tempArray.pop()))
resultsArray.append(int(tempArray.pop()))
resultsArray.remove(None)
printedArray = resultsArray
print printedArray
if Option == "average score":
average = 0
sum = 0
for n in printedArray:
sum = sum(str(printedArray))
average = sum / 3
print average
以下是文本文件中的数据:
鲍勃,8,5,7
迪伦,5,8,2
杰克,1,4,7
杰伊,3,8,9
您正在为大部分代码重新发明轮子。我会使用
csv
包来读取文件,这会使代码更清晰
还有几点建议:
- 根据PEP8,变量(如
不得以大写字母开头;类应以大写字母开头Options
- 如果只使用一次变量,则通常不必创建它;例如
可以替换为`范围内的i(0,len(行))loopcount
- 实际上,您根本不需要一个loopcounter
,只需对行中的行使用i
:
- 行
将用一个值覆盖函数sum=sum(str(printedArray))
,使函数sum
在脚本中进一步不可用;始终避免使用等于现有函数名的变量名sum
无法正常工作,因为您尝试添加字符串,而不是数字sum(str())
- 您可以看到,我使用带有open(file_name)的
;这将打开文件,并在代码块末尾自动关闭它,从而防止我忘记再次关闭文件(您应该经常这样做);更多关于作为文件处理程序:
的信息,请参见
import csv
with open('Class1.txt') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
for row in csv_reader:
name = row[0] # first value on each row is a name
values = [int(value) for value in row[1:]] # make sure the other values are read as numbers (integers), not strings (text)
average = sum(values) / len(values) # note that in Python 2 this rounds down, use float(sum(values))/len(values) instead
print('{}: {}'.format(name, average))