Question

J'ai un programme python qui est essentailly composé de graphiques tortues, et il demande essentiellement à l'utilisateur combien de carrés pour dessiner, puis après chaque carré, il ajoute 1 à un compteur à l'aide:

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

Et puis après que je voulais faire un chèque pour voir si le nombre de places est égal au montant que l'utilisateur a tapé dans, et si elle est, alors je voulais aller au fond du script où je faire dire quelque chose comme fait !! . mais je ne sais pas comment faire aller à une certaine partie du script comme la commande goto que je suis habitué dans le lot est pas pris en charge en python (je sais, goto = Code spaghetti)

J'ai trouvé une solution facile est juste pour télécharger un module que quelqu'un fait qui vous permet d'importer la commande goto en python et l'utiliser comme vous le feriez dans le lot mais je voudrais une solution python natif le cas échéant!

mon code actuel est:

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) 

Si vous avez une réponse ou une alternative à ce problème, il serait grandement apprécié!

Était-ce utile?

La solution

Est-ce que cette aide?

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

Ne pensez pas en termes d'une longue liste unique d'instructions. Pensez au lieu de casser votre problème à part dans les petites actions, telles que « tirer une boule », et écrire chacune de ces actions en tant que procédure; alors pensez à la façon de joindre ces procédures ensemble pour atteindre votre objectif. La rédaction du même code est à plusieurs reprises un signe que vous faites mal.

Autres conseils

Ne pas vérifier le nombre de places, puis aller à la fin, la boucle juste le nombre approprié de fois au lieu, dessiner un carré à chaque fois.

Quelques conseils:

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

Pause votre code en fonctions, puis utilisez return chaque fois que vous voulez ignorer le reste du code d'une fonction.

Mise à jour: Je ne plusieurs points de sortie tolérons pas nécessairement pour une fonction, comme un commentateur évidemment supposé; cette réponse est dans le contexte de la question. Mon avis sur la question de plusieurs-sorties co-incides avec que de Tim Peters:

  

Eh bien, une seule sortie est meilleure, car il est toujours plus facile et l'instrumentation   rend souvent raisonnement plus facile (jusqu'à ce que les alternatives introduit tant de   drapeaux Goofy booléennes garder la trace de ceux qui est pire que la maladie).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top