Python 为什么即使有一段代码没有执行,也会发生错误?

Python 为什么即使有一段代码没有执行,也会发生错误?,python,error-handling,Python,Error Handling,我有以下代码: lista = ["T","E","S","T"] for i in range (20): if i <= len(lista): print(lista[i]) 现在,对我来说这没有意义,因为我正在用if命令测试列表索引是否超出范围。为什么会发生这种情况?列表的len()将高于允许的索引。如果lista=[“T”、“E”、“S”、“T”]->len(lista)->4(列表中有4项)。然而,对于0索引,它对应于0、1、2和3的索引……没有“4”

我有以下代码:

lista = ["T","E","S","T"]
for i in range (20):
    if i <= len(lista):
        print(lista[i])
现在,对我来说这没有意义,因为我正在用
if
命令测试列表索引是否超出范围。为什么会发生这种情况?

列表的
len()
将高于允许的索引。如果
lista=[“T”、“E”、“S”、“T”]
->
len(lista)
->4(列表中有4项)。然而,对于0索引,它对应于0、1、2和3的索引……没有“4”索引。您可以尝试:

lista = ["T","E","S","T"]
for i in range (20):
    if i <= len(lista) - 1: # account for index error
        print(lista[i])
lista=[“T”、“E”、“S”、“T”]
对于范围(20)内的i:

如果我问题是你的支票不正确。包含4个元素的列表中的最后一个索引是3,而不是4(请记住,索引从0开始,而不是1)

将支票更改为:

if i <= len(lista) - 1:
或者,更好的是,直接在列表上循环:

for elem in lista:
    print(elem)

或者只需使用
@Carcigenicate yes,这也是有效的!我只是想表明,如果显式地将其减少1以避免“off by one”错误,那么它将起作用。如果我
@ZadSar不愚蠢,只是错误地思考问题,那么使用
会更简单。每个人都会这样。
for i in range(len(lista)):
    print(lista[i])
for elem in lista:
    print(elem)