如何使用 python 打印学生成绩的最高分和姓名?
How could I print the highest score and name of student grades using python?
使用 python 我正在创建一个代码,它接收一个列表列表作为参数。此列表列表包含学生的姓名和成绩。该函数还必须打印成绩最好的学生的姓名及其最好的成绩。当我创建代码并尝试 运行 时,没有任何反应有没有办法改进我的代码?我想要的输出是“最好的学生是:Caroline 9.6”
students=[["steve", 9.0], ["ben", 9.5], ["Caroline",9.6],["Tim", 9.1]]
highest_grade=[]
lowest_grade=[]
def best():
i = 1
max = min = students[0]
# first, calculate the max and min.
while i < len(students): # (possible improvement: replace this with a for loop)
if students[i] > max:
max = students[i] # replace max with the new max
if students[i] < min:
min = students[i] # replace min with the new min
i += 1
highest_grade.append(max)
lowest_grade.append(min)
print("The best student is:",best())
这段代码可能会有很多改进。首先,如果 students 数组是一个 dict 会好得多,但如果它绝对必须是一个数组数组也是可以理解的。
其次,你说得对,你应该用 for 循环来做:
def best_student_grade():
highest_grade = 0 # "max" is a terrible name for a variable
for student, grade in student:
if grade > highest_grade:
grade = highest_grade
best_student = student
return highest_grade, best_student
bstudent, bgrade = best_student_grade()
print(f"The best student is: {bstudent} with a {bgrade}")
你甚至可以通过列表理解来做到这一点,但我会把它作为练习留给 reader。
老实说,我认为阅读一些介绍性 python 或编程书籍会让您在很多方面受益。
max(students,key=lambda x:x[1])
我认为可行
您可以做一些事情来改进它。你找到了最低分数但没有使用它,所以我不确定你是否需要它。如果确实需要,可以将其添加到 return
语句中。这是一个应该很容易遵循的建议方法:
students = [["steve", 9.0], ["ben", 9.5], ["Caroline", 9.6], ["Tim", 9.1]]
def best(students):
highest_grade_name = None
lowest_grade_name = None
my_max_score = -float("inf")
my_min_score = float("inf")
for name, score in students:
if score > my_max_score:
my_max_score = score
highest_grade_name = name
if score < my_min_score:
my_min_score = score
lowest_grade_name = name
return my_max_score, highest_grade_name
best_name, best_score = best(students)
print(f"The best student is {best_name} with a score of {best_score}")
使用 python 我正在创建一个代码,它接收一个列表列表作为参数。此列表列表包含学生的姓名和成绩。该函数还必须打印成绩最好的学生的姓名及其最好的成绩。当我创建代码并尝试 运行 时,没有任何反应有没有办法改进我的代码?我想要的输出是“最好的学生是:Caroline 9.6”
students=[["steve", 9.0], ["ben", 9.5], ["Caroline",9.6],["Tim", 9.1]]
highest_grade=[]
lowest_grade=[]
def best():
i = 1
max = min = students[0]
# first, calculate the max and min.
while i < len(students): # (possible improvement: replace this with a for loop)
if students[i] > max:
max = students[i] # replace max with the new max
if students[i] < min:
min = students[i] # replace min with the new min
i += 1
highest_grade.append(max)
lowest_grade.append(min)
print("The best student is:",best())
这段代码可能会有很多改进。首先,如果 students 数组是一个 dict 会好得多,但如果它绝对必须是一个数组数组也是可以理解的。
其次,你说得对,你应该用 for 循环来做:
def best_student_grade():
highest_grade = 0 # "max" is a terrible name for a variable
for student, grade in student:
if grade > highest_grade:
grade = highest_grade
best_student = student
return highest_grade, best_student
bstudent, bgrade = best_student_grade()
print(f"The best student is: {bstudent} with a {bgrade}")
你甚至可以通过列表理解来做到这一点,但我会把它作为练习留给 reader。
老实说,我认为阅读一些介绍性 python 或编程书籍会让您在很多方面受益。
max(students,key=lambda x:x[1])
我认为可行
您可以做一些事情来改进它。你找到了最低分数但没有使用它,所以我不确定你是否需要它。如果确实需要,可以将其添加到 return
语句中。这是一个应该很容易遵循的建议方法:
students = [["steve", 9.0], ["ben", 9.5], ["Caroline", 9.6], ["Tim", 9.1]]
def best(students):
highest_grade_name = None
lowest_grade_name = None
my_max_score = -float("inf")
my_min_score = float("inf")
for name, score in students:
if score > my_max_score:
my_max_score = score
highest_grade_name = name
if score < my_min_score:
my_min_score = score
lowest_grade_name = name
return my_max_score, highest_grade_name
best_name, best_score = best(students)
print(f"The best student is {best_name} with a score of {best_score}")