Foros del Web » Programando para Internet » Python »

como hacer un goto ?

Estas en el tema de como hacer un goto ? en el foro de Python en Foros del Web. Busco en mi libro y en google y veo que Python no utiliza Goto, pero entonces.... Como podria hacer algo asi (solo es un ejemplo) ...
  #1 (permalink)  
Antiguo 22/04/2010, 10:38
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 7 meses
Puntos: 3
como hacer un goto ?

Busco en mi libro y en google y veo que Python no utiliza Goto, pero entonces.... Como podria hacer algo asi (solo es un ejemplo)

- pass = "1234"
- usuario = input ("introduce pass")
- while usuario =! pass
..... - vuelve a prenguntar "introduce pass"

Esque por más que busco y leo no doy con la solucion.
  #2 (permalink)  
Antiguo 22/04/2010, 11:13
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: como hacer un goto ?

Asumiendo que estas practicando con python 3.x
Código Python:
Ver original
  1. real_password = "1234"
  2.  
  3. while True:
  4.     passwd = input("Introduce el password\n")
  5.     if passwd == real_password:
  6.         break
  7.     else:
  8.         print("Password incorrecto")
  #3 (permalink)  
Antiguo 22/04/2010, 11:45
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 7 meses
Puntos: 3
Gracias de nuevo Razpeitia

Mira, entiendo tu codigo bastante bien, pero una duda, cuando pone:
- while true:
quiere decir: mientras lo que biene a contunuación sea cierto..... ¿es así?

Mira, acabo de descubrir como hacerlo de otra manera, creo que el resultado seria el mismo.... :
___________________________
pass= 1234
usuario = 0
while usuario != pass:
usuario = input ("clave")
else:
print "Correcto"
___________________________ ¿que te parece?

Otra duda: como haces para que se vea tu codigo tan bien indexado y con colores y saltos de linea numerados ,,,, ??? Me refiero al codigo que me has puesto aqui.
  #4 (permalink)  
Antiguo 22/04/2010, 12:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: como hacer un goto ?

puedes usar las etiquetas HIGHLIGHT
Código HTML:
[HIGHLIGHT="Python"]Aqui va el codigo[/HIGHLIGHT]
Si puedes poner un valor por defecto y hacer la comprobación en el while. En vez de usar un while True y un if. Pero siempre trato de poner código que sea bastante legible para los demas.

while True, es un ciclo infinito.
  #5 (permalink)  
Antiguo 22/04/2010, 21:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: como hacer un goto ?

Existen formas sucias de hacer un goto, pero cuestiones éticas y morales no lo enseñare.
  #6 (permalink)  
Antiguo 23/04/2010, 07:02
Avatar de dmassive  
Fecha de Ingreso: febrero-2002
Ubicación: Paraná - Entre Ríos - Argentina
Mensajes: 279
Antigüedad: 22 años, 8 meses
Puntos: 7
Respuesta: como hacer un goto ?

Bueno, yo era un enamorado del goto en el Basic

En python ese concepto de "ir a" lo podes manejar con labels, por ejemplo:

Definis una label, como una marca:
Código Python:
Ver original
  1. label .vuelveAqui

y luego desde donde quieras puedes ir hacia alli:
Código Python:
Ver original
  1. goto .vuelveAqui

Estos conceptos son mas amplios y puedes ver ejemplos claros aqui:
http://entrian.com/goto/

Pero recuerda, no es recomendable implementar el goto, salvo como suelo hacer yo que lo utilizo como una manera de probar cosas rapidamente sin tener que rediseñar todo el codigo.
__________________
Blümchen... einfach die rave Prinzessin
http://www.dmassive.com.ar/
  #7 (permalink)  
Antiguo 23/04/2010, 09:55
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 7 meses
Puntos: 3
Entonces ....?

Leyendo sobre el tema veo que los programadores estan en contra de utilizar este comando, incluso se habla de motivos morales... ?? Desde mi ingnorancia: no entiendo el motivo.
Que hay de malo en un goto? como dice Dmassive, creo que en Basic era un comando como otro cualquiera....
Razpeitia, dame tu opinión, iluminame.

Por cierto he probado a crear un label y luego el goto y me responde: No moduled name goto.
  #8 (permalink)  
Antiguo 23/04/2010, 13:29
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer un goto ?

Lo de motivos morales es una broma.

El asunto es que se hace difícil seguir el "flujo" del código, si es mal usado. GOTO es algo que hoy en día se evita, por más que en BASIC fuese normal.
Tiene sus usos, pero en lenguajes de más bajo nivel y en operaciones que requieren funcionar tan rápido como sea posible (ejemplo: se usa en el kernel Linux y en emuladores). No en lenguajes como Python donde la claridad del código es una de las metas al programar.

En resumen: no es parte de las "buenas prácticas" de programación. Fíjate por acá: http://es.wikipedia.org/wiki/GOTO#Co...el_uso_de_GOTO

Bosc, contestando a tu última pregunta: parece que no has dejado un punto después de goto.


Saludos.
  #9 (permalink)  
Antiguo 23/04/2010, 17:10
Avatar de Bosc  
Fecha de Ingreso: marzo-2010
Mensajes: 43
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: como hacer un goto ?

OK AlvaroG, bueno; más o menos capto la idea.... Muchas gracias y voy a mirar lo del punto que me comentas,,, pero vaya despues de leer todo esto creo que me olvidaré de Goto... jajajaj !

Saludos a todos .
  #10 (permalink)  
Antiguo 23/04/2010, 20:55
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: como hacer un goto ?

Si lo de las razones morales, era una broma.

Ya que siempre trato de hacer uso de buenas practicas de programacion y especialmente en python, seguir los 12 mandamientos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:17.