【问题标题】:List : index out of range列表:索引超出范围
【发布时间】:2018-12-16 03:21:32
【问题描述】:

这是我的代码:

if __name__ == '__main__':
    n = int(input())
    for i in range(n):
        name = input()
        score = float(input())
        python_students = [[name, score]]
    z=len(python_students)
    for i in range(z):
        if python_students[i][1]<python_students[i+1][1]:
            list = [python_students[1]]
        list.sort()
        print(list)  

error : Traceback (most recent call last):
  File "solution.py", line 9, in <module>
    if python_students[i][1]<python_students[i+1][1]:
IndexError: list index out of range

我真的对这种类型的错误感到困惑,请解释一下并帮助我处理这段代码。

我正在尝试从列表中按字母顺序获取名称

【问题讨论】:

    标签: python list indexoutofboundsexception


    【解决方案1】:

    下面是简化的代码,你的代码有很多漏洞。您不应该使用 list 来存储列表元素,因为 list 是 python 提供的构建类。这不是一个好习惯。还可以使用 append 将元素附加到列表中。

    if __name__ == '__main__':
        python_students = []
        n = int(input())
        for i in range(n):
            name = input()
            score = float(input())
            python_students.append([name,score])
            #python_students = [[name, score]]
        z=len(python_students) - 1
        p_s = []
        for i in range(0,z):
            if python_students[i][1]<python_students[i+1][1]:
                p_s.append(python_students[1])
            p_s.sort()
        print(p_s)  
    

    【讨论】:

      【解决方案2】:

      z 应该是len(python_students)-1。在最后一次迭代中,python_students[i+1][1] 超出了列表的范围。

      【讨论】:

      • 如果对您有帮助,请考虑将我的答案标记为正确。
      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多