int()的基数为10的无效文字:' john'

时间:2017-11-02 12:34:40

标签: python python-3.x list nested

我正在尝试在列表中打印第二低等级,如

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中提到的嵌套列表的形式获取输入。有人可以帮帮我吗?

1 个答案:

答案 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

因此,当代码运行时,您首先需要输入一个数字,而不是名称。