Python 读取文本文件中的数字

Python 读取文本文件中的数字,python,Python,我是python初学者,学习如何读取和操作文本文件中的数据 假设我有一个文本文件grades.txt: 我想创建一个程序,平均每行的分数,然后乘以权重,权重总是每行的第一个数字 然后,它应该将所有行的加权总数相加,并打印一个最终分数 如果我不知道文本文件中的分数,或者如果我有不同的权重,我该怎么做 目前我只能在我已经知道会有多少个等级的情况下才能这样做 迄今为止的代码: def main(): file = open("grades.txt", "r") for line in

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

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

我想创建一个程序,平均每行的分数,然后乘以权重,权重总是每行的第一个数字

然后,它应该将所有行的加权总数相加,并打印一个最终分数

如果我不知道文本文件中的分数,或者如果我有不同的权重,我该怎么做

目前我只能在我已经知道会有多少个等级的情况下才能这样做

迄今为止的代码:

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

您可以使用
line.split(“”)
返回权重为
list[0]
的等级列表

然后您可以去掉权重,并在for循环中循环遍历列表

将所有等级相加,然后除以等级列表的长度。

不要意外地包括重量

您可以使用
line.split(“”)
返回权重为
list[0]
的等级列表

然后您可以去掉权重,并在for循环中循环遍历列表

将所有等级相加,然后除以等级列表的长度。

不要意外地包括重量

拆分字符串后,使用
map()
将每个项目转换为
浮点值。使用
*
解包将第一个项目分配给
重量
,其余项目分配给名为
等级
列表

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()
,和
len()
都是。拆分字符串后,使用
map()
将每个项转换为
float
。使用
*
解包将第一个项目分配给
重量
,其余项目分配给名为
等级
列表

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()
,和
len()
都是这样。

这将在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()

这将在Python2.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()

我会很便宜并且做
…=映射(float,line.split())
。我会很便宜,做
…=映射(float,line.split())