Python 类型错误:';浮动';对象在嵌套列表中不可编辑

Python 类型错误:';浮动';对象在嵌套列表中不可编辑,python,Python,在我的代码中,我使用了嵌套列表理解,分数是浮点值 问题:在一个由N名学生组成的物理课堂上,给出每个学生的姓名和成绩,将其存储在嵌套列表中,并打印出成绩第二低的任何学生的姓名 TypeError: 'float' object is not iterable. 所以,正如我在评论中所说,但更详细。您需要在列表中保留学生信息,然后对成绩进行排序以找到第二低的成绩,然后再次循环打印第二低的成绩 我还建议不要使用max作为变量名,因为它取代了内置名 if __name__ == '__main__'

在我的代码中,我使用了嵌套列表理解,分数是浮点值


问题:在一个由N名学生组成的物理课堂上,给出每个学生的姓名和成绩,将其存储在嵌套列表中,并打印出成绩第二低的任何学生的姓名

TypeError: 'float' object is not iterable. 

所以,正如我在评论中所说,但更详细。您需要在列表中保留学生信息,然后对成绩进行排序以找到第二低的成绩,然后再次循环打印第二低的成绩

我还建议不要使用
max
作为变量名,因为它取代了内置名

if __name__ == '__main__':
    for _ in range(int(input())):
        name = input()
        score = float(input())
l=[[x,y] for x in name for y in score if (max(score)-y) > 0]
max=l[0]
for mark in l:
    if mark[1]>max[1]:
        max=mark
m=[x[0] for x in l  if (max-x[1])==0]
print(m.sort())

我对第一条评论做了一些改进:

students = []
for i in range(1, int(input("How many students? "))+1):
    name = input(f"What is student {i}'s name? ")
    score = float(input(f"What is student {i}'s grade? "))
    students.append([name, score])

second_lowest_grade = sorted({s[1] for s in students})[1]

for student in students:
    if student[1] == second_lowest_grade:
        print(*student, sep=': ')
因此,您可以这样执行:

#!/usr/bin/env python

students = []
for i in range(1, int(input("How many students? "))+1):
    name = input(f"What is student {i}'s name? ")
    score = float(input(f"What is student {i}'s grade? "))
    students.append([name, score])

student_with_second_lowest_grade = sorted(students, key=lambda t:t[1])[1]
print("Student {0} has the second lowest grade={1}!".format(*student_with_second_lowest_grade))

FYI

分数
是一个数字,而不是一个可数。因此,中y的
不是一个有效的语句为什么不在嵌套列表中使用compreh给定N个学生的物理课中每个学生的姓名和成绩,将其存储在嵌套列表中,并打印出成绩第二低的任何学生的姓名。--问题在第一个循环之前需要有一个列表,然后追加[name,score]对于每个迭代。然后根据你的解释进行分类。如果列表中有小白鼠的话。是否有效?是的,请尝试查看列表中是否有重复项。示例分数=[2,7,7,6,]
# python3 test.py 
How many students? 4
What is student 1's name? John
What is student 1's grade? 10
What is student 2's name? Mary
What is student 2's grade? 9
What is student 3's name? Ken
What is student 3's grade? 8
What is student 4's name? Peter
What is student 4's grade? 7
Student Ken has the second lowest grade=8.0!