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 😅
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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�: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 : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 >>> 'abcd'.index('c') 2
Puis il vous faudra revoir/simplifier la formule qui calcule "decimal"...
- W
Partager