這個問題在這里已經有了答案: “UnboundLocalError:在分配之前參考的區域變數”在 if 陳述句之后 7 個答案 1 小時前關閉。
此 Python 程式將確定輸入陣列是否為山陣列。我已經在我制作的其他程式中找到了關于 stackoverflow 的相同錯誤的答案,但不是這個。當輸入有效的山陣列時,它似乎沒有問題,但是當我更改測驗陣列的前半部分使其無效時,我遇到了問題。而不是它回傳 False,這是目標,我得到了這個錯誤:UnboundLocalError: local variable 'y' referenced before assignment. z另外,我對變數也遇到了同樣的錯誤,所以我添加了else陳述句并修復了它。無法弄清楚為什么它也沒有修復y變數。這是我的代碼:
def validMountainArray(arr):
maxElem = max(arr)
maxIndex = arr.index(maxElem)
if len(arr) < 3:
return False
else:
beginning = arr[:maxIndex]
end = arr[maxIndex 1:]
for i in range(1, len(beginning) - 1):
if beginning[i 1] > beginning[i]:
y = True
else:
y = False
for i in range(1, len(end) - 1):
if end[i 1] < end[i]:
z = True
else:
z = False
if y == True and z == True:
return True
else:
return False
uj5u.com熱心網友回復:
不能保證執行這些 for 回圈。該范圍可能以 0 數字結束,因此不會發生回圈,并且永遠不會分配 y 和/或 z。要解決此問題,請在函式開頭將這些變數定義為 False。
def validMountainArray(arr):
y = False
z = False
maxElem = max(arr)
maxIndex = arr.index(maxElem)
# etc
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/419125.html
標籤:
