繁体   English   中英

Python中的字符串和整数

[英]Strings and Integers in Python

这是我的数据文件(称为“ 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()  

看起来您已经完成了大部分工作,并且已经掌握了如何将每一行划分为所需的两个组件的知识,因此您已经非常接近了!

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

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}

尝试这个?

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

尝试下面的代码,只是将每行分隔在空格上,然后获取没有名称的数字,因此索引将为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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM