读取文本文件中的数字

时间:2015-10-21 23:21:42

标签: python

我是python的初学者,学习如何读取和操作文本文件中的数据。

假设我有一个文本文件 grades.txt

.25 45 67 89
.75 23 45

我想创建一个程序来平均每一行的等级,然后乘以权重,该权重始终是每行中的第一个数字。

然后应该为所有行添加加权总计并打印最终成绩。

如果我不知道文本文件中的成绩数量或者我的权重不同,我该如何做?

目前我只能知道会有多少成绩。

到目前为止

代码:

def main():
    file = open("grades.txt", "r")
    for line in file:
        weight, gradeOne, gradeTwo, gradeThree = line.split()
        grade = (int(gradeOne) + int(gradeTwo) + int(gradeThree)/3

        print(float(weight) * grade)

main()

3 个答案:

答案 0 :(得分:3)

您可以使用line.split(' ')返回权重为list[0]的成绩列表。

然后你可以摆脱重量,并在for循环中循环遍历列表。

您添加所有成绩,然后除以成绩列表的长度 不要意外地包括重量!

答案 1 :(得分:3)

分割字符串后,使用map()将每个项目转换为float。使用*解包将第一项分配给weight,其余项目分配给名为list的{​​{1}}。

grades

然后,您可以使用def main(): file = open("grades.txt", "r") for line in file: weight, *grades = map(float, line.split()) print(weight * sum(grades)/len(grades)) main() sum()等便捷功能查找平均值。 len()map()float()sum()都是Python built-in functions

答案 2 :(得分:0)

这适用于Python 2.7以及3.x。

def main():
    total_grade = 0
    with open('grades.txt', 'r') as file:
        for line in file:
            split = line.split(' ')
            grades = map(int, split[1:])
            line_grade = (sum(grades) / len(grades)) * float(split[0])
            print line_grade
            total_grade += line_grade
    print total_grade

if __name__ == '__main__':
    main()
相关问题