pythontype-conversionintegeruser-inputinvalidoperationexception

Python: Invalid literal for int() with base 10 when inputting value to be converted


This is my code, the issue comes from the fourth block of my code, first and second line, I tried alternatives, mentioned them above the code in english and attached an errors pic. It's a school assignment and I'm not understanding the reason of the issue. The code is very simple to understand, if you need any further information I'll answer as soon as I see the message.

THANK YOU for the time you'll be taking to help me find a solution, Sincerely, Rouba

I finally found the solution, it was I mistake I made, the code is running perfectly fine. But I'm keeping this post in case some newbie makes the same mistake, the answer is in the comments.

    #################################
    # Ex5 : Autorisation d’accès
    # 20205793 
    # Créé le 09/03/2021
    #################################

id_saisi = input("Identifiant:")

 #Note au correcteur: Veuillez excuser l'absence d'accents, mon clavier est un qwerty et c'est assez couteux de mon temps de devoir switcher entre qwerty et azerty

    import stdiomask 
#importe le module stdiomask qui permet de remplacer la valeur saisie par des etoiles

    def Authentification(id_valide,pass_valide):

#fonction Authentification qui prend 2 parametres
   

     print("Veuillez saisir votre identifiant:")
        id_saisi = input("Identifiant:")
        print("Veuillez saisir votre mot de passe:")
        pass_saisi = stdiomask.getpass("Mot de passe:")

#emploi du module stdiomask
#masque le mot de passe entré en le remplacant par des etoiles
#demande a l'utilisateur son identifiant et son mot de passe

`#I tried id_saisi=int(float(str(id_saisi[12:]))) but returns error couldn't convert string to float`
`#also tried id_saisi=int(id_saisi[12:].strip('"')) returns same error as if I didn't strip the quotes`
   

     id_saisi=int(id_saisi[12:])
     pass_saisi=int(pass_saisi[12:])

    if id_saisi == id_valide & pass_saisi == pass_valide :
        print("Votre identifiant et votre mot de passe sont valides")
#alerte l'utilisateur que ses id et mots de passe sont incorrects
   

     elif id_saisi == id_valide & pass_saisi != pass_valide:
        print("Votre mot de passe est invalide")
#alerte  l'utilisateur que son mpt de passe est incorrect

    elif id_saisi != id_valide & pass_saisi == pass_valide:
        
    
    print("Votre identifiant est invalide")

#alerte l'utilisateur que son id est incorrect
   

     else:
            print("Votre identifiant et votre mot de passe sont invalides")

#verification de la validite du mot de passe et de l'identifiant et affichage d'une message en fonction de chaque cas

        
    Authentification(20205793, 2002)

#les valeurs valides sont définies lors de l'appel de la fonction


    

Solution

  • This error means that in the string there is at least one character that is not a digit and the string cant be converted to int or float.

    two simple ways to validate that are to catch the exception thrown by the casting or to check the input is all digits.

    exception catching:

    try:
        id_saisi=int(id_saisi[12:])
    except ValueError:
        print ('input is not a number')
    

    isdigit:

    if id_saisi[12:].isdigit():
        id_saisi=int(id_saisi[12:])
    else:
        print ('input is not a number')