2014-01-09 167 views
0

我正在寫一個簡單的Python程序,使用雙循環打印出一個具有唯一座標集的html頁面。我收到一個錯誤,因爲它無法識別循環中我擁有的變量(跨越+ node_counter)。我該如何做到這一點,以便它獲得頂部聲明的變量?循環訪問變量

game_counter = 0 

across0 = '72,70,97,70,97,61,116,71,97,83,97,75,72,75' 
across1 = '143,70,168,70,168,61,187,71,168,83,168,75,143,75' 
across2 = '212,70,237,70,237,61,256,71,237,83,237,75,212,75' 
across3 = '283, 70, 308, 70, 309, 61, 327, 71, 308, 83, 308, 75, 283, 75' 

while game_counter <60: 
    text_file.write("<!-- These are the image maps for game " + str(game_counter) + " -->\n\n") 
    node_counter = 0 

    while node_counter < 15: 
     placeholder_string = "" 
     placeholder_string += '<area shape="poly" coords = "' + (across + node_counter) + '" href="#"/>\n' 
     text_file.write(placeholder_string) 
     node_counter += 1 
     if node_counter == 15: 
      game_counter += 1 
+0

您不需要在循環結尾放置一個「繼續」,以便繼續進行下一次迭代。這隱含在循環本身中。 – user2357112

+1

'across + node_counter'應該是'across'?你從來沒有定義一個名爲'across'的變量。 – user2357112

+0

這就是我對此感到困惑的原因 - 我試圖訪問聲明爲top的across0,across1等。 – user2512696

回答

1

它看起來像你試圖迭代你的「跨越」變量。也許你的意思是這樣的:across = ['72...', '143...']。然後你就可以在acrossfor循環迭代:

for a in across: 
    print(a) 

我使用print作爲for循環會是什麼樣的例子。另外,如果您使用的是Python 2,則可以使用print a而不是print(a)

+0

這工作完美,謝謝! – user2512696

0

我想你的意思添加across0across1across2,並across3,不只是簡單的across

而且,你不需要這些continue語句。

0

您正在嘗試將變量across添加到node_counter,但您只定義了變量across0across1,...這就是爲什麼你會收到錯誤。

有幾個其他錯誤太

  • 存儲在數組的數組的跨值
  • 變化60在外環至4(更好是橫跨長度)
  • 改變內循環使用數組長度也是明智的
  • 更改across將在您的故障線上使用game_counter索引。
  • if行永遠不會執行,所以你會陷入無限循環。移動內部循環外的game_counter增量。

這讓下面的代碼

across = [[72,70,97,70,97,61,116,71,97,83,97,75,72,75], 
    [143,70,168,70,168,61,187,71,168,83,168,75,143,75], 
    [212,70,237,70,237,61,256,71,237,83,237,75,212,75], 
    [283, 70, 308, 70, 309, 61, 327, 71, 308, 83, 308, 75, 283, 75]] 

while game_counter < len(across): 
    text_file.write("<!-- These are the image maps for game " + str(game_counter) + " -->\n\n") 
    node_counter = 0 

    while node_counter < len(across[game_counter]): 
     placeholder_string = "" 
     placeholder_string += '<area shape="poly" coords = "' + (across[game_counter][node_counter] + node_counter) + '" href="#"/>\n' 
     text_file.write(placeholder_string) 
     node_counter += 1 

    game_counter += 1 

但你可能會與for循環,至少在內環更好:

for item in across[game_counter]: 
    ... 
    ... (item + node_counter) ... 
+0

是的 - 基於計數器的值是如何訪問跨越0,跨越1和跨越3? – user2512696