[python] Tonteando con el lenguaje, como hacerle volver atrás?

Iniciado por Artikbot, 24 Agosto 2009, 00:20 AM

0 Miembros y 1 Visitante están viendo este tema.

Artikbot

Buenas!

Quiero escribir un código que me muestre un campo donde ingresar una palabra, en caso de no tener la longitud deseada, volver a pedirla otra vez mostrando un mensaje de error distinto, con el error cometido. Y seguir así hasta que se ingrese un valor de longitud adecuada.

Este es mi source, pero no repite la petición:

Código (python) [Seleccionar]

x=input('ingrese su contraseña -> ')
if len(x)<6:
print('demasiado corta')
elif len(x)>=6:
print('contraseña correcta')


Así que he intentado añadir una línea, que funciona, vuelve a pedir la contraseña, pero sin embargo, la toma como el valor x, pero hace caso omiso de la línea anterior de código. Me ha parecido obvio, pero no creo que la solución sea copiar una y otra vez el código... debe haber algún modo de hacerle volver a repetir el código pero añadiendo al mensaje de salida 'debe tener 6 o más carácteres', no? Además de eso, el mensaje que introduzco le suda 3 pueblos, muestra un output en blanco si fallo, y si acierto muestra el valor correspondiente.

Código (python) [Seleccionar]

x=input('ingrese su contraseña -> ')
if len(x)<6:
print('demasiado corta')
x=input('ingrese su contraseña. debe tener 6 o mas caracteres -> ')
elif len(x)>=6:
print('contraseña correcta')




Entonces mi pregunta es... Cómo hago para hacerle volver hacia el principio del código haciéndole añadir una frase al output? Lo de la frase creo que ya sé como hacerlo, pero lo de devolverle al inicio sí que NPI... :-\


Saludos!



Monto ordenadores a medida, me ajusto a todo tipo de presupuestos. Contáctame para más información.
Sólo para España peninsular y Baleares

-Ramc-

Con un bucle puedes hacer que se devuelva al inicio hasta que ponga una contraseña de 6 caracteres.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

Jubjub

Algo asi:

Código (python) [Seleccionar]

x = ""
while (len(x)<6):
   x=input('ingrese su contraseña -> ')
   if len(x)<6:
       print('demasiado corta')
print('contraseña correcta')
Jugando con Fósforoshacking con un tono diferente


.
porno

Artikbot

#3
Un bucle... Debería añadir el inicio del bucle antes de la línea adonde se declara el valor de x?

O sea, con el while conseguiría que el programa continuase ejecutando el código hasta que la entrada fuese correcta... Cierto?

veamos...

Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
x=input('ingrese su contraseña -> ')
while len(x)<6:
print('por favor, ingrese otra vez. debe tener 6 o más carácteres')
if len(x)>=6:
print('contraseña correcta')
input('')


Parece que es lo que debería... Pero repite hasta el infinito el mensaje de volver a ingresar :-(

Quizás si pudiese terminar esa orden, me permitiría volver a ingresar, no?



Edit: Jubjub, no entiendo el trozo de tu código adónde abandonas el if para volver al while... O sea, que en el momento que el trozo que pertenece a while fuese un valor mayor de 6, dejaría de tener relevancia el while y mostraría el mensaje de 'contraseña correcta'?

Así hace lo que quiero que haga (code de jubjub con una petición a declarar x al incio xD)

Código (python) [Seleccionar]
x=input('ingrese su contraseña -> ')
while (len(x)<6):
x=input('ingrese su contraseña -> ')
if len(x)<6:
print('demasiado corta')
print('contraseña correcta')




Muchas gracias tíos :D



Monto ordenadores a medida, me ajusto a todo tipo de presupuestos. Contáctame para más información.
Sólo para España peninsular y Baleares

-Ramc-

Código (python) [Seleccionar]
x=input('ingrese su contrasenia -> ')
while len(x)<6:
x=input('por favor, ingrese otra vez. debe tener 6 o mas caracteres\n')
print('contrasenia correcta')

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

Artikbot

#5
Código (python) [Seleccionar]
x=input('ingrese su contraseña -> ')
while (len(x)<6):
print('demasiado corta')
x=input('ingrese su contraseña -> ')
print('contraseña correcta, presione una tecla para salir')
input('')


Con un solo while. Y muestra mensaje de terminación de la app xD

Ay la ostia, si el code es el mismo en esencia >.<

Adrede, ese \n que pones... No he visto para qué sirve en los docs de Python 3.1, qué es exactamente?

Edit: Puedo deducir que a partir de \n es adónde se introduce el código del usuario dentro de 'input', no?



Monto ordenadores a medida, me ajusto a todo tipo de presupuestos. Contáctame para más información.
Sólo para España peninsular y Baleares

-Ramc-

El \n es salto de línea, así el siguiente mensaje que se muestre o en este caso el ingreso de la contraseña se hará en la siguiente línea.

Saludos.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

Artikbot

Ajá!

Gracias a los dos :D


Mañana veré a ver qué mas hago, esta vez un poco más útil xDDDD

Son la 1:10 de la mañana y tengo sueño  :rolleyes:



Monto ordenadores a medida, me ajusto a todo tipo de presupuestos. Contáctame para más información.
Sólo para España peninsular y Baleares

Jubjub

Jugando con Fósforoshacking con un tono diferente


.
porno