Как установить логическое условие для очистки или закрытия программы черепахи на основе ввода пользователя? - PullRequest
0 голосов
/ 13 апреля 2020

Я создал для l oop, чтобы запустить эту графику Turtle c. Я пытаюсь создать условие, которое настроено на запуск программы turtle, если пользователь отвечает «да» (y) или закрывает, или очищает программу, если пользователь отвечает «нет» (n). Я пытался вызывать функции t.clear () и done () отдельно после answer = False, но, похоже, это не работает. Программа запускается в любом случае, даже если пользователь вводит 'n' и нажимает ввод в консоли. Нужно ли настраивать возврат (y, n)?

from turtle import *
import turtle as t

shape('turtle')
speed(15)

# First you need to define a loop function to draw a square
def square():
    for i in range(4):
        t.color('white')
        t.bgcolor('turquoise')
        t.forward(150)
        t.right(90)

# Ask the user for input if they wish to see the Turtle move
question = input("Do you wish to see my animation? y/n: ")
answer = bool(question)
y = True
n = False
if answer == y: 
    answer = True

    for i in range(60):
        square()
        t.right(6)

else: 
    answer = False
    t.clear()

done()

1 Ответ

0 голосов
/ 15 апреля 2020

Вы предполагаете, что bool(), вызванный на "Yes" или "No", возвращает логическое значение:

answer = bool(question)

Это не так. Поскольку оба являются непустыми строками, он возвращает True для обоих. Вместо этого мы можем использовать логическое выражение, чтобы получить желаемый результат, и для этого требуется меньше кода:

import turtle

# First you need to define a loop function to draw a square
def square():
    for side in range(4):  # unused variable
        turtle.forward(150)
        turtle.right(90)

# Ask the user for input if they wish to see the Turtle move
question = input("Do you wish to see my animation? y/n: ")
answer = question.lower() in ('y', 'yes')

turtle.shape('turtle')
turtle.speed('fastest')

if answer:
    turtle.bgcolor('turquoise')
    turtle.color('white')

    for repetition in range(60):  # unused variable
        square()
        turtle.right(6)

turtle.hideturtle()
turtle.done()
...