Domanda

Ho un programma Python che è essentailly compone di grafica della tartaruga, ed è fondamentalmente chiedendo all'utente come molte piazze a disegnare, e poi, dopo ogni quadrato, si aggiunge 1 a un contatore utilizzando:

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

E poi, dopo che ho voluto fare un controllo per vedere se il numero di caselle è pari all'importo che l'utente ha digitato in, e se lo è, allora ho voluto andare a fondo dello script dove avrei farle dire qualcosa del tipo fatto !! . ma non so come farlo andare in una certa parte dello script del comando goto che io sono abituato a in batch non è supportato in Python (lo so, goto = spaghetti di codice)

ho trovato una soluzione semplice è solo per scaricare un modulo che qualcuno ha fatto che consente di importare il comando goto in python e utilizzarlo proprio come si farebbe in lotti ma vorrei una soluzione pitone nativa eventuale!

il mio codice corrente è:

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) 

Se si dispone di una risposta o alternativa a questo problema sarebbe molto apprezzato!

È stato utile?

Soluzione

Fa questo aiuto?

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()

Non pensare in termini di un unico lungo elenco di istruzioni. Pensate invece di rompere il vostro problema a parte in azioni più piccole, come ad esempio "disegnando una palla", e scrivere ognuno di tali azioni come una procedura; poi pensare a come unire tali procedure insieme per raggiungere il tuo obiettivo. Scrivendo lo stesso codice più volte è un segno che si sta facendo male.

Altri suggerimenti

Non controllare il numero di caselle e poi andare alla fine, proprio ciclo il numero appropriato di volte, invece, disegnando un quadrato ogni volta.

alcuni suggerimenti:

>>> 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]

abbattere il vostro codice in funzioni, quindi utilizzare return ogni volta che si desidera saltare il codice rimanente di una funzione.

UPDATE: Non necessariamente condoniamo più punti di uscita per una funzione, come commentatore ovviamente assunto; questa risposta è nel contesto della questione. Il mio parere sulla questione di molteplici uscite-co-ad incidere con che di Tim Peters:

  

Bene, single-uscita è meglio perché rende sempre più facile e strumentazione   spesso rende più facile ragionare (fino agli introduce tante alternative   goofy booleani bandiere che tenere traccia di quelli è peggio della malattia).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top