Salut ! J'ai essayé de créer un fichier .py afin de convertir des nombres décimaux {Pour l'instant compris entre 0 et 31}. Cependant, il ne fonctionne pas.
Pourriez-vous m'aider ?
Mon code :
print("Decimal to Binary")
print("Nombres acceptés : 0 - ... - 31")
invite = "Propose un Nombre, et il sera converti en binaire : "
while True :
decimal = raw_input(invite)
if decimal == 0:
print("0-0-0-0-0")
elif decimal == 1:
print("0-0-0-0-1")
elif decimal == 2:
print("0-0-0-1-0")
elif decimal == 3:
print("0-0-0-1-1")
elif decimal == 4:
print("0-0-1-0-0")
elif decimal == 5:
print("0-0-1-0-1")
elif decimal == 6:
print("0-0-1-1-0")
elif decimal == 7:
print("0-0-1-1-1")
elif decimal == 8:
print("0-1-0-0-0")
elif decimal == 9:
print("0-1-0-0-1")
elif decimal == 10:
print("0-1-0-1-0")
elif decimal == 11:
print("0-1-0-1-1")
elif decimal == 12:
print("0-1-1-0-0")
elif decimal == 13:
print("0-1-1-0-1")
elif decimal == 14:
print("0-1-1-1-0")
elif decimal == 15:
print("0-1-1-1-1")
elif decimal == 16:
print("1-0-0-0-0")
elif decimal == 17:
print("1-0-0-0-1")
elif decimal == 18:
print("1-0-0-1-0")
elif decimal == 19:
print("1-0-0-1-1")
elif decimal == 20:
print("1-0-1-0-0")
elif decimal == 21:
print("1-0-1-0-1")
elif decimal == 22:
print("1-0-1-1-0")
elif decimal == 23:
print("1-0-1-1-1")
elif decimal == 24:
print("1-1-0-0-0")
elif decimal == 25:
print("1-1-0-0-1")
elif decimal == 26:
print("1-1-0-1-0")
elif decimal == 27:
print("1-1-0-1-1")
elif decimal == 28:
print("1-1-1-0-0")
elif decimal == 29:
print("1-1-1-0-1")
elif decimal == 30:
print("1-1-1-1-0")
elif decimal == 31:
print("1-1-1-1-1")
j'espere que c'est une blague ![]()
Nope, je débute. ( Ceci n'est pas un troll, vraiment )
Je ne sais pas si l'énoncé est de toi, mais au vu de ta longue chaine de if elif, tu ne penses pas qu'il est existe un truc pour convertir réellement ? ![]()
Si tu trouves pas dis le
Alors, en informatique, on ne raisonne jamais ainsi ^^
On pose le problème, on réfléchit dessus pour le factoriser le plus possible, et si possible utiliser ds propriétés/algo/formules pour les conversions.
On ne fait pas de "cas par cas" aussi fin (et si on doit le faire, c'est bien qu'on est bloqué et qu'on ne peut pas faire autrement :'( ).
Ici, tu souhaites transformer du décimal en binaire.
Outre le fait que je suis persuadé que le Python gère déjà ce genre de transformation nativement, je vais partir sur l'exercice, donc recréer la transformation.
Donc, pour passer de notre cher base 10 (notre base de comptage de référence) en base 2 (binaire), tu as plusieurs manières, plus ou moins mathématiques.
Essaie de faire la plus simple, la "bête et méchante".
Chaque rang de la représentation binaire représente une puissance de 2.
Partant de là, il te suffit de :
Tu as bien d'autres manières de le faire, la bête et méchante étant la plus intuitive, mais pas la plus simple, ni la plus performante.
L'intérêt d'un langage c'est justement d'éviter d'avoir à gérer toutes les solutions "à la main". ![]()
http://stackoverflow.com/questions/3528146/convert-decimal-to-binary-in-python
Si tu veux vraiment faire ça par toi même alors faut comprendre comment tu passes de décimal à binaire mathématiquement. Et baser ton algorithme dessus.
Merci bien ![]()
3 réponses en 3 secondes, on a fait fort... Je croyais que je ne savais plus lire !
)
J'ai refait le code, avec l'astuce de GG.
Ce qui me donne :
print("Decimal to Binary")
print("Nombres acceptés : 0 - ... - 31")
invite = "Propose un Nombre, et il sera converti en binaire : "
while True :
decimal == raw_input(invite)
if decimal == 0:
print("La valeur choisie est : "+str(decimal))
bin(0)
elif decimal == 1:
print("La valeur choisie est : "+str(decimal))
bin(1)
elif decimal == 2:
print("La valeur choisie est : "+str(decimal))
bin(2)
elif decimal == 3:
print("La valeur choisie est : "+str(decimal))
bin(3)
elif decimal == 4:
print("La valeur choisie est : "+str(decimal))
bin(4)
elif decimal == 5:
print("La valeur choisie est : "+str(decimal))
bin(5)
elif decimal == 6:
print("La valeur choisie est : "+str(decimal))
bin(6)
elif decimal == 7:
print("La valeur choisie est : "+str(decimal))
bin(7)
elif decimal == 8:
print("La valeur choisie est : "+str(decimal))
bin(8)
elif decimal == 9:
print("La valeur choisie est : "+str(decimal))
bin(9)
elif decimal == 10:
print("La valeur choisie est : "+str(decimal))
bin(10)
elif decimal == 11:
print("La valeur choisie est : "+str(decimal))
bin(11)
elif decimal == 12:
print("La valeur choisie est : "+str(decimal))
bin(12)
elif decimal == 13:
print("La valeur choisie est : "+str(decimal))
bin(13)
elif decimal == 14:
print("La valeur choisie est : "+str(decimal))
bin(14)
elif decimal == 15:
print("La valeur choisie est : "+str(decimal))
bin(15)
elif decimal == 16:
print("La valeur choisie est : "+str(decimal))
bin(16)
elif decimal == 17:
print("La valeur choisie est : "+str(decimal))
bin(17)
elif decimal == 18:
print("La valeur choisie est : "+str(decimal))
bin(18)
elif decimal == 19:
print("La valeur choisie est : "+str(decimal))
bin(19)
elif decimal == 20:
print("La valeur choisie est : "+str(decimal))
bin(20)
elif decimal == 21:
print("La valeur choisie est : "+str(decimal))
bin(21)
elif decimal == 22:
print("La valeur choisie est : "+str(decimal))
bin(22)
elif decimal == 23:
print("La valeur choisie est : "+str(decimal))
bin(23)
elif decimal == 24:
print("La valeur choisie est : "+str(decimal))
bin(24)
elif decimal == 25:
print("La valeur choisie est : "+str(decimal))
bin(25)
elif decimal == 26:
print("La valeur choisie est : "+str(decimal))
bin(26)
elif decimal == 27:
print("La valeur choisie est : "+str(decimal))
bin(27)
elif decimal == 28:
print("La valeur choisie est : "+str(decimal))
bin(28)
elif decimal == 29:
print("La valeur choisie est : "+str(decimal))
bin(29)
elif decimal == 30:
print("La valeur choisie est : "+str(decimal))
bin(30)
elif decimal == 31:
print("La valeur choisie est : "+str(decimal))
bin(31)
Si je le lance sous IDLE, il me renvoie ce message :
Traceback (most recent call last):
File "C:\Users\******\Desktop\python\BinaryDecimal 31.py", line 5, in <module>
decimal == raw_input(invite)
NameError: name 'decimal' is not defined
Pourriez-vous m'aider, à nouveau ?
Je pense qu'il te manque une part de la logique car là, le code est réellement mauvais. Sans méchanceté, vraiment, mais t'es pas sur la bonne voie. ![]()
Vu qu'on se croise de temps en temps tu peux me MP si jamais tu veux quelques conseils pour débuter. ![]()
Non, t'inquiètes pas
J'débute, tu sais :clown:
Sinon, merci pour les MP ![]()
Oulah ne penses-tu pas qu'il y a beaucoup plus simple qu'une forêt de if/else if ? Imagine que tu doive gérer par exemple les nombres entre 0 et 1000, tu vas pas faire 1000 fois la même ligne.
Dans ton code il y a quand même des lignes qui se ressemblent à une exception près:
print("La valeur choisie est : "+str(decimal))
bin(31)Par exemple ici, 31 est bien la valeur contenue dans decimal. Du coup pourquoi ne pas faire tout simplement :
print("Decimal to Binary")
print("Nombres acceptés : 0 - ... - 31")
invite = "Propose un Nombre, et il sera converti en binaire : "
while True :
decimal == raw_input(invite)
print("La valeur choisie est : "+str(decimal))
bin(decimal)
là tout de suite ton code est factorisé et peut gérer n'importe quel entier (en supposant qu'on entre bien un entier). Maintenant, un autre soucis: quand on regarde la doc de python concernant la fonction bin:
Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.
On peut retenir ici que la fonction bin retourne un binary string. Or ici, tu appelles la fonction, mais tu n'en fais rien. Du coup si tu veux afficher ce que renvoie la fonction, tu as juste à remplacer la ligne
bin(decimal)par
print(bin(decimal).decode("ascii"))Le decode transforme ton binary string en string normal
Et là ton code est fonctionnel ![]()
Merci beaucoup ! Je pensais pas pouvoir mettre une variable dans le bin.
As tu déjà fais des cours d'algo auparavant ? Si non, tu devrai en faire ca devrait t'aider
Et aussi quand tu décide de faire un programme, réfléchis comment tu vas le faire
Merci du conseil !