Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Python bucles, validación de entrada

Ejercicio 10

João está desarrollando un sistema de registro para un sitio de lectura. Necesita asegurarse de que los usuarios ingresen un nombre de usuario y una contraseña válidos. Las reglas son las siguientes:

El nombre de usuario debe tener al menos 5 caracteres.
La contraseña debe tener al menos 8 caracteres.
João quiere que el sistema siga solicitando la información hasta que ambas condiciones se cumplan. Cuando el usuario ingresa datos válidos, el programa debe mostrar el mensaje: "¡Registro realizado con éxito!".

Crea un programa que implemente esta lógica usando un bucle while.

Salida esperada:

  • Digite su nombre de ususario: user

  • Digite su contraseña: 123
    -El nombre de usuario debe tener al menos 5 caracteres.

  • Digite su nombre de usuario: user22

  • Digite su contraseña: 1234
    -La contraseña debe tener al menos 8 caracteres.

  • Digite su nombre de usuario: user22

  • digite su contraseña: 12345678
    -¡Registro realizado con exito!

usuario = ""
contraseña = ""

while len(usuario) < 5 or len(contraseña) < 8:
    usuario = input("Ingresa tu nombre de usuario: ")
    contraseña = input("Ingresa tu contraseña: ")

    if len(usuario) < 5:
        print("El nombre de usuario debe tener al menos 5 caracteres.")

    if len(contraseña) < 8:
        print("La contraseña debe tener al menos 8 caracteres.")

print("¡Registro realizado con éxito!")
El nombre de usuario debe tener al menos 5 caracteres.
La contraseña debe tener al menos 8 caracteres.
El nombre de usuario debe tener al menos 5 caracteres.
La contraseña debe tener al menos 8 caracteres.
La contraseña debe tener al menos 8 caracteres.
¡Registro realizado con éxito!
1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que ya tienes un buen comienzo para tu programa, pero estás enfrentando algunos problemas con la lógica de validación. Vamos a revisar tu código y hacer algunos ajustes para que funcione como esperas.

Tu código actual está casi correcto, pero el problema es que después de cada entrada, se verifica y se imprime el mensaje de error para ambas condiciones, incluso si una de ellas ya es válida. Para solucionar esto, podemos modificar el bucle while y los mensajes de error de la siguiente manera:

usuario = ""
contraseña = ""

while True:
    usuario = input("Ingresa tu nombre de usuario: ")
    contraseña = input("Ingresa tu contraseña: ")

    if len(usuario) < 5:
        print("El nombre de usuario debe tener al menos 5 caracteres.")
    elif len(contraseña) < 8:
        print("La contraseña debe tener al menos 8 caracteres.")
    else:
        break

print("¡Registro realizado con éxito!")

En esta versión, utilizamos un bucle while True: que continuará ejecutándose hasta que ambas condiciones sean satisfechas. Si el nombre de usuario es demasiado corto, se imprime el mensaje correspondiente. Si el nombre de usuario es correcto pero la contraseña es demasiado corta, se imprime el mensaje de error para la contraseña. Si ambas entradas son válidas, el bucle se interrumpe con break y se imprime el mensaje de éxito.

Espero que esto te ayude a resolver el problema. ¡Bons estudios!