1

その人が欲しい星の数に基づいてランダムに星を描く関数を書く必要があります。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
4

1 に答える 1

3

関数を呼び出すには、関数名の後にかっこを置きます。

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

night_sky()必ずスクリプトの最後で呼び出してください。現在、

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

呼ばれています。そのため、星は 1 つしか表示されません。


関数lengthは、使用する必要がありxます。それ以外の場合は、デフォルトで返されます。yreturnNone

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

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

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

abc、およびdを定義するステートメントをループに移動する必要があります。これは、同じ星が何度もwhile描画されないようにするためです。zここまで来たら、while-loop はより単純にfor-loop として書くことができます:

   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()
于 2013-04-01T17:26:12.370 に答える