Méthode int() qui marche pas en faisant un imput
Résolu
jojol_8144
Messages postés
142
Statut
Membre
-
UltraBot Messages postés 72 Statut Membre -
UltraBot Messages postés 72 Statut Membre -
Voilà mon soucis, lorsque j'exécute ce simple morceau de code:
j'obtiens ceci:
idem pour cette séquence de code:
Et j’obtiens ceci:
Pourriez-vous m'aider à comprendre ce qui ne vas pas svp ?
Merci par avance
tHexa = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
print("entrez un entier naturel")
unHexa = (input("saisie de l'hexa à convertir "))
unHexa = ""
print(int(unHexa, 16))
j'obtiens ceci:
entrez un entier naturel
saisie de l'hexa à convertir 0xff
Traceback (most recent call last):
File "C:/Users/utilisateur/.PyCharmCE2018.3/config/scratches/TEST2.py", line 9, in <module>
print(int(unHexa, 16))
ValueError: invalid literal for int() with base 16: ''
Process finished with exit code 1
idem pour cette séquence de code:
class BaseConverter:
def __init__(self, symboles):
self.symboles = symboles
self.sym2val = {l: i for i, l in enumerate(symboles)}
self.val2sym = dict(enumerate(symboles))
def to_base_10(self, string):
i = 0
base = len(self.sym2val)
# On part de la gauche vers la droite,
# donc on commence avec les valeurs les plus
# grosses.
# Pour chaque symbole, on ajoute la valeur
# de celui-ci (donnée par la table) et
# avec facteur lié à sa position.
for c in string:
i *= base
i += self.sym2val[c]
return i
def from_base_10(self, number):
""" Convert from a base 10 to the custom base"""
array = []
base = len(self.val2sym)
# Division euclidienne en boucle jusqu'à ce que le
# reste soit égal à zero.
while number:
number, value = divmod(number, base)
# Le résultat est l'index du symbole.
# On le place le plus à gauche, chaque
# symbole ayant une valeur plus grande
# que le précédent.
array.insert(0, self.val2sym[value])
# Ne pas oublier le zéro
return "".join(array) or self.symboles[0]
base16_converter = BaseConverter("0123456789ABCDEF")
print(base16_converter.to_base_10("0xff")) # 255
Et j’obtiens ceci:
Traceback (most recent call last):
File "C:/Users/Utilisateur/.PyCharmCE2018.3/config/scratches/machin.py", line 40, in <module>
print(base16_converter.to_base_10("0xff")) # 255
File "C:/Users/Utilisateur/.PyCharmCE2018.3/config/scratches/machin.py", line 18, in to_base_10
i += self.sym2val[c]
KeyError: 'x'
Process finished with exit code 1
Pourriez-vous m'aider à comprendre ce qui ne vas pas svp ?
Merci par avance
A voir également:
- Méthode int() qui marche pas en faisant un imput
- Int converter - Télécharger - Bureautique
- Ceci est un exemple de fichier texte. pour afficher les propriétés du fichier, utilisez le menu contextuel en faisant un clic droit sur le fichier. - Guide
- Int main(void) ✓ - Forum C++
- Méthode lafay pdf - Forum Loisirs / Divertissements
- Convertir un char en int en c - Forum C
Merci pour ta réponse, elle fonctionne pour mon premier script cependant,
Mon second programme de conversion ne marche pas quand j'essaye de convertir 0xff en 255:
<python>
class BaseConverter:
def __init__(self, symboles):
self.symboles = symboles
self.sym2val = {l: i for i, l in enumerate(symboles)}
self.val2sym = dict(enumerate(symboles))
def to_base_10(self, string):
i = 0
base = len(self.sym2val)
# On part de la gauche vers la droite,
# donc on commence avec les valeurs les plus
# grosses.
# Pour chaque symbole, on ajoute la valeur
# de celui-ci (donnée par la table) et
# avec facteur lié à sa position.
for c in string:
i *= base
i += self.sym2val[c]
return i
def from_base_10(self, number):
""" Convert from a base 10 to the custom base"""
array = []
base = len(self.val2sym)
# Division euclidienne en boucle jusqu'à ce que le
# reste soit égal à zero.
while number:
number, value = divmod(number, base)
# Le résultat est l'index du symbole.
# On le place le plus à gauche, chaque
# symbole ayant une valeur plus grande
# que le précédent.
array.insert(0, self.val2sym[value])
# Ne pas oublier le zéro
return "".join(array) or self.symboles[0]
base16_converter = BaseConverter("0123456789ABCDEF")
print(base16_converter.to_base_10("0xff")) # 255
</python>
Pourriez-vous m'aider à comprendre pk cela ne marche pas svp ?