首页 > 解决方案 > TypeError:“浮动”对象在嵌套列表中不可迭代

问题描述

TypeError: 'float' object is not iterable. 

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

问题:给定 N 个学生的物理课中每个学生的姓名和成绩,将它们存储在嵌套列表中,并打印任何成绩第二低的学生的姓名。

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())

标签: python

解决方案


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

我也强烈建议不要将max其用作变量名,因为它会替换内置函数。

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=': ')

推荐阅读