cómo manejar la entrada del usuario en la lista si no es un número entero que le devuelva al usuario

Estoy buscando manejar la forma en que un usuario ingresa en una lista si el usuario ingresa una letra (cadena) en lugar de un número (entero), le indica al usuario que ingresó un valor no válido y le solicita que vuelva a intentarlo. aquí algo de código:

def get_list_from_user():   # Prompt the user for a list of number
    while True:
        user_list = input(f"Enter {difficulty} number separated by space: ")
        user_list = user_list.split()
        user_list = [int(i) for i in user_list]
        if not len(user_list) == difficulty:
            print(f"Please chose {difficulty} number separated by space: ")
        else:
            break

    saved_user_list = user_list
    return saved_user_list
Answer

Puedes usar este código.

def get_list_from_user():   # Prompt the user for a list of number
    while True:
        user_list = input(f"Enter {difficulty} number separated by space: ")
        user_list = user_list.split()
        try:
            user_list = [int(i) for i in user_list ]
        except:
            print("entered an invalid value")
            continue
        if not len(user_list) == difficulty:
            print(f"Please chose {difficulty} number separated by space: "           
        else:
            break

    saved_user_list = user_list
    return saved_user_list

Recomiendo usar un controlador de excepciones (try/except). Aquí hay una forma de hacerlo:

difficulty = 3

def get_list_from_user():   # Prompt the user for a list of number
    while True:
        user_list = input(f"Enter {difficulty} numbers separated by space: ").split()
        try:
            user_list = [int(i) for i in user_list]
            if len(user_list) != difficulty:
                raise ValueError
            return user_list
        except ValueError:
            print('Invalid input')

print(get_list_from_user())

Podría usar una declaración de prueba, excepto. Si int() falla, lanzará una excepción que nosotros manejamos.

        try:
            user_list = [int(i) for i in user_list]
        except ValueError:
            print("Invalid value")

Código completo:

def get_list_from_user():   # Prompt the user for a list of number
    while True:
        user_list = input(f"Enter {difficulty} number separated by space: ")
        user_list = user_list.split()
        try:
            user_list = [int(i) for i in user_list]
        except ValueError:
            print("Invalid value")
            continue
    
        if not len(user_list) == difficulty:
            print(f"Please chose {difficulty} number separated by space: ")
        else:
            break

    saved_user_list = user_list
    return saved_user_list