如何计算多个整数列表的平均值?

2024-10-01 04:52:04 发布

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

如何计算多个整数列表的平均值?在

我遇到了一个问题,试图让这个程序计算文本文件中数据的平均值。在

所以这是我的代码:

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

以下是文本文件中的数据:

Bob,8,5,7

Dylan,5,8,2

Jack,1,4,7

Jay,3,8,9


Tags: topopclassint平均值sumlinesaverage
1条回答
网友
1楼 · 发布于 2024-10-01 04:52:04

你正在为你的大部分代码重新设计轮子。我将使用csv包来读取该文件,这样代码就更干净了。Documentation here。在

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))

还有几点建议:

  • 根据PEP8变量(比如Options不应该以大写字母开头;类应该
  • 如果一个变量只使用一次,通常不必创建它;比如loopcount可以替换为“fori in range(0,len(lines))
  • 实际上,您根本不需要循环计数器i,只需使用for line in lines:
  • sum = sum(str(printedArray))将用一个值覆盖函数sum,使函数{}在脚本中进一步不可用;始终避免使用与现有函数名相等的变量名
  • sum(str())无法正常工作,因为您试图添加字符串,而不是数字
  • 您可以看到我使用了with open(file_name) as file_handler:;这将打开文件并在代码块末尾自动关闭它,从而防止我忘记再次关闭文件(您应该一直这样做);有关withhere的更多信息。在

相关问题 更多 >