2014-02-17 84 views
1
colours = [turtle.color("red"),turtle.color("blue"),turtle.color("yellow"),turtle.color("green")] 

fred = colours[0],turtle.forward(100),turtle.left(90),colours[1],turtle.forward(100),turtle.left(90),colours[2],turtle.forward(100),turtle.left(90),colours[3],turtle.forward(100),turtle.left(90) 

嘗試使用列表中的4種不同顏色的正方形,鍵入(colors [0])將返回Nonetype類。我怎樣才能訪問我的列表中的顏色?Python龜,使用列表中的顏色

+0

我似乎'turtle.color(「紅」)'返回'None'? – Carpetsmoker

+0

它,類型(turtle.color(「紅色」))返回無,但如果你輸入turtle.color(「紅色」)它會改變顏色。我認爲使用顏色[0]應該具有相同的效果,但它接受沒有輸出的命令。 – user3319894

回答

0

您的代碼:

colours = [turtle.color("red")]

將運行功能turtle.color("red"),並存儲在列表中的返回值。

這是正是一樣做:

colours = [None]

如果你打電話colours[0]你得到的返回值,而不是功能。 Python不知道None是通過函數調用結束的,還是手動分配的。

你只貼兩行代碼,所以我不太知道的背景是什麼在這裏,但你可以做一些事情,如:

colours = [lambda: turtle.color("red"), lambda: turtle.color("blue")] 

這個做什麼,是商店lamba(或'匿名函數')在你的列表中。此功能是未執行。現在,您將獲得:

>>> colours[0] 
<function <lambda> at 0x80089e710> 

並根據需要通過附加括號,像這樣就可以執行此多次:colours[0]()

這種技術被稱爲順便說一下「鑽營」。

+0

非常感謝,這是一個很好的清晰的解釋,並且完美地工作。 – user3319894