[英]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.