2016-04-29 88 views
0

當我使用if語句時,我將如何循環下面的代碼,我一直收到錯誤。我試圖讓下面的號碼打印出來,511887和使用條件語句比較每4位二進制數,但我不斷收到一個錯誤:NameError: name 'bin_list' is not defined爲什麼當我想要循環時出現錯誤

x=("bin_list") 

y=("bin_list[SN_0]") 
["0001"] 

"0101" 
"0001" 
"0001" 
"1000" 
"1000" 
"0111" 

SN_bin_0 = bin_list[SN_1] 
for x in range (0,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_1 = bin_list[SN_5] 
    for x in range (1,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_2 = bin_list[SN_1] 
    for x in range (2,7): 
    for index in range(len(L)): 
     print (y) 


SN_bin_3 = bin_list[SN_1] 
    for x in range (3,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_4 = bin_list[SN_8] 
    for x in range (4,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_5 = bin_list[SN_8] 
    for x in range (5,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_6 = bin_list[SN_7] 
    for x in range (6,7): 
    for index in range(len(L)): 
     print (y) 
+0

什麼是你得到的錯誤?它看起來像你的縮進全是古怪的。 – Will

+0

SN_bin_0 = bin_list [SN_1] NameError:name'bin_list'沒有被定義,但我已經從代碼中定義了變量 –

+0

,它看起來像你沒有定義'bin_list'。你正在定義'x'併爲其分配字符串''bin_list「'。看起來你正在用'y'做類似的事情。 – Will

回答

0

它看起來像有你的代碼的幾個問題。下面是不是有效的Python:

x=("bin_list") 

y=("bin_list[SN_0]") 
["0001"] 

"0101" 
"0001" 
"0001" 
"1000" 
"1000" 
"0111" 

我想你想要的是有一個列表,它可以像這樣來完成這些值:

bin_list = ["0101", "0001", "0001", "1000", "1000", "0111"] 

接下來,您要訪問使用列表一個未定義的變量。您需要預先使用整數或定義SN_0

y = bin_list[0] 

​​

最後,你的縮進關上大部分的循環。您有:

SN_bin_1 = bin_list[SN_5] 
    for x in range (1,7): 
    for index in range(len(L)): 
     print (y) 

你想:

SN_bin_1 = bin_list[SN_5] 
for x in range (1,7):  # <-- one less indent here 
    for index in range(len(L)): 
    print (y) 

我不能確切地告訴你的代碼的意思做,好像你不使用你的許多變量,而你的目標打印值爲y一定的時間。一旦你修復了這些錯誤,如果代碼仍然沒有達到你想要的目標,請打開一個新的問題。

1

1列清單

而是寫的:

["0001"] 
"0101" 
"0001" 
"0001" 
"1000" 
"1000" 
"0111" 

你可以把它的列表:

bin_list = ["0101","0001","0001","1000","1000","0111"] 

說明

  • 這是製作清單的正確方法:variable = [item1,item2,item3]
  • 它應該是一個清單,因爲稍後您將使用索引來引用其中的項目。例如,bin_List[1]將返回字符串"0001"

2。可變x

而是寫作的價值:

x=("bin_list") 

你應該這樣做:

x=(bin_list) 

說明

  • 引號上bin_list使得它字符串。您希望x的值爲列表bin_list
  • 在爲變量分配變量x之前,您必須創建(請參閱第1步)。

3的可變y

而是寫作的價值:

y=("bin_list[SN_0]") 

你應該這樣做:

y= bin_list[SN_0] 

說明

  • bin_list[SN_0]上的引號使其成爲字符串。您希望y的值爲列表bin_list的索引[SN_0]處的項目。

4.未定義可變

以下是未定義

[SN_0] 
[SN_1] 
[SN_5] 
[SN_8] 
L 

它們中的每一個需要的值,例如:

SN_0 = 0 
SN_1 = 1 
SN_5 = 5 
SN_8 = 8 
L = x 

說明

  • 未定義的變量將返回錯誤。
  • 它們必須在for循環中使用之前全部定義。
  • 如果L應該引用該列表,則可以將其替換爲x,因爲該列表已分配變量x

4。壓痕

下面的代碼有一個額外的縮進:

SN_bin_1 = bin_list[SN_5] 
    for x in range (1,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_2 = bin_list[SN_1] 
    for x in range (2,7): 
    for index in range(len(L)): 
     print (y) 


SN_bin_3 = bin_list[SN_1] 
    for x in range (3,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_4 = bin_list[SN_8] 
    for x in range (4,7): 
    for index in range(len(L)): 
     print (y) 

它應該是:

SN_bin_1 = bin_list[SN_5] 
for x in range (1,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_2 = bin_list[SN_1] 
for x in range (2,7): 
    for index in range(len(L)): 
     print (y) 


SN_bin_3 = bin_list[SN_1] 
for x in range (3,7): 
    for index in range(len(L)): 
     print (y) 

SN_bin_4 = bin_list[SN_8] 
for x in range (4,7): 
    for index in range(len(L)): 
     print (y) 
相關問題