编写一个函数,要求用户输入颜色,然后用该颜色填充形状

时间:2018-01-21 01:29:06

标签: python python-3.x turtle-graphics

我的任务是编写一个函数drawCircle(radius,fillColor),询问用户圆的特定半径以及他们想要填充圆的颜色。

我有圆绘图,但我正在努力让圆圈填充用户定义的颜色。任何帮助将不胜感激。

import turtle

def drawCircle(radius, fillColor):
    x=360/300 #This gives the angle
    r=radius#This is the radius of the circle.
    c=fillColor
    c=str("")
    z=1 #Placeholder for the while loop.
    win=turtle.Screen()
    tom=turtle.Turtle()

    fillColor=tom.color()
    tom.begin_fill()

    while (z<=300):
        tom.forward(r)
        tom.right(x)
        tom.forward(r)
        z=z+1
win.exitonclick()
tom.end_fill()

这是我的函数调用:drawCircle(1,"red")

3 个答案:

答案 0 :(得分:1)

您的代码存在一些问题:

  1. 你在tom.end_fill之前调用win.exitonclick,所以programm在填充之前退出(因为它发生在end_fill上)
  2. 你做&#34; fillColor = tom.color()&#34;与你获得当前的颜色。而是使用&#34; tom.fillcolor(fillColor)&#34;
  3. 不必要地复制变量radius-&gt; r和fillColor-&gt; c
  4. 这是python。尽可能使用。而不是使用z计数:

    for _ in range(300):

  5. 我的最终代码:

    import turtle
    
    def drawCircle(radius, fillColor):
        x = 360/300  # This gives the angle
        win = turtle.Screen()
        tom = turtle.Turtle()
    
        tom.fillcolor(fillColor)
        tom.begin_fill()
    
        for _ in range(300):
            tom.forward(radius)
            tom.right(x)
            tom.forward(radius)
    
        tom.end_fill()
        win.exitonclick()
    
    drawCircle(1, "red")
    

答案 1 :(得分:0)

  

我有圆圈画下来

解决个够问题之前,我&#39; D认为你的前提ISN&#39;吨真的,你的唐&#39;吨的有圆拉了下来。正如@ Mysak0CZ所示,你的半径1的圆是巨大的 - 1是什么?您正在绘制一个圆圈,但却无法真正控制它的大小。

作为一名职业海龟争吵者,我会按照以下方式解决问题。不仅您的角度需要除以您计划绘制的线段数量,而且还需要根据请求的半径计算周长并将其切断。我在下面这样做,并且包括调用乌龟自己的.circle()方法,以表明我们处于正确的球场。我修复了你的小填充问题:

import math
from turtle import Turtle, Screen  # force object-oriented turtles

SEGMENTS = 60  # how many lines make up the circle

def drawCircle(radius, fillColor):

    distance = math.pi * radius * 2 / SEGMENTS  # circumference / SEGMENTS
    angle = 360 / SEGMENTS

    turtle.fillcolor(fillColor)
    turtle.begin_fill()

    for _ in range(SEGMENTS):
        turtle.forward(distance)
        turtle.left(angle)  # left for .circle() compatibility

    turtle.end_fill()

screen = Screen()
turtle = Turtle()

drawCircle(100, 'red')
turtle.circle(100)  # for comparison

screen.exitonclick()

enter image description here

答案 2 :(得分:0)

如果您正在浏览相同的 Python 学习资源,这里是我的粉红色圆圈代码。我认为原始代码缺少一个参数。

function loadCatPicture() {
  var img = document.getElementById('cat-picture');
  img.src = 'https://cataas.com/cat?ver=' + (new Date().getTime());
};

window.onload = function() {
  loadCatPicture();
};