Décimal en binaire
Résolu/Fermé- Rémi et safia ont découvert le code binaire des nombres en cours d'informatique. ils l'utilisent pour se donner des rendez-vous secrets.
- Le code ascii en informatique - Guide
- Code binaire des nombres - Guide
- Codes secrets pour débloquer tous téléphones mobiles - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
6 réponses
Modifié le 31 oct. 2022 à 10:11
Bonjour,
str(reste) ne convertit pas reste en chaine, l'instruction crée une chaine au moment de l’exécution dont tu ne fais rien.
il faudrait au moins faire reste = str(reste), ou plus simplement binaire = str(reste) + binaire.
Enfin, avant le return tu devrais afficher binaire pour voir ce que contient la chaine.
Modifié le 31 oct. 2022 à 10:17
Bonjour,
Essayez :
binaire = o en ligne 6
car quand vous déclarez binaire = "" binaire est mémorisé en type string
donc en ligne 6, vous additionnez un int et un string, d'où le message d'erreur.
Si vous aviez voulu transformer le string "reste" initial en string, il aurait fallu entrer : reste = string(reste)
La ligne doit donc être supprimée, à moins que vous vouliez concaténer le string "reste" et le string decimal (à convertir comme indiqué plus haut).
Sous réserve d'invalidation ou amélioration par un "pythoniste".
J'ai fait ça maintenant mais j'ai toujours un message d'erreur et merci de l'aide
def dec_to_bin(decimal):
binaire=""
quotient = decimal//2
reste = decimal%2
binaire = str(reste) + binaire
while quotient!=0 :
decimal = quotient
reste = decimal%2
binaire = str(reste) + binaire
quotient = quotient//2
while len(binaire)==4 :
binaire = str(0)+ binaire
print (binaire)
return binaire
assert dec_to_bin(10) == '1010'
assert dec_to_bin(15) == '1111'
assert dec_to_bin(0) == '0000'
Modifié le 31 oct. 2022 à 11:27
Je ne vois pas que vous ayez écrit binaire == 0
Cela ne préjuge pas d'autres erreurs qui seront signalées par la suite mais celle-ci devait disparaître (j'ai bien entendu vérifié sur cette partie du code).
Mais l'important n'est pas de recopier ma proposition mais de comprendre ce que signifie ce message d'erreur et ce que vous faîtes pour le corriger.
Par ailleurs, il est plus que recommandé d''utiliser les balises de code (python) pour encadrer votre script (utiliser l'icone correspondante au dessus de la zone de saisie des réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 31 oct. 2022 à 11:28
Là ton code fonctionne, c'est l'assert qui indique une erreur car ta fonction renvoie '01010' alors que tu attend '1010'
Pourquoi rajouter 0 quand longueur = 4 ?
Après ton code est imparfait car si la valeur décimale passée est supérieure à 15 et que tu attends un binaire sur 4 bits, la réponse ne sera par correcte. Il faudrait vérifier la valeur décimale reçue, ou ne pas limiter la chaine binaire à 4 positions.
Modifié le 31 oct. 2022 à 11:37
Bonjour jee pee,
Ma proposition est-elle incorrecte et lilou doit-elle maintenir la ligne 6 initiale. Je ne voudrais pas la diriger vers de fausses solutions.
edit:
Désolé de la question superflue. Je ne sais pas pourquoi, malgré le fait que j'aie vérifié avant de poster, je n'avais pas la réponse #1, que j'ai doublonnée par rapport à la tienne. Encore heureux qu'elles correspondent.
Par ailleurs, je n'ai pas la ligne 24 dans le post initial.
Je te laisse la main pour ne pas embrouiller lilou.
31 oct. 2022 à 11:40
Dans ta dernière partie, il faut tester longueur < à 4
31 oct. 2022 à 11:44
bonjour, je n'ai pas bien compris ce que tu voulais faire/dire ;-)
le code de lilou n'est pas optimum, long et beaucoup de variables, mais en fait, comme au final elle nous donné l'énoncé, c'est bien sur cette base qu'il faut rester. Elle doit débuter donc disons qu'obtenir le bon résultat est moins important que comprendre chaque ligne du code.
31 oct. 2022 à 11:52
oui sans message le code est bon. A noter que tu ne respectes pas l'énoncé, tu as changé,
quotient = decimal//2
il faut le remettre, ce qui ne change rien
31 oct. 2022 à 11:57
pour un autre exercice, il est préférable de créer une nouvelle question.
et de nous donner l'énoncé et ta solution, cela peut nous permettre de mieux t'aider, et penses bien pour le code à utiliser l'icone sources et le langage python qui donne la coloration syntaxique.
31 oct. 2022 à 12:04
Bonjour à tous
Tu n'étais pas loin,
Tant que longueur de binaire est différent de 4 et non égal à 4 comme tu as écrit ici
while len(binaire)==4
Cdlmnt