Python中的字符串和整数

时间:2018-06-07 23:17:12

标签: python integer

这是我的数据文件(名为“studentdata.txt”)

joe 10 15 20 30 40
bill 23 16 19 22
sue 8 22 17 14 32 17 24 21 2 9 11 17
grace 12 28 21 45 26 10
john 14 32 25 16 89

我需要计算每个学生的平均成绩,并打印出学生的姓名和平均成绩。我可以毫无问题地提取名称并确定考试分数,但我无法弄清楚如何总结考试分数。这就是我到目前为止所做的:

file=open("studentdata.txt","r")

for aline in file:    
    data=aline.split()    

    print((data[0]),"Average grade:")
    print(len(data[1:]))


file.close()  

3 个答案:

答案 0 :(得分:3)

看起来你已经完成了大部分工作,而且你已经很好地掌握了如何将每一行划分为你需要的两个组件,所以你真的很接近!

首先,由于数据是以字符串形式读入的,因此您需要将部分数据转换为整数:

for line in file:
    tmp = line.split()
    name, scores = tmp[0], list(map(int, tmp[1:]))

这将为我们提供每个名称,以及作为整数的分数列表。现在你所要做的就是找到平均值:

average = sum(scores)/len(scores)

让我们通过分配字典将它们联系在一起:

dct[name] = average

我们得到:

{'joe': 23.0, 'bill': 20.0, 'sue': 16.166666666666668, 'grace': 23.666666666666668, 'john': 35.2}

答案 1 :(得分:1)

试试这个?

file = open("studentdata.txt", "r")
for aline in file:
    data = aline.split()

    # Convert list of string numerals to int
    grades = [int(grade) for grade in data[1:]]

    # Find average by dividing sum by length of numbers list
    average = sum(grades)/len(data[1:])

    print((data[0]), "Average grade:", str(average))

file.close()

答案 2 :(得分:0)

尝试以下代码,只需在空格上分割每一行,然后获取不带名称的数字,以便索引将为i.strip().split()[1:],然后使用map将其转换为整数,然后使用statistics.mean得到平均值:

from statistics import mean
d = {}
with open('studentdata.txt','r') as f:
   for i in f.readlines():
      d[i.split()[0]] = mean(list(map(int,i.strip().split()[1:])))
print(d)

输出:

{'joe': 23.0, 'bill': 20.0, 'sue': 16.166666666666668, 'grace': 23.666666666666668, 'john': 35.2}