我需要编写一个函数,根据人们想要多少个星星的问题来绘制随机星。 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
答案 0 :(得分:3)
要调用函数,请在函数名称后加上括号:
a=random_color()
b=length()
c=x()
d=y()
确保在脚本末尾调用night_sky()
。目前,只有
star('red',100,0,0)
正在被召唤。这就是为什么你只看到一颗星。
函数length
,x
和y
需要使用return
。否则,默认情况下会返回None
。
def length():
return randrange(5,71)
def x():
return randrange(-280,281)
def y():
return randrange(-200,201)
您需要将定义a
,b
,c
和d
的语句移至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}}