如何用Python的max函数获取4名学生最高成绩?解决float不可迭代报错
解决max函数报错及获取最高期末成绩的问题
你遇到的float value is not iterable错误,核心原因是max()函数要求传入可迭代对象(比如列表、元组这类包含多个元素的集合),但你直接把grade_math(a,b,c)返回的单个浮点成绩传给了它——单个浮点数无法被迭代,因此触发报错。
修正步骤
- 先收集所有学生的期末成绩到一个列表中,再对整个列表调用
max() - 清理函数内无效代码(
return之后的代码永远不会执行,直接删除)
完整修正代码
def main(): students = ["Mike", "John", "James", "Dan"] disGrade = .10 quizGrade = .30 assignGrade = .60 def grade_math(a, b, c): disGradeFin = disGrade * a quizGradeFin = quizGrade * b assignGradeFin = assignGrade * c averageGrade = disGradeFin + quizGradeFin + assignGradeFin print(student, "final grade is", averageGrade) return averageGrade # 存储所有学生的期末成绩 final_grades = [] for student in students: print("Enter", student, "grades") a = float(input("Please enter student discussion grade.")) b = float(input("Please enter student quiz grade.")) c = float(input("Please enter student assignment grade.")) # 获取当前学生成绩并加入列表 student_grade = grade_math(a, b, c) final_grades.append(student_grade) # 从成绩列表中提取最高分 largestGrade = max(final_grades) print("最高期末成绩是:", largestGrade) # 可选:获取最高分对应的学生姓名 top_student = students[final_grades.index(largestGrade)] print(f"最高分学生是: {top_student}") main()
现在代码会先把每个学生的期末成绩存入final_grades列表,最后通过max(final_grades)正确获取最高分,不会再触发迭代错误。
内容的提问来源于stack exchange,提问作者Death
相关产品推荐
相关产品推荐

