Python 为什么我的代码在重复模式时会在不同的位置打印模式?
当你重复这个图案时,它总是在不同的地方打印雪人,到处都是雪人的身体,但是眼睛、按钮等都是正确的。我认为这是因为构成身体的圆圈大小不同,而且呈对角线打印。请帮忙,非常感谢Python 为什么我的代码在重复模式时会在不同的位置打印模式?,python,turtle-graphics,python-turtle,Python,Turtle Graphics,Python Turtle,当你重复这个图案时,它总是在不同的地方打印雪人,到处都是雪人的身体,但是眼睛、按钮等都是正确的。我认为这是因为构成身体的圆圈大小不同,而且呈对角线打印。请帮忙,非常感谢 # Import required module import turtle # Create turtle object t = turtle.Turtle() # Create a screen screen =turtle.Screen() # Set background color s
# Import required module
import turtle
# Create turtle object
t = turtle.Turtle()
# Create a screen
screen =turtle.Screen()
# Set background color
screen.bgcolor("sky blue")
# Function to draw body of snowman
def draw_circle(color, radius, x, y):
t.penup()
t.fillcolor (color)
t.goto (x, y)
t.pendown()
t.begin_fill()
t.circle (radius)
t.end_fill()
# Function to draw arms
def create_line(x, y, length, angle):
t.penup()
t.goto(x, y)
t.setheading(angle)
t.pendown()
t.forward(length)
t.setheading(angle + 20)
t.forward(20)
t.penup()
t.back(20)
t.pendown()
t.setheading(angle - 20)
t.forward(20)
t.penup()
t.home()
# Illustrating snowman
# Drawing snowman body
def snowman(x):
t.pensize(3)
draw_circle ("#ffffff", 30 , 0 + x*100, -40)
draw_circle ("#ffffff", 40 , 0 + x*100, -100)
draw_circle ("#ffffff", 60 , 0 + x*100, -200)
# Drawing left eye
draw_circle ("#ffffff", 2 , -10 + x*100, -10)
# Drawing right eye
draw_circle ("#ffffff", 2 , 10 + x*100, -10)
# Drawing nose
draw_circle ("#FF6600", 3 , 0 + x*100, -15)
# Drawing buttons on
draw_circle ("#ffffff", 2 , 0 + x*100, -35)
draw_circle ("#ffffff", 2 , 0 + x*100, -45)
draw_circle ("#ffffff", 2 , 0 + x*100, -55)
# Drawing left arm
create_line(-35 + x*100, -50, 30, 160)
# Drawing right arm
create_line(35 + x*100, -50, 30, 20)
# Drawing hat
t.penup()
t.goto (-35 + x*100, 8)
t.color ("black")
t.pensize (6)
t.pendown()
t.goto (35 + x*100, 8)
t.goto (30 + x*100, 8)
t.fillcolor ("black")
t.begin_fill()
t.left (90)
t.forward (15)
t.left (90)
t.forward (60)
t.left (90)
t.forward (15)
t.end_fill()
repeat = int(input("how many times would you like to repeat the pattern?"))
def penPattern():
for x in range (repeat):
snowman(x)
penPattern()
与开始第二个雪人时的方向相比,你的乌龟在开始第一个雪人时面向不同的方向 对于第一个雪人,你的乌龟在开始画每个球的时候都是面向右边的。这将使您传递到
绘制圆的起始位置成为圆的最底点。第二个雪人,你的乌龟面朝下。这将使您传递到绘制圆的起始位置成为圆的最左侧点。参见此处所示的起始位置和方向:
要解决这个问题,您应该在完成第一个雪人之后将海龟的方向恢复为脸。您可以通过将t.left(90)
添加到snowman
函数的末尾来完成此操作: