2016-09-27 81 views
0

我正在研究一個簡單的python程序,它提示用戶輸入多邊形的邊長,程序(使用turtle)將隨機繪製多邊形已使用的random.randint設置顏色使用一組隨機顏色在Python中繪製多邊形

到目前爲止我的代碼是:

import turtle 

polygonSideLength = int(input('Enter length of polygon side: \n')) 
numberOfSides = 5 + (7/4) 
turnAngle = 360/numberOfSides 

import random 
randomColor = random.randint(0,5) 
if randomColor == 0: 
    fillcolor="red" 
elif randomColor == 1: 
    fillcolor="green" 
elif randomColor == 2: 
    fillcolor="blue" 
elif randomColor == 3: 
    fillcolor="cyan" 
elif randomColor == 4: 
    fillcolor="magenta" 
elif randomColor == 5: 
    fillcolor="yellow" 


turtle.begin_fill() 
turtle.pen(pensize = 5, pencolor="black", fillcolor = randomColor) 

for i in range(numberOfSides): 
    turtle.forward(polygonSideLength) 
    turtle.right(turnAngle) 
turtle.end_fill() 
turtle.done() 

我發現代碼中的問題與「填充顏色= randomColor」

錯誤我收到的是「未知顏色名稱:5」 我知道randint正在工作,因爲有時錯誤會給我1,2,3,4,5

所以總結一下,如何獲得fillcolor以匹配隨機randint中設置的顏色?

+0

您可以使用['random.choice'](https://docs.python.org/2/library/random.html#random.choice)來簡化您的代碼。那麼我認爲你需要'turtle.pen'調用中的'fillcolor = fillcolor'? – stellasia

+0

我正在研究的項目中,我必須使用imput random(random.randint)。我一直在嘗試調整代碼,但仍然出現錯誤。我對python非常陌生,所以簡單地說,對我來說最好的方法是使用 –

回答

0

我同意,你是選擇一個隨機的顏色與

randomColor = random.randint(0,5) 

但是當你想隨機顏色設置爲你的多邊形

你指定一個整數(randomColor變量的值的事實)而不是字符串(fillcolor變量的值)

fillcolor變量應該是一個帶有顏色名稱值(「藍色」,「白色」,「紅色」等)的字符串類型,但永遠不會是整數。

,可能會請你更改以下行:

turtle.pen(pensize = 5, pencolor="black", fillcolor = randomColor) 

turtle.pen(pensize = 5, pencolor="black", fillcolor = fillcolor) 
+0

。但是我收到一個新的錯誤:Traceback(最近一次調用最後一次): 文件「C:/Python33/pol1.py」,第11行,在 處於i範圍內(numberOfSides): TypeError:'float'object不能被解釋爲一個整數 –

+0

不知道最後一條評論。我發現這是我的數學,使它成爲一個浮動。 (fillcolor = fillcolor)確實修復了它。我以爲我早些時候嘗試過,它沒有工作,但現在它爲我工作。謝謝你們的幫助 –

+0

如果問題解決了,你可以儘快關閉這個問題。 –

0

我同意@stellasia是random.choice()是最好的選擇,但如果你需要使用random.randint()相反,這裏是一個方式做到這一點:

import turtle 
import random 

COLORS = ["red", "green", "blue", "cyan", "magenta", "yellow"] 

fillcolor = COLORS[random.randint(0, len(COLORS) - 1)] 
turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor) 

numberOfSides = 6 
turnAngle = 360/numberOfSides 

polygonSideLength = int(input('Enter length of polygon side: ')) 

turtle.begin_fill() 
for _ in range(numberOfSides): 
    turtle.forward(polygonSideLength) 
    turtle.right(turnAngle) 
turtle.end_fill() 

turtle.done() 

以上很容易就可以

fillcolor = random.choice(COLORS) 

另一種方式的顏色選擇可以去是完全隨機的,使用random.random(),並改變了前幾行:

import turtle 
import random 

fillcolor = (random.random(), random.random(), random.random()) 
turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor) 

... 

這裏後通過替換fillcolor分配行改爲random.choice()而不是顏色名稱,我們使用了另一種可能性,即烏龜顏色允許哪些是RGB三元組,例如:(0.5,0.9,0.1)有兩種烏龜RGB三重模式:0.0到1.0,上面使用的默認值和0到我們使用turtle.colormode(255)選擇的255。這意味着我們可以重新使用random.randint(),仍然有完全隨機的顏色:

turtle.colormode(255) 
fillcolor = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) 
turtle.pen(pensize=5, pencolor="black", fillcolor=fillcolor) 

所以我們現在有兩個完全不同的方式來挑選使用turtle.randint()隨機顏色。