如何使用python打印最高分数和学生成绩名称?
我正在使用python创建一个代码,该代码接收列表列表作为参数。此列表包含学生的姓名和成绩。函数还必须打印具有最佳成绩及其最佳成绩的学生的姓名。当我创建代码并尝试运行它时,什么都没有发生,有没有办法改进我的代码?我期望的结果是“最好的学生是:卡罗琳,成绩为9.6”如何使用python打印最高分数和学生成绩名称?,python,list,nested-lists,Python,List,Nested Lists,我正在使用python创建一个代码,该代码接收列表列表作为参数。此列表包含学生的姓名和成绩。函数还必须打印具有最佳成绩及其最佳成绩的学生的姓名。当我创建代码并尝试运行它时,什么都没有发生,有没有办法改进我的代码?我期望的结果是“最好的学生是:卡罗琳,成绩为9.6” students=[[“steve”,9.0],“ben”,9.5],“Caroline”,9.6],“Tim”,9.1]] 最高等级=[] 最低等级=[] def best(): i=1 最大=最小=学生[0] #首先,计算最大值和
students=[[“steve”,9.0],“ben”,9.5],“Caroline”,9.6],“Tim”,9.1]]
最高等级=[]
最低等级=[]
def best():
i=1
最大=最小=学生[0]
#首先,计算最大值和最小值。
而我max:
max=学生[i]#用新的max替换max
如果学生[i]
这段代码可能有很多改进。首先,如果students数组是dict会更好,但是如果它必须是数组数组,这是可以理解的
其次,您是对的,您应该使用for循环来实现这一点:
def最佳学生成绩():
最高等级=0#“max”对于变量来说是个糟糕的名字
对于学生,学生成绩:
如果等级>最高等级:
等级=最高等级
最佳学生
返回最高成绩、最佳学生
b学生,bgrade=最佳学生成绩()
打印(f“最好的学生是:{bstudent}和{bgrade}”)
您甚至可以通过列表理解来完成此操作,但我将把它作为练习留给读者
老实说,我认为阅读一些介绍python或编程的书籍在很多方面对您都有好处。max(学生,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}")
students=[[“steve”,9.0],“ben”,9.5],“Caroline”,9.6],“Tim”,9.1]]
def best(学生):
最高等级名称=无
最低等级名称=无
我的最大分数=-浮动(“inf”)
我的分数=浮动(“inf”)
姓名、学生成绩:
如果分数>我的最大分数:
我的最大分数=分数
最高等级名称=名称
如果分数
您应该缩进i+=1
,使其与上面的if
对齐。目前,您的while
循环是一个无止境的循环,因为i
在循环中从不改变。此外,您不会从函数返回max
,也不会比较整个元组(例如[“steve”,9.0]
),而只返回分数。请注意,students[i]
实际上不是第i个学生的分数。此外,请避免隐藏Python关键字和内置函数名,如min和max。请提供预期值。显示中间结果与预期结果的偏差。您发布的代码在缩进错误时失效,并且您没有显示任何跟踪问题的尝试。如果没有其他内容,请插入几个策略性放置的print
命令来跟踪程序流和数据值。这太完美了!我只有一个问题,那就是为什么你在最大分数上放了浮动(“inf”)?你知道我在最小分数上做了什么吗?我从无穷开始,这样其他值肯定会更低,因此它们会成为新的最小值。对于最大值,则正好相反。我从负无穷开始,所以其他值肯定会更高。明白了!我看到最小分数以无穷大开始,但现在明白为什么你对最大分数做了相反的事情了!非常感谢。
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}")