Méthode int() qui marche pas en faisant un imput
Résolu
jojol_8144
Messages postés
132
Date d'inscription
Statut
Membre
Dernière intervention
-
UltraBot Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
UltraBot Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
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
- Convertir un char en int en c - Forum C
- Int main(void) ✓ - Forum C++
- Int(input()) signification - Forum Python
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 ?