Вопрос

У меня есть программа Python, которая является Essentailly, состоящей из графики черепах, и в основном спрашивает пользователя, сколько квадратов на рисование, а затем после каждого квадрата добавляет 1 к счетчику, используя:

counter=1
<drawing code here>
counter +=1

А затем после этого я хотел сделать чек, чтобы увидеть, равно ли количество квадратов равно сумме, на которую напечатал пользователь, и если это так, то я хотел перейти к нижней части сценария, где я бы сказал что-то вроде сделано!!. Анкет Но я не знаю, как заставить его перейти к определенной части сценария, так как команда GOTO, к которой я привык в партии, не поддерживается в Python (я знаю, goto = код спагетти)

Я обнаружил, что легкий обходной путь - это просто скачать модуль, который кто -то изготовил, который позволяет импортировать команду GOTO в Python и использовать его так же, как вы, но я хотел бы нативное решение Python, если таковые имеются!

Мой текущий код:

from turtle import *
import time
counter=1
color("red", "blue")
down()

user=int(raw_input('how many balls do you want?'))
counter +=1
if user===counter:

# solution goes here!

else:

for step in range(24):
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)

up()
goto(120,0)
down()


counter +=1
if user==counter:

#solution goes here!

else:

for step in range(24):
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)

up()
goto(0,-50)
write("Done!")

time.sleep(5) 

Если у вас есть ответ или альтернатива этой проблеме, это было бы очень оценено!

Это было полезно?

Решение

Это помогает?

import turtle   # don't pollute the namespace
import time

def getInt(msg):
    return int(raw_input(msg))

def drawBall():
    turtle.down()
    for i in range(96):
        turtle.right(105)
        turtle.forward(100)
    turtle.up()

def moveOver():
    turtle.goto(120,0)

def Done():
    turtle.goto(0,-50)
    turtle.write('Done!')
    time.sleep(5)

def main(): 
    turtle.color('red','blue')
    for i in range(getInt('How many balls do you want?')):
        drawBall()
        moveOver()
    Done()

if __name__=="__main__":
    main()

Не думайте с точки зрения одного длинного списка инструкций. Вместо этого подумайте о том, чтобы разбить вашу проблему на более мелкие действия, такие как «рисование мяча», и напишите каждое из этих действий в качестве процедуры; Затем подумайте о том, как объединить эти процедуры вместе, чтобы достичь своей цели. Написание того же кода неоднократно является признаком того, что вы делаете это неправильно.

Другие советы

Не проверяйте количество квадратов, а затем перейдите к концу, просто заправьте вместо этого соответствующее количество раз, каждый раз рисует квадрат.

Некоторые намеки:

>>> def square():
    print "+--+"
    print "|  |"
    print "|  |"
    print "+--+"
    print


>>> range(5)
[0, 1, 2, 3, 4]
>>> for x in range(5):
    print x
    square()


0
+--+
|  |
|  |
+--+

1
+--+
|  |

snip

Разбейте свой код на функции, а затем используйте return Всякий раз, когда вы хотите пропустить оставшийся код функции.

Обновление: я не обязательно оправдываю несколько точек выхода для функции, как явно предполагалось комментатор; Этот ответ в контексте вопроса. Мое мнение по вопросу о многочисленных веществах совместно с тот Тима Петерса:

Что ж, Single-Exit лучше всего, потому что он всегда облегчает приборы и часто облегчает рассуждения (до тех пор, пока альтернатива не представит так много глупого логического флагов, которые отслеживают их, хуже, чем болезнь).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top