首页 > 解决方案 > 最高分 Python

问题描述

我很难弄清楚如何使这段代码工作。我需要输入一个包含名称和分数列表的文本文件,然后我需要从分数中拆分名称,然后使用 if 语句检查分数是否大于最低分数。

文本文件如下所示:

Jan  86 
Drew  92 
Blake  85 
Alex  81 
Taylor  88 
Jordan  72
Cam  89

到目前为止,我有以下代码:

SCORE_POSITION_IN_ENTRY = 0
NAME_POSITION_IN_ENTRY = ""


def main (student_name, student_score):
    print (f"Highest score: {student_score}")
    print (f"Achieved by: {student_name}")

def read_file (scores):   
    list_of_grades = ""   
    data_list = []
      
    infile = open('scores.txt','r')
    list_of_grades = infile.readline()
    
    while (list_of_grades != ""):
        data_list = int(list_of_grades)        
        list_of_grades = infile.readline()
    
    infile.close()
      
    return data_list


def find_max_score(data_list):
    entry_in_list = []
    maximum_score = 0
    
    #splitting the list
    entry_in_list = data_list.split('')
      
    current_score=int(entry_in_list[SCORE_POSITION_IN_ENTRY])
      
    if current_score > maximum_score:      
        maximum_score = current_score
        student_name = entry_in_list[NAME_POSITION_IN_ENTRY];
        student_score = entry_in_list[SCORE_POSITION_IN_ENTRY];
        
    return student_name, student_score


main() 

标签: python

解决方案


您的文本文件在名称和分数之间有两个空格。此代码将起作用:

def main(filename):
    student_name, student_score = find_max_score(read_file(filename))
    print(f"Highest score: {student_score}")
    print(f"Achieved by: {student_name}")


def read_file(filename):
    data_list = []
    with open(filename, 'r') as reader:
        for line in reader.readlines():
            data_list.append(line)
    return (data_list)


def find_max_score(data_list):
    max_score = 0
    best_student = None
    for entry in data_list:
        name, score = entry.split('  ')
        if int(score) > max_score:
            max_score = int(score)
            best_student = name

    return (best_student, max_score)


main('scores.txt')

#output:
Highest score: 92
Achieved by: Drew

推荐阅读