2017-10-13 151 views
-1

我正在嘗試使用Turtle打印30個六角形,這些六角形是螺旋狀的,並且顏色從紅色變爲黑色。Turtle Gradient Color(評論代碼)

爲了改變(r,b,g)中的設定值,我在乘以for循環i,所以在某些時候它會超過r = 255。我包括if聲明擁有它不會超過這一點,但它給我的錯誤:

File "<ipython-input-4-35d45ac44fdd>", line 20 
    if r > '255' 
       ^
SyntaxError: invalid syntax 

是什麼原因造成這個錯誤?

僅供參考我使用Anaconda和Jupyter筆記本。

這裏是我的代碼:

import turtle 

def draw_hexagon (t, size): 
    n=6 
    angle= 360/n 
    for i in range(n): 
     t.forward(size) 
     t.left(angle) 

turtle.colormode(255) 
mega=turtle.Turtle() 
mega.speed(1000) 
leng = 100 
for i in range(30): 
    r = 5+(i*10) 
    g = 0 
    b = 0 
    color = (r, b, g) 
    if r > 255 
     print color(r,b,g) 
    mega.fillcolor(color) 
    mega.begin_fill() 
    draw_hexagon(mega, leng) 
    mega.end_fill() 
    leng = leng + 5 
    mega.left(5) 

turtle.exitonclick() 
+1

你缺少一個':',如果這是Python 3中,你錯過了'()'和'print' – mentalita

+0

哦,是的!好點,謝謝!但是,現在我正在運行它,它是這樣說的: –

+0

TurtleGraphicsError:錯誤的顏色序列:(265,0,0) –

回答

0

我的建議是不要使用if語句來繞過錯誤,而是解決你的數學,以避免它擺在首位。再加上一些代碼清理:

from turtle import Turtle, Screen 

MIN_COLOR = 5 
MAX_COLOR = 255 

COUNT = 30 
ANGLE = 5 

STARTING_LENGTH = 100 
LENGTH_INCREMENT = 5 

N = 6 

def draw_polygon(turtle, size): 
    angle = 360/N 
    for _ in range(N): 
     turtle.forward(size) 
     turtle.left(angle) 

screen = Screen() 
screen.colormode(255) 

mega = Turtle() 
mega.speed('fastest') 

length = STARTING_LENGTH 

for r in range(COUNT): 

    red = round(r * ((MAX_COLOR - MIN_COLOR)/(COUNT - 1))) + MIN_COLOR 

    color = (red, 0, 0) 

    mega.fillcolor(color) 
    mega.begin_fill() 
    draw_polygon(mega, length) 
    mega.end_fill() 

    length += LENGTH_INCREMENT 
    mega.left(ANGLE) 

mega.hideturtle() 
screen.exitonclick()