Pregunta

Tengo un programa en Python que se hace essentailly de gráficos de tortuga, y que básicamente está pidiendo al usuario el número de plazas para dibujar, y luego después de cada cuadrado, se añade 1 a un contador usando:

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

Y después de eso lo que quería hacer una comprobación para ver si el número de cuadrados es igual a la cantidad que el usuario ha escrito, y si lo es, entonces yo quería ir a la parte inferior de la secuencia de comandos, donde lo haría que hacer que decir algo como hecho !! . pero no sé cómo hacer que se vaya a una determinada parte del guión que el comando Goto que yo estoy acostumbrado en lotes no se admite en pitón (sé, Goto = espaguetis código)

He encontrado una solución fácil es sólo para descargar un módulo que alguien hizo que le permite importar el comando Goto en Python y lo utilizan del mismo modo que en el lote pero me gustaría una solución nativa de Python si los hay!

mi código actual es:

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 usted tiene una respuesta o alternativa a este problema sería muy apreciada!

¿Fue útil?

Solución

¿Esto ayuda?

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

No creo que en términos de una sola larga lista de instrucciones. Piense en lugar de romper su problema aparte en las acciones más pequeñas, tales como "sacar una bola", y escribir cada una de esas acciones como un procedimiento; luego pensar en cómo unirse a aquellos procedimientos en conjunto para lograr su objetivo. Escribiendo el mismo código en varias ocasiones es una señal de que está haciendo mal.

Otros consejos

No marque el número de cuadrados y luego ir al final, el bucle sólo el número apropiado de veces en cambio, dibujar un cuadrado en cada ocasión.

Algunos consejos:

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

romper su código en funciones, a continuación, utilizar return cada vez que desea entrar en el código restante de una función.

ACTUALIZACIÓN: No necesariamente múltiples puntos de salida condonan para una función, como un comentarista, obviamente, supone; esta respuesta se encuentra en el contexto de la pregunta. Mi opinión sobre el asunto de múltiples salidas-co-incide con que de Tim Peters:

Bueno, una sola salida es el mejor porque siempre hace más fácil y la instrumentación a menudo hace más fácil razonar (hasta los introduce tantas alternativas banderas torpe booleanas que hacer el seguimiento de ellos es peor que la enfermedad).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top