bonjour j'ai un long dm a faire en nsi pour demain mais je bloque est ce que quelqu'un pourrez m'aider
Exercice 2 : Retour sur la conversion Hexadécimale¶
a. Écrire une fonction carac_hexa(n) qui renvoie pour l'entier "n" le symbole correspondant en hexadécimal en tant que str . Si n > 15 renvoie (return)un message d’erreur.
Rappel des symboles hexadécimaux : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Indice: possibilité d'utiliser la chaîne : code hexa = "013456789ABCDEF" et l'indice de position
code_hexa = "0123456789ABCDEF"
def carac_hexa(n):
# Tests a - carac_hexa
print("Tests exercice a")
print(carac_hexa(5)) # renvoie "5"
print(carac_hexa(15)) # renvoie "F"
print(carac_hexa(10)) # renvoie "A"
print(carac_hexa(16)) # renvoie "erreur"
b. Écrire une fonction hexa_val(h) qui renvoie pour le caractère "h" en hexadécimal , sa valeur en décimal sous le type int. Si h n’est pas dans code_hexa renvoie (return)un message d’erreur.
Aide : possibilité de faire appel à la même variable code_hexa et de la parcourir avec une boucle jusqu'à trouver le bon indice)
def hexa_val(n):
if
else: # Si le symbole n'est pas dans la chaine code_hexa
return "erreur"
# Tests b/ hexa_val(h)
print("Tests exercice b")
print(hexa_val("F")) # renvoie 15
print(hexa_val("0")) # renvoie 0
print(hexa_val("9")) # renvoie 9
print(hexa_val("Q")) # renvoie "erreur"
c. Commentaires de programmes : Commenter les deux fonctions proposées ci-dessous en considérant les fonctions précédentes comme écrites
# 1ère fonction
def mystere(codeH):
valeur = 0
longueur = len(codeH)
for i in range(longueur):
valeur = valeur + hexa_val(codeH[i])*16**(longueur-i-1)
return valeur
# 2ème fonction
def mystere2(n):
code =""
quotient = n
while quotient != 0:
reste = quotient % 16
code = carac_hexa(reste) + code
quotient = quotient//16
return code