如何将文本文件中的最高值附加到列表中?

约翰·库克

我在尝试找出正在编写的程序的代码时遇到麻烦。我得到了一个具有以下格式的文件:

student_firstname
student_lastname
student_number
assignment_mark
midterm_mark
exam_grade
final_mark

这是一个示例:

Marilyn
Malone    
136238
88
72
70
Esther
Mulcahy
194563
25
45
91
William
Gray
110031
33
38
62

我正在尝试寻找一种方法来从所有学生中返回最高和最低的final_mark。到目前为止,我所做的是:

infile = open(fileName, "r")
myList = []
name = infile.readline().strip()

passingGrades = 0
failingGrades = 0
avGrade = 0    

while name != '':
    highestGrade = [0, 'studentName']
    lowestGrade = [99, 'studentName']
    lastName = infile.readline().strip()
    studentNum = infile.readline().strip()
    assignGrade = infile.readline().strip()
    midGrade = infile.readline().strip()
    examGrade = infile.readline().strip()
    averageGrade = ((int(assignGrade) * 0.25) + (int(midGrade) * 0.25) +
                    (int(examGrade) * 0.50)) 

    def lowGrade(x):
        if x < lowestGrade[0]:
            lowestGrade.pop(0)
            lowestGrade.pop(0)
            lowestGrade.append(x)
            lowestGrade.append(name)
            lowestGrade.append(lastName)
        return lowestGrade   

    if averageGrade >= 50 and int(examGrade) >= 50:
        #print(name)
        passingGrades += 1
        avGrade += averageGrade

        if averageGrade > highestGrade[0]:
            highestGrade.pop(0)
            highestGrade.pop(0)
            highestGrade.append(averageGrade)
            highestGrade.append(name)
            highestGrade.append(lastName)
        else:
            pass

    else:
        failingGrades += 1
        avGrade += averageGrade

    lowGrade(averageGrade)

    name = infile.readline().strip()

finalAverage = avGrade / (passingGrades + failingGrades)

highFinal = ' '.join(str(x) for x in highestGrade)
lowFinal = ' '.join(str(x) for x in lowestGrade)

当使用文本文件之一运行程序时,我得到:

Number of passes: 9
Number of fails: 1
Average final grade: 64.55
The Highest Grade: 79.5 Patty Marshall
The Lowest Grade: 79.5 Patty Marshall

任何帮助深表感谢!

柯克·布罗德赫斯特(Kirk Broadhurst)

每次阅读新学生时,您都会将highestGrade重置lowestGrade为其初始值(分别为099)。

while name != '':
     # stuff that happens for each 'name'
    highestGrade = [0, 'studentName']
    lowestGrade = [99, 'studentName']

    # ... do stuff ...

    # read new name
    name = infile.readline().strip()

通过在循环初始化这些值可以轻松解决此问题

highestGrade = [0, 'studentName']
lowestGrade = [99, 'studentName']

while name != '':
     # stuff that happens for each 'name'

另外,您的lowGrade方法不必要地复杂且多余。无需从列表中删除项目然后添加新项目,只需创建一个新列表即可。实际上,尽管atuple都可以list,但a比a更合适

lowestGrade = (99, 'studentName')

def lowGrade(x):
    if x < lowestGrade[0]:
        lowestGrade = (x, name, lastName)

您不需要从此方法返回tuple/ list,因为根本不用返回的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将 numpy x 和 y 值附加到文本文件中

如何将值附加到empy文本文件中

我如何将文本文件附加到我的contenteditable div中?

如何将数组值添加到文本文件中特定行的开头

将文本文件中的两列附加到单个列表中

使用PowerShell将文本附加到文本文件中的某些值

如何将增量计数附加到文本文件的每个预定义词中?

将字符串连接/附加到文本文件中的数字列表

如何将文本文件添加到 bash 脚本中,然后使用该文本文件

如何将文本文件中的值解析为列表,同时用None填充缺少的值?

如何将文本文件中的数据添加到 JavaFX 中的 ComboBox?

如何将文本文件中的String元素添加到ArrayList中?

如何将文本文件中的用户添加到unix系统中?

如何将文本附加到现有文本文件?

如何将wget文本文件输出附加到现有文件?

R:如何将文本文件递归到列表列表中?

如何将列表中的元组转储到Python中的文本文件

如何将多个列表写入文本文件中自己的列中?

如何将文本文件的某些实例放入python中的列表中

如何将多个文本文件中的字符串添加到数组

如何将文本文件中的文本颜色值转换为颜色?

如何将文本文件中的值存储在Java数组中?

如何将增量计数附加到文本文件的每一行?

如何将文本文件中的数据成对?

如何将 Windows 服务列表及其状态提取到文本文件中?

Python:如何将列表添加到现有的 txt 文件中,并且必须在文本文件中包含逗号?

如何将文本文件的多行作为字典中键的值(在元组中)?

如何将 TextBoxes 值保存到多行文本文件中

使用方法将文本文件内容附加到Python中的字典中?