在python中绘制与龟的星星

时间:2013-04-01 17:19:04

标签: python turtle-graphics

我需要编写一个函数,根据人们想要多少个星星的问题来绘制随机星。 a =颜色,b =长度,c,d是起始坐标。我不确定我哪里出错了任何提示,提示或帮助都会受到赞赏。

import turtle
from random import*
def star(a,b,c,d):
    x=5
    y=0
    turtle.color(a)
    turtle.begin_fill()
    turtle.penup()
    turtle.goto(c,d)
    turtle.pendown()
    while x>0:
        turtle.forward(b)
        turtle.right(144)
        turtle.forward(b)
        x-=1
    turtle.end_fill()

star('red',100,0,0)

def random_color():
    randvar=randrange(0,5)
    if randvar==0:
        return ('red')
    elif randvar==1:
        return ('blue')
    elif randvar==2:
        return ('green')
    elif randvar==3:
        return ('yellow')
    else:
        return ('black')

def length():
    randvar=randrange(5,71)

def x():
    randvar=randrange(-280,281)

def y():
    randvar=randrange(-200,201)

def night_sky():
   z=int(input('How many stars do you want?'))
   a=random_color
   b=length
   c=x
   d=y
   while z>0:
       star(a,b,c,d)
       z-=1

1 个答案:

答案 0 :(得分:3)

要调用函数,请在函数名称后加上括号:

   a=random_color()
   b=length()
   c=x()
   d=y()

确保在脚本末尾调用night_sky()。目前,只有

star('red',100,0,0)

正在被召唤。这就是为什么你只看到一颗星。


函数lengthxy需要使用return。否则,默认情况下会返回None

def length():
    return randrange(5,71)

def x():
    return randrange(-280,281)

def y():
    return randrange(-200,201)

您需要将定义abcd的语句移至while - 循环中,以免绘制相同的星号z次。while次。在我们处理它的同时,for - 循环可以更简单地写成 for i in range(z): a=random_color() b=length() c=x() d=y() star(a,b,c,d) - 循环:

def star(color, side_length, x, y):
    print(color, side_length, x, y)
    turtle.color(color)
    turtle.begin_fill()
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    for i in range(5):
        turtle.forward(side_length)
        turtle.right(144)
        turtle.forward(side_length)
    turtle.end_fill()

如果您使用更具描述性的变量名称,您的代码将变得更加自我记录:

import turtle
import random

def star(color, side_length, x, y):
    print(color, side_length, x, y)
    turtle.color(color)
    turtle.begin_fill()
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    for i in range(5):
        turtle.forward(side_length)
        turtle.right(144)
        turtle.forward(side_length)
    turtle.end_fill()


def random_color():
    randvar = randrange(0, 5)
    if randvar == 0:
        return ('red')
    elif randvar == 1:
        return ('blue')
    elif randvar == 2:
        return ('green')
    elif randvar == 3:
        return ('yellow')
    else:
        return ('black')


def length():
    return random.randrange(5, 71)


def xcoord():
    return random.randrange(-280, 281)


def ycoord():
    return random.randrange(-200, 201)


def night_sky():
    z = int(input('How many stars do you want?'))
    for i in range(z):
        color = random_color()
        side_length = length()
        x = xcoord()
        y = ycoord()
        star(color, side_length, x, y)

night_sky()

因此,通过这些更改,代码变为:

{{1}}