当我运行此代码时,形状仅出现在很小的区域,而不是整个乌龟屏幕,我想知道为什么? 我还需要能够调用shape_3 ,因此我必须将所有导入都放在def

这是我正在使用的代码:

def shape_3():
    import random
    import turtle
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
def rectangle(turtle):
    import random
    import turtle
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
    w = random.randint(10,45)
    h = random.randint(10,45)
    color = random.randint(0,2)
    if color == 0:
        alex.fillcolor("aqua")
        alex.color("aqua")
    else:
        alex.fillcolor("white")
        alex.color("white")
    alex.begin_fill()
    for i in range(2):
        alex.forward(h)
        alex.right(90)
        alex.forward(w)
        alex.right(90)
    alex.end_fill()
def random_rect():
    import random
    import turtle
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
    for i in range(300):
        x = random.randint(-480,480)
        y = random.randint(-405,405)
        alex.penup()
        alex.goto(x,y)
        alex.pendown()
        rectangle(alex)
print(shape_3(random_rect()))

===============>>#1 票数:0

将所有内容从shape3移动到文件的开头。 除了冗余和混乱之外,我看不到您的设计有任何好处。

在方法之后添加空格。

使用random.choice选择颜色。

您不要在矩形(turtle)方法中使用turtle。 用它。

import random
import turtle
wn = turtle.Screen()
wn.bgcolor("black")
alex = turtle.Turtle()
alex.speed(10000)
alex.ht()

def rectangle(turtle):
    w = random.randint(10,45)
    h = random.randint(10,45)
    color = random.choice("aqua", "white")
    turtle.fillcolor(color)
    turtle.color(color)
    turtle.begin_fill()
    for i in range(2):
        turtle.forward(h)
        turtle.right(90)
        turtle.forward(w)
        turtle.right(90)
    turtle.end_fill()

def random_rect():
    for i in range(300):
        x = random.randint(-480,480)
        y = random.randint(-405,405)
        alex.penup()
        alex.goto(x,y)
        alex.pendown()
        rectangle(alex)

解决所有这些问题应该可以解决您的问题。

===============>>#2 票数:0

造成问题的主要原因是您没有传递和使用turtle参数正确传递了rectangle()函数,这也是为什么您认为必须在每个函数中import模块的原因。

在您的代码中,传递给rectangle()的参数名为turtle ,它与同一模块的名称冲突。 然后,您立即import turtle ,它将用模块的值替换参数的值。 我已将参数的名称更改为a_turtle以防止出现这种情况(并更好地描述了它的含义)。 这允许在脚本开始时将两个模块import一次。

我还shape_3()shape_3()函数,该函数没有什么用,只是直接调用random_rect() (除此之外, shape_3()始终没有接受参数)。

import random
import turtle

def rectangle(a_turtle):
    w = random.randint(10,45)
    h = random.randint(10,45)
    color = random.randint(0,2)
    if color == 0:
        a_turtle.fillcolor("aqua")
        a_turtle.color("aqua")
    else:
        a_turtle.fillcolor("white")
        a_turtle.color("white")
    a_turtle.begin_fill()
    for i in range(2):
        a_turtle.forward(h)
        a_turtle.right(90)
        a_turtle.forward(w)
        a_turtle.right(90)
    a_turtle.end_fill()

def random_rect():
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
    for i in range(300):
        x = random.randint(-480,480)
        y = random.randint(-405,405)
        alex.penup()
        alex.goto(x,y)
        alex.pendown()
        rectangle(alex)

random_rect()

  ask by Levi translate from so

未解决问题?本站智能推荐: