【问题标题】:Python turtle color changing and fillPython海龟变色和填充
【发布时间】:2019-05-29 13:33:54
【问题描述】:

当用户输入要绘制的正方形数量和这些正方形的大小时,此代码会绘制一个形状。我希望绘制的每个正方形的颜色都会改变,并让它被填充。但是代码卡住了:

import turtle
t = turtle.Turtle()

size = int(input("How long do you want the side lengths to be?"))
number = int(input("How many squares do you want in the image?"))
red = 40.0
blue = 30.0
green = 10.0

def square (size):
 count = 0
 while count < 4:
  t.forward(size)
  t.right(90)
  count = count + 1

def drawing(number):
  times = 0
  while times < number:
    t.pencolor(red, blue, green)
    t.fillcolor(red, blue, green)
    t.begin_fill()
    square(size)
    t.right(360/number)
    if t.filling():
      t.pensize(5)
    else:
      t.pensize(3)
    t.color()
    (red + 1, blue + 1, green + 1)
    times = times + 1

drawing(number)

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    您的代码存在几个问题 - 主要问题是您使用了错误的颜色模型。默认情况下,海龟颜色被指定为介于 0.0 和 1.0 之间的浮点值。但是,如果您想使用代码中的值,我们可以通过colormode(255) 进行切换,它允许值从 0 到 255。

    接下来,begin_fill() 必须有一个匹配的 end_fill(),而您缺少的就是这个end_fill()。颜色按(red, green, blue) 的顺序指定,而不是(red, blue, green)。另外,如果您将pencolor()fillcolor() 都设置为相同的颜色,您可以简单地使用一个调用color()

    最后,这两个语句什么都不做:

    t.color()
    (red + 1, blue + 1, green + 1)
    

    就您的代码而言。你需要重新考虑它们。以下是我对您的代码的修改,它解决了上述问题和其他一些细节:

    from turtle import Screen, Turtle
    
    def square(size):
        count = 0
    
        if turtle.filling():
            turtle.pensize(5)
        else:
            turtle.pensize(3)
    
        while count < 4:
            turtle.forward(size)
            turtle.right(90)
            count += 1
    
    def drawing(number):
        red = 30
        green = 10
        blue = 20
    
        times = 0
    
        while times < number:
            turtle.color(red % 255, green % 255, blue % 255)
    
            turtle.begin_fill()
            square(size)
            turtle.end_fill()
    
            turtle.right(360 / number)
    
            red, green, blue = red + 20, green + 30, blue + 10
            times += 1
    
    size = int(input("How long do you want the side lengths to be? "))
    number = int(input("How many squares do you want in the image? "))
    
    screen = Screen()
    screen.colormode(255)
    
    turtle = Turtle()
    turtle.speed('fastest')  # because I have no patience
    
    drawing(number)
    
    screen.exitonclick()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多