[英]Getting “NameError: name 'a' is not defined” even though variable 'a' is available holding an integer value
[英]Getting NameError even though variable is defined
我試圖找到將b
的所有元素均分的所有數字。
這是我的代碼:
a = [2, 4]
b = [16, 32, 96]
maxOfb = max(b)
factorOfb = []
for i in range(1, int(maxOfb/2)):
if all(j % i == 0 for j in b):
factorOfb.append(j)
print(factorOfb)
當我執行它時,它給出了這個錯誤:
NameError: name 'j' is not defined
請注意,錯誤是由以下行引起的:
factorOfb.append(j)
而不是if all(j % i == 0 for j in b)
。
這是因為j
在生成器的本地 scope中。 因此,一旦生成列表, j
也將不可用於程序的其他部分,直到j
被顯式定義為全局變量(我不知道是否可以在生成器表達式中執行此操作)
正如@Tomerikoo
所說,您想要 append 的元素是i
而不是j
。 您應該可以使用 append i
,因為它位於 function 的 scope 中。
建議:要解決問題,您還可以找到GCD(或 HCF) ,然后將 GCD 分解以得到答案。
但是,既然你問了,如果你真的想 append j
你可以試試下面的:
a = [2, 4]
b = [16, 32, 96]
maxOfb = max(b)
ls = []
for i in range(1, int(maxOfb/2)):
if all([j % i == 0 or ls.append(j) for j in b]):
pass
print(ls)
解釋: ls.append()
function 返回NoneType
object。 NoneType object 的NoneType
是False
。 因此,使用or
運算符然后調用append()
function 將同時 append 將元素添加到列表中,並且也不會偏離所需的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.