¿Cómo ingresar números y letras en un input y poner limite de caracteres?

publicado por: Anonymous

Estoy apenas aprendiendo a manejar Python y estoy poniendo en practica lo que he aprendido hasta ahora haciendo un sistema de login. Quiero usar una contraseña de mínimo 6 caracteres y una letra, y aquí viene mi primera duda: ¿Cómo puedo poner ese limite para que al momento de introducir mas de 6 caracteres salga un print diciendo que el mínimo es 6? Por otro lado, en el código que muestro a continuación tengo otro problema, al momento de ingresar un texto o letra en el input sale el error:

Traceback (most recent call last):
  File "codigo.py", line 30, in <module>
    prueba2()
  File "codigo.py", line 6, in prueba2
    Request_Password=int(input("Insertar contraseña"))
  ValueError: invalid literal for int() with base 10: 'PruebaContraseña'.

Mi código es el siguiente:

contraseñas=[123]
Archivos=["Documentos","Videos"]


def prueba2():
    Access=False
    Request_Password=int(input("Insertar contraseña"))

    if Request_Password in contraseñas[:]:
        Access=True

    elif Access==True:
        seleccion()

    while Access==False:
        prueba2()
        break


def seleccion():
  confirmacion=input("¿Que archivo desea ver?")

  if confirmacion in Archivos[:]:
      print("Acceso autorizado a",confirmacion)

  else:
      print("Esa categoria no existe")



prueba2()

Es apenas el comienzo, pero no puedo continuar sin saber como hacer lo que ya les dije. Todo funciona bien cuando solo cuando utilizo o numero o letras pero no las 2 combinadas.

solución

1) Para hacer mas breve mi explicación responderé primero la pregunta del error:

Traceback (most recent call last):
  File "codigo.py", line 30, in <module>
    prueba2()
  File "codigo.py", line 6, in prueba2
    Request_Password=int(input("Insertar contraseña"))
  ValueError: invalid literal for int() with base 10: 'PruebaContraseña'.

Si miras el mensaje de error te muestra una pista de lo que sucede ValueError: invalid literal for int() with base 10: 'PruebaContraseña'.

Este error ocurre porque estas intentando convertir a un entero algo que python no reconoce como un numero. Por ejemplo si digitas como contraseña el valor “123a” y aplicas la funcion int, python en realidad no va a saber como convertir eso a un entero porque no es claro que numero representa.

Entonces como tu requerimiento es utilizar una contraseña que acepte valores alfanuméricos, lo recomendable es utilizar un string (cadena de texto). Luego, como la variable Request_Password por defecto recibe una cadena de texto no es necesario utilizar int, y en la variable contraseñas podrías tener algo así: contraseñas=["123"] para que sean el mismo tipo de datos y poder realizar la comparación.

2) Ahora para la pregunta de limitar la cantidad de caracteres simplemente utiliza la funcion len para hallar la longitud de una cadena de texto y un condicional para preguntar si es mayor que 6, por ejemplo:

if len(Request_Password) > 6:
    print("tiene mas de 6 caracteres")
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *