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
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')