Python:输入要转换的值时,以 10 为底的 int() 的无效文字
Python: Invalid literal for int() with base 10 when inputting value to be converted
这是我的代码,问题出在我代码的第四块,第一行和第二行,我尝试了替代方案,在代码上方用英文提到了它们,并附上了错误图片。
这是一项学校作业,我不明白问题的原因。代码非常简单易懂,如果需要更多信息,我会在看到消息后立即回复。
感谢您抽出宝贵时间帮助我找到解决方案,
真挚地,
肉巴
我终于找到了解决方案,这是我犯的错误,代码 运行 完全没问题。但我保留了这个 post 以防某些新手犯同样的错误,答案在评论中。
#################################
# 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
此错误表示字符串中至少有一个字符不是数字,无法将字符串转换为 int 或 float。
两种简单的验证方法是捕获转换抛出的异常或检查输入是否全是数字。
异常捕获:
try:
id_saisi=int(id_saisi[12:])
except ValueError:
print ('input is not a number')
是数字:
if id_saisi[12:].isdigit():
id_saisi=int(id_saisi[12:])
else:
print ('input is not a number')
这是我的代码,问题出在我代码的第四块,第一行和第二行,我尝试了替代方案,在代码上方用英文提到了它们,并附上了错误图片。 这是一项学校作业,我不明白问题的原因。代码非常简单易懂,如果需要更多信息,我会在看到消息后立即回复。
感谢您抽出宝贵时间帮助我找到解决方案, 真挚地, 肉巴
我终于找到了解决方案,这是我犯的错误,代码 运行 完全没问题。但我保留了这个 post 以防某些新手犯同样的错误,答案在评论中。
#################################
# 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
此错误表示字符串中至少有一个字符不是数字,无法将字符串转换为 int 或 float。
两种简单的验证方法是捕获转换抛出的异常或检查输入是否全是数字。
异常捕获:
try:
id_saisi=int(id_saisi[12:])
except ValueError:
print ('input is not a number')
是数字:
if id_saisi[12:].isdigit():
id_saisi=int(id_saisi[12:])
else:
print ('input is not a number')