簡體   English   中英

如何解決“ IndexError:列表索引超出范圍”

[英]How to fix “IndexError: list index out of range”

我正在嘗試計算列表中遲到的數量(負數)。 輸入數據后,我得到了回溯

'IndexError: list index out of range'

巴士路線被分成4個星期,每個星期有5個值(“工作日”)。 代碼要做的第一件事是將這周的時間加在一起,以合並整個路線的一個列表。 然后,您在for in循環中對每個值進行計數,看是否為負數,然后將其添加到稱為“ VarBUSANoLate”的計數中

VarBUSANoLatelist = (VarBUSA1 + VarBUSA2 + VarBUSA3 + VarBUSA4)
for Counter in VarBUSANoLatelist[0:20]:
    if VarBUSANoLatelist[Counter] < 0:
        VarBUSANoLate = VarBUSANoLate + 1

我應該以該組遲到的Number結尾,但只會收到此錯誤“ IndexError:列表索引超出范圍”

有兩種迭代for循環的方法,並且您混合了兩種方法。

  1. 第一種方法是使用索引

     for Counter in range(20): if VarBUSANoLatelist[Counter] < 0: VarBUSANoLate = VarBUSANoLate + 1 
  2. 另一種方法是使用數組本身中的元素

     for Counter in VarBUSANoLatelist[0:20]: if Counter < 0: VarBUSANoLate = VarBUSANoLate + 1 

您誤解了for循環; 您的變量Counter包含值,而不是值的索引。 並且由於它們是值,因此如果值恰好大於列表中的元素數,則部分VarBUSANoLatelist[Counter]將引發錯誤。

這意味着您可以將循環更改為此:

for v in VarBUSANoLatelist[0:20]:
    if v < 0:
        VarBUSANoLate = VarBUSANoLate + 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM