我正在尝试在列表中打印第二低等级,如
students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]
我使用了以下代码:
a = [[input(), float(input())] for i in range(int(input()))]
s = sorted(set([x[1] for x in a]))
for name in sorted(x[0] for x in a if x[1] == s[1]):
print (name)
但我得到的错误是:
Traceback (most recent call last):
File "test.py", line 1, in <module>
a = [[input(), float(input())] for i in range(int(input()))]
ValueError: invalid literal for int() with base 10: 'john'
不确定如何以students
中提到的嵌套列表的形式获取输入。有人可以帮帮我吗?
答案 0 :(得分:2)
a = [[input(), float(input())] for i in range(int(input()))]
在这种情况下,input()
调用按以下顺序执行:
[[input(), float(input())] for i in range(int(input()))]
# 2 3 1
您可以使用提示确认:
a = [[input('input name\n'), float(input('input grade\n'))]
for i in range(int(input('input num of students\n')))]
将输出:
>> input num of students
1
>> input name
'a'
>> input grade
1
因此,当代码运行时,您首先需要输入一个数字,而不是名称。