2
我正在嘗試製作一個程序,用於計算6-9-20包中無法獲得的最大對象數量(塊)(我對python相當陌生,我試圖使用全局和非本地,但它也不工作)。NameError:未定義全局名稱'cb'
def nuggets(n):
x = 6
y = 9
z = 20
for i in range(0,n//x+1):
for j in range(0,n//y+1):
for k in range(0,n//z+1):
if i*x + j*y + k*z == n:
return [i,j,k]
return None
def cant_buy(n):
seq=0
for i in range(n):
p=nuggets(i)
if type(p)== list:
seq+=1
elif type(p)== None:
cb=i
seq=0
return cb
然後會出現這樣的錯誤: 回溯(最近最後一次通話): 文件 「」,1號線,在 cant_buy(12) 文件 「C:\ Python33 \ OCW 6.00 \ ps2a.py」 ,第22行,在cant_buy 返回cb NameError:全局名稱'cb'未定義
出錯了?我在elif語句中定義了它。
您的cb是在循環/分支語句中聲明/分配的。 如果這些路徑未被觸及,則cb變量不會被創建。 – Anycorn
您是否嘗試過函數內的代碼?我嘗試了掘金的開始,我得到了: >>> x = 6 >>> y = 9 >>> z = 20 >>>範圍(0,n // x + 1) [ 0] >>>範圍(0,N // Y + 1) [0] >>>範圍(0,N // Z + 1) [0] 不是以爲我就是你通緝。 – thefourtheye
如果您用您的意圖逐行添加註釋,我們可能會幫助您解決問題。我懷疑多個bug會導致cb保持未創建狀態。 – thefourtheye