![](/img/trans.png)
[英]How to set variable value at x[3]=6 (not initial condition) in Python Gekko?
[英]In what condition must define or initial variable in python
我的程序有問題。 代碼如下:
def getHeight(self,root):
#Write your code here
if not root:
return -1
if root.left:
i = self.getHeight(root.left) + 1
if root.right:
j = self.getHeight(root.right) + 1
return max(i, j)
引發錯誤:
Traceback (most recent call last):
File "solution.py", line 37, in
height=myTree.getHeight(root)
File "solution.py", line 23, in getHeight
i = self.getHeight(root.left) + 1
File "solution.py", line 23, in getHeight
i = self.getHeight(root.left) + 1
File "solution.py", line 27, in getHeight
return max(i, j)
UnboundLocalError: local variable 'i' referenced before assignment
如果我加上i, j = 0, 0
它將很好地工作。
和以下代碼:
if True:
i = 1 + 1
該代碼無需初始化即可正常運行。 有人可以解釋一下區別嗎?
當您編寫i, j = 0, 0
,您會將兩個變量都初始化為0
。
當您編寫i = 1 + 1
,您正在將i
初始化為2
,並且因為這是在if True
內的,所以始終會執行該代碼。 因此,您無需編寫if True
因為它會產生相同的效果。
為了清楚起見,您始終需要在讀取變量之前初始化變量。 總是。 我的意思是,您對代碼的兩次更正實際上都在初始化這些變量。 這就是為什么他們工作。
條件總是。
需要定義要使用的變量。 如果條件為假,則未定義變量。
您可以改用三元語句來減輕問題
def getHeight(self,root):
if not root:
return -1
i = self.getHeight(root.left) + 1 if root.left else 0
j = self.getHeight(root.right) + 1 if root.right else 0
return max(i, j)
我認為您應該在引用變量之前對其進行初始化。 在您的代碼中,max函數將i,j作為參數,因此i,j需要初始化。 if語句不能確保初始化,因此編譯器會給您錯誤。
如果為true:i = 1 +1
這段代碼只是給i賦值2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.