Turtle Gradient Color(评论代码)

问题描述:

我正在尝试使用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) –

我的建议是不要使用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()