Python: черепаха не может вызвать функцию дважды

#python #python-2.7 #function #pycharm #turtle-graphics

#python #python-2.7 #функция #pycharm #черепаха-графика

Вопрос:

У меня вопрос, я пытался нарисовать квадрат и круг на Python (2.7) с помощью модуля turtle.

 import turtle
def draw_cricle(circle_size):

    boby = turtle.Turtle()

    boby.color("black")
    boby.shape("arrow")

    boby.right(90)
    boby.forward(200)
    boby.left(90)
    boby.back(20)

    boby.circle(circle_size)

def draw_square(forward_dst, right_angle):
    window = turtle.Screen()

    window.bgcolor("red")
    brad = turtle.Turtle()
    brad.shape("circle")
    brad.speed(3)

    brad.forward(forward_dst)
    brad.right(right_angle)
    brad.forward(forward_dst)
    brad.right(right_angle)
    brad.forward(forward_dst)
    brad.right(right_angle)
    brad.forward(forward_dst)
    brad.right(right_angle)
    window.exitonclick()

draw_square(100,90)

draw_cricle(100)
  

Моя проблема в том, что я не могу вызвать функцию draw_circle после вызова функции draw_square.

И да, я знаю, что мне следовало использовать цикл в draw_square

Комментарии:

1. Что вы имеете в виду «я не могу вызвать функцию draw_circle»? что происходит, когда вы пытаетесь?

2. Когда я запускал программу, выполнялась только первая функция. Но я получил ответ ниже.

Ответ №1:

Вы закрываете окно при запуске window.exitonclick() из draw_square функции. Вы должны определить окно вне этих функций, если хотите использовать одно и то же окно для рисования квадрата и круга, в противном случае вы закрываете окно еще до того, как начнете рисовать круг.

 import turtle


def draw_cricle(circle_size):

    boby = turtle.Turtle()

    boby.color("black")
    boby.shape("arrow")

    boby.right(90)
    boby.forward(200)
    boby.left(90)
    boby.back(20)

    boby.circle(circle_size)

def draw_square(forward_dst, right_angle):

    brad = turtle.Turtle()
    brad.shape("circle")
    brad.speed(3)

    brad.forward(forward_dst)
    brad.right(right_angle)
    brad.forward(forward_dst)
    brad.right(right_angle)
    brad.forward(forward_dst)
    brad.right(right_angle)
    brad.forward(forward_dst)
    brad.right(right_angle)

window = turtle.Screen()
window.bgcolor("red")

draw_square(100,90)
draw_cricle(100)


window.exitonclick()