Bonjour
Je dois convertir un nombre hexadécimal en decimale. Seulement je ne suis que debutant avec python. Alors si quelqu'un pourrait m'aider en utilisant les bases rudimentaire de Python ça m'arrangerait bien 😅
Version imprimable
Bonjour
Je dois convertir un nombre hexadécimal en decimale. Seulement je ne suis que debutant avec python. Alors si quelqu'un pourrait m'aider en utilisant les bases rudimentaire de Python ça m'arrangerait bien 😅
Salut,
Un nombre hexadécimal est un nombre représenté sous forme hexadécimale (i.e. une chaine de caractères).
Avec Python, c'est facile de convertir avec "int" et "hex":
Et si on veut afficher çà en binaire avec la fonction "bin":Code:
1
2
3
4 >>> int('a0', 16) 160 >>> hex(int('a0', 16)) '0xa0'
Si le but est de faire çà vous même à partir de chaines de caractères et des polynomes pour vous faire pratiquer chaines de caractères et boucles "for", impossible d'utiliser ces fonctions... Mais si vous voulez qu'on vous aide, il faudra poster du code et expliquer ce que vous ne comprenez pas.Code:
1
2
3 >>> bin(160) '0b10100000' >>>
- W
Oui daccord mais c'est pour un devoir à rendre et je dois impérativement utiliser le code Ascii
Certes mais sans expliquer les difficultés que vous rencontrez en les illustrant avec ce que vous avez codé, pas grand monde vous donnera de solution.
Le seul intérêt de ce genre d'exercice est dans ce que vous allez découvrir en essayant d'écrire et mettre au point ces quelques lignes de code.
Dans le tas, il y a peut être des notions qui vous échappent encore faut-il comprendre leur nature pour savoir sur quoi/comment vous aider.
- W
Oui mais le problème c'est que je n'ai absolument pas réussi à le codé !
Voici mon programme:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Hexa=input ("valeur en majuscule") Decimal=0 Rang=0 For j in range (0,len (hexa)): If hexa [j]=="A":rang=10 Elif hexa [j]=="B":rang=11 Elif hexa [j]=="C":rang=12 Elif hexa [j]=="D":rang=13 Elif hexa [j]=="E":rang=14 Else:rang=15 Decimal=Decimal+rang*16**(hexa-i-1) Print (decimal)
Salut,
C'est bien mais vu le nombre de bourdes qu'il y a la dedans, vous n'avez pas encore l'habitude de la console interactive Python.
Si vous écrivez:
vous avez déjà une erreur parce que "for" ne s'écrit pas "For".Code:
1
2
3
4
5
6
7 >>> Hexa = 'abcd' >>> For j in range(len(hexa)): File "<stdin>", line 1 For j in range(len(hexa)): ^ SyntaxError: invalid syntax >>>
Cela corrigé, çà va se vautrer encore avec:
Pareil: Hexa et hexa sont deux noms de variables différentes.Code:
1
2
3
4
5
6
7 >>> for j in range(len(hexa)): ... pass ... Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'hexa' is not defined >>>
Le but de ce genre d'exercice est de vous faire pratiquer. i.e. vous écrivez une ânerie, çà affiche un beau message d'erreur et vous essayez de comprendre la bourde que vous avez fait. C'est fastidieux mais c'est comme çà que vous apprenez qu'un ordi. est un machin très bête à qui il faut tout expliquer en y mettant les formes.
La console Python interactive vous permet d'avoir une erreur bien plus vite qu'en passant par un fichier script.
C'est tout ce que je peux vous raconter en attendant que vous ayez un programme "correct" côté Python même s'il ne vous donne pas le résultat attendu et une explication de ce que vous ne comprenez pas (le but ici est e vous forcer à mettre des "mots", du sens à ce que vous faîtes... comme la programmation est une technique, il faut apprendre à raconter ce qu'on fait).
- W
Oui je sais cela c'est au cause de mon téléphone qui met des majuscule
Alors voici le vrai programme:
En faite je n'arrive pas à exprimer la valeur decimal final juste...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 hexa=input ("valeur en majuscule") decimal=0 rang=0 For j in range (0,len (hexa)): if hexa [j]=="A":valeur=10 elif hexa [j]=="B":valeur=11 elif hexa [j]=="C":valeur=12 elif hexa [j]=="D":valeur=13 elif hexa [j]=="E":valeur=14 elif hexa [j]=="F":valeur=15 decimal=decimal+rang*16**(len (hexa)-j-1) print (decimal)
Et bien il faut utiliser un outil qui évite de déformer ce que vous écrivez.
Relisez le code que vous avez posté:Citation:
Envoyé par tom.grbrt;8761030Alors voici le vrai programme:
[CODE
Vous assigné quelque chose à la variable "valeur" mais vous calculez avec "rang" qui a été initialisé à 0. De plus vous mettez à jour "decimal" en sortie de boucle plutôt qu'a chaque itération.
Pour calculer "valeur", je vous suggère d'utiliser .index:
Ce qui vous évitera d'écrire un tas de "elif" (il en manque 10!!!).Code:
1
2 >>> 'abcd'.index('c') 2
Puis il vous faudra revoir/simplifier la formule qui calcule "decimal"...
- W