Python for循环返回IndexError:列表索引超出范围

rsc*_*rth 1 python for-loop list

我刚刚开始学习python.我试图找到数字列表中的最小整数.相反,我得到这个错误:

Traceback (most recent call last):
  File "H:/Python/untitled/08_python.py", line 32, in <module>
    if digits[e] < temp:
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

我意识到你可以使用min(数字),但我认为到目前为止我会挑战我的知识.我很可能犯了一个简单的错误,并没有正确诊断它.如果我在列表中抛出0,一切正常.

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

low = 0
temp = 0
for e in digits:
    if digits[e] < temp:
        low = digits[e]
    temp = digits[e]

print(low)
Run Code Online (Sandbox Code Playgroud)

tza*_*man 5

for e in digits直接遍历列表的内容.您不需要digits[e]在该点使用,因为e已经是值,而不是索引.这也是它失败的原因,因为digits[10]它超出了你的清单的末尾.

其他一些小注意事项 - 您的代码仅适用于您开始时的正数low = 0; 如果列表只有负数,那么你仍会得到0你的结果.
一种方法可以通过将其设置None为开头并检查它来避免这种情况:

low = None
for e in digits:
    if low is None or low < e:
        low = e
print(low)
Run Code Online (Sandbox Code Playgroud)