Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python打印最高分数和学生成绩名称?_Python_List_Nested Lists - Fatal编程技术网

如何使用python打印最高分数和学生成绩名称?

如何使用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] #首先,计算最大值和

我正在使用python创建一个代码,该代码接收列表列表作为参数。此列表包含学生的姓名和成绩。函数还必须打印具有最佳成绩及其最佳成绩的学生的姓名。当我创建代码并尝试运行它时,什么都没有发生,有没有办法改进我的代码?我期望的结果是“最好的学生是:卡罗琳,成绩为9.6”

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}")