def myMax(L):
print(L)
f=len(L)
ind=0
maxx=L[0]
for i in range(len(L)):
if L[i]>maxx:
maxx=L[i]
ind=i
return (ind,maxx)
print(myMax([1, 2, -9, 10]))
print(myMax([]))
我對python很陌生。上面是我撰寫的代碼,它接受一個串列作為輸入并回傳一個帶有最高數字索引和最高數字本身的元組。
出于某種原因,我在第 5 行收到“IndexError:list index out of range”,其中“maxx=L[0]”
任何幫助,將不勝感激
uj5u.com熱心網友回復:
您將空串列: 傳遞myMax([])給函式并指向此空串列的第一個元素L[0]。您需要檢查串列L是否不為空。
添加以下作為函式的第一行將幫助您防止 None 或空串列
if L is None or len(L) == 0:
raise ValueError('Input list can not be None or empty')
uj5u.com熱心網友回復:
因為您是在代碼最后一行的空串列上呼叫該函式。
print(myMax([]))
您傳遞給 myMax 函式的引數是長度為零的 []。當您呼叫第五行時,您實際上是在嘗試訪問串列的第一個元素,它確實存在。實際上,Python 中的串列索引從 0 到 n - 1,其中 n 是串列的大小。
默認情況下,當您嘗試訪問它不包含的索引上的陣列時,解釋器會引發例外IndexError: list index out of range。有幾種方法可以處理這種情況,例如try except控制元件,但在您的情況下,由于回傳整數的函式,我建議您在最后附加一個控制元件,以便在這種情況下回傳 -1。
def myMax(L):
if len(L) == 0:
return -1
# your code here
通過這種方式,您將不會嘗試越界訪問,并且您有一個表示發生錯誤的回傳代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363900.html
