当我运行此代码时,形状只出现在一个非常小的区域而不是整个乌龟屏幕,我想知道,为什么?我还需要能够拨打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()))
答案 0 :(得分:0)
将所有内容从shape3
移至文件的开头。除了冗余和混乱之外,我认为你的设计没有任何好处。
在方法之后添加空格。
使用random.choice
选择颜色。
您不要在矩形(乌龟)方法中使用乌龟。使用它。
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)
修复所有这些问题可以解决您的问题。
答案 1 :(得分:0)
您遇到问题的主要原因是您没有通过并正确使用turtle
函数传递rectangle()
参数 - 这也是您认为必须import
模块的原因在每个功能。
在您的代码中,传递给rectangle()
的参数名为turtle
,它与同一模块的名称冲突。然后立即import turtle
将参数的值替换为模块的值。我已经将参数的名称更改为a_turtle
以防止这种情况(并更好地描述它是什么)。这允许两个模块在脚本开头只被import
编辑一次。
我也终止了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()