【问题标题】:why is 'list index out of range' showing?为什么显示“列表索引超出范围”?
【发布时间】:2021-02-02 18:52:52
【问题描述】:
n = int(input())
students = list()
for i in range(0,n):
    students[i][0]=input("Name: "); students[i][1]=float(input("Grade: "))

我编写了这段代码,但显示“列表索引超出范围”。我不明白为什么会这样。

    ---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-46-966bd0f334a2> in <module>
      1 n = int(input())
      2 for i in range(0,n):
----> 3     students[i][0]=input(); students[i][1]=float(input())

IndexError: list index out of range

请帮忙。

【问题讨论】:

  • a 是一个空列表。所以它没有a[0] 可分配给。
  • students 里面是什么?
  • 对不起,我必须再次编辑。这是我的第一个问题,所以我很抱歉。这里 student[i][0] 应该存储学生姓名,student[i][1] 应该存储成绩

标签: python list range traceback


【解决方案1】:

您的代码不起作用的原因是您尝试分配students[i],而students 是一个空列表。同样,当students[i] 甚至不存在时,您尝试分配students[i][0] 和students[i][1]!

解决方案很简单:不要分配给列表 (x[1] = 3),而是附加到列表 (x.append(3))。

n = int(input())
students = list()
for i in range(0,n):
    students.append([]) # Must add empty list otherwise students[i] doesn't exist
    students[i].append(input("Name: ")); students[i].append(float(input("Grade: ")))
    
print(students)
# Prints [['a', 1.0], ['b', 2.0], ['c', 3.0]]
# after inputting 3, a, 1, b, 2, c, 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2014-04-10
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多