簡體   English   中英

來自多行的文本文件中的值求和(python)

[英]Sum values in a text file from multiple lines (python)

我正在嘗試對文本文件中測驗分數的值求和。 我需要匯總每個人的所有測驗分數值,以找到測驗分數的全班平均分數。 到目前為止,我的程序將對每行的分數求和,但不會將每行的分數求和。 如何將每一行加在一起? 這是我的文本文件,每個人只有一行(共10人)

Aenci, Iaron; 0905229; Quizzes 90%, 90%, 70%; Individual projects 80%, 70%, 90%; Labs 80%, 80%, 90%; Midterm 90%; Group Projects 90%, 80%, 70%; Final 90%

Yarton, Nabrina; 0908843; Quizzes 90%, 60%, 70%; Individual projects 90%, 70%; Labs 80%, 80%, 90%; Midterm 90%; Group Projects 90%, 80%, 70%; Final 90%

Jayer, Rody; 0908845; Quizzes 90%, 70%, 80%; Individual projects 90%, 60%, 50%; Labs 30%, 70%, 80%; Midterm 90%; Group Projects 90%, 70%, 80%; Final 80%
def cc_quiz(file):
    for line in open(file):
        student_list = line.split()
        count = len(student_list)
        a = str(student_list)
        start_position = a.find('Quizzes')
        end_position = a.find('Individual')
        class_quiz = a[start_position + 8: end_position - 3]
        cq = class_quiz.replace('%', '')
        cq1 = cq.replace(',', '')
        cq2 = cq1.replace(';', '')
        cq3 = cq2.replace("'", '')
        c = cq3.split()
        d = sum(float(x) for x in c)
        print(d)

輸出:

250.0
0
220.0
0
240.0
0
120.0
0
250.0
0
220.0
0
240.0
0
250.0
0
220.0
0
240.0

我希望這增加250 + 220 + ... + 240

只需創建另一個變量,然后為每次迭代將變量d的內容添加到該變量即可。 最后在last( 在for循環旁邊 )打印創建的臨時變量。

def cc_quiz(file):
    su = 0
    for line in open(file):
        student_list = line.split()
        count = len(student_list)
        a = str(student_list)
        start_position = a.find('Quizzes')
        end_position = a.find('Individual')
        class_quiz = a[start_position + 8: end_position - 3]
        cq = class_quiz.replace('%', '')
        cq1 = cq.replace(',', '')
        cq2 = cq1.replace(';', '')
        cq3 = cq2.replace("'", '')
        c = cq3.split()
        d = sum(float(x) for x in c)
        su += d
    print su

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM