2016-05-17 74 views
0

我想寫的代碼繪製列表中的長度寬度對代表的每個矩形雙方在包含在列表中相同索引的xy座標coords麻煩在Python循環中行走並行列表

其中變量座標包含大小爲2的子列表,其中每個值代表x和y座標。

而變量端還包含大小爲2的子列表,每個值表示長度,然後表示矩形的寬度。

我已經寫了一個叫做draw_rectangle的函數,它使用兩個整數代表長度,然後是矩形的寬度。

話雖如此,我很困惑做一個for循環。 這是我想出了,似乎不工作

for pair in sides: 
    penup() 
    goto(coords[index]) 
    pendown() 
    draw_ractangle(sides[index][0], sides[index][1]) 

還是我去

for draw_ractangle() 

有什麼建議?謝謝

+0

現在使用當前的代碼會發生什麼? – danidee

+0

這是行不通的,因爲你還沒有告訴Python'索引'是什麼。然而,還有一個更好的方法:你可以使用內置的'zip'函數並行地循環'coords'和'sides',你可以在[tutorial](https://docs.python.org /3/tutorial/datastructures.html#looping-techniques)。 –

回答

0

這似乎是enumerate()和結構分配的問題:

sides = [(34, 23), (65, 72)] 
coords = [(10, 100), (-45, 60)] 

# ... 

for index, (width, height) in enumerate(sides): 
    penup() 
    goto(coords[index]) 
    pendown() 
    draw_rectangle(width, height) 
0

我寧願看到帶拉鍊處理:

for (location, dimensions) in zip(coords, sides): 
    penup() 
    goto(location) 
    pendown() 
    draw_rectangle(*dimensions) 

一般來說,蟒蛇風格傾向於避免循環遍歷索引以支持循環內容。通過創建元組列表,zip函數是實現這一功能的一個很好的方法。 我留下了關於平行列表模式的問題,該列表模式通常很脆弱並且易於破損,並且希望看到表示要繪製每個對象的數據結構,以避免位置和維度不同步的危險。