coder base 2 en base 10 [problème] - Python - Programmation
Marsh Posté le 16-12-2007 à 19:58:19
Sur ce forum, on ne fait pas ton travail a ta place. Si tu as un problème lors de la conception, on t'aidera mais jamais nous ne ferons ton programme en entier.
Marsh Posté le 16-12-2007 à 19:59:33
justement, je ne demande pas le programme entier, juste qu'on m'explique la partie qui ne va pas...
Je voudrais simplement savoir comment passer de la base 2 a la base 10 car on en nous a rien dit a ce sujet, pareil pour l'inversion de caractères
Marsh Posté le 16-12-2007 à 23:04:08
un nombre en base 2 s'écrit : bnbn-1....b1b0
sa valeur est donnée par :
Somme(i=0...n) bi*2^i
Ex :
10011 = 1*2^4 + 1 *2^1 + 1*2^0 = 1 + 2 +16 =19
Pour un nombre ne base 10, c'est idem :
159 = 1* 10^3 + 5*10^2 + 9*10^0
Donc le passage base 2->base 10
se fait en sommant les puissances de 2 pour lesquels le bit est à 1.
C'ets pas au programme de la fac ça genre, L1 math info ???
Marsh Posté le 17-12-2007 à 06:13:34
Salut, en fait, ça je le sais, mais justement, je ne sais pas comment récupérer la position du nombre, car c'est ce dont j'ai besoin pour ensuite le mettre a la puissance "x".
Car le python est aussi dans mon programme, malheureusement, mon prof va sur ebay et ne nous aide pas du tout... Il nous file la feuille de TP puis on se débrouille.
Je suis pas en math info, je suis en section "polytech", c'est un petit mélange de spc et math info
S'il vous plait, ne répondez plus, j'ai peut etre une idée, je vous la soumettrez en rentrant, après vous me direz ce que vous en pensez, merci
Marsh Posté le 17-12-2007 à 07:16:42
Il faut vraiment que tu le fasses à la main, ou tu dois juste convertir ton nombre ?
Parce que si c'est juste ça ta question :
Citation : PS : je vous demande juste comment passer de la base 2 à la base 10. |
Alors un coup de google me retourne ce lien : http://python.developpez.com/faq/?page=Nombres
Et si tu dois le faire toi-même, en découpant la chaîne, une nouvelle recherche sous google me retourne ceci : http://www.ebgm.jussieu.fr/~fuchs/python/strings.html
Marsh Posté le 17-12-2007 à 11:02:24
Merci pour tes liens elmoricq, je vais les regarder tout de suite/
Sinon, je ne comprend pas trop ta question, je dois en effet convertir le nombre, mais qu'entends tu par "le faire à la main"?
Ps : j'ai déja chercher dans google, mais sans résultats satifsfaisants, c'est pour cela que je me suis tourné vers le forum
PS 2 : on utilise raw_input pour définir la chaine car c'est un utilisateur qui est censé mettre la chaine qu'il souhaite.
(on commence notre code par :
Citation :
|
Merci beaucoup, au final, ça donne ceci :
Citation :
print s |
Il ne me manque plus qu'une condition qui ne prenne en compte que les 1 je suis en train de tester diverses choses.
Merci beaucoup, je mettrai a jour le script dès que j'aurai trouvé
Marsh Posté le 17-12-2007 à 11:38:20
on parle de code source pas de script
et raw_input, c'ets pas standard, ca sort d'ou ?
Marsh Posté le 17-12-2007 à 12:01:40
raw_input sert à demander à l'utilisateur d'entrer une chaine de caracteres si j'ai bien compris.
Désolé pour "script", c'est l'habitude ^^
Donc, voila ce que j'obtiens pour le moment, mais il y a une petite erreur, j'essaye de la résoudre :
Citation :
print s |
L'erreur est que je ne définis pas le "a" dès le début, ce qui fait qu'il ne le reconnait pas, pourtant, j'en ai besoin pour que le programme trie les 0 et les 1 du reste.
Je pense qu'il faut modifier
Citation : s=int(a,2) |
, mais la je vois pas quoi faire ^^, je creuse ma tete a la recherche d'une petite idée
Marsh Posté le 17-12-2007 à 13:20:20
ReplyMarsh Posté le 17-12-2007 à 13:50:13
http://docs.python.org/lib/built-in-funcs.html
Citation :
|
Marsh Posté le 17-12-2007 à 18:49:18
Salut, alors voila ce que j'ai fait :
Citation : n=raw_input("Saisir une chaine de caracteres : " ) |
mais, il y a une erreur, je vois pas comment faire autrement.
De toutes façons, je pense que je suis allé plus loin que ce qui est demandé
Par contre, si quelqu'un sait comment récupérer chaque caractere de la chaine et connaitre sa position, j'aimerai bien savoir quelle "balise" utiliser
Marsh Posté le 18-12-2007 à 15:50:14
Qu'est-ce que tu veux faire ?
Je n'ai pas tout compris.
Si tu veux juste convertir le binaire saisi en entier et l'afficher en décimal, il suffit de vérifier que la chaîne contient bien des 0 et des 1, puis de la convertir avec ta fonction s=int(n,2), puis d'afficher s non ?
Pourquoi tu affectes 1 à z et qu'ensuite tu testes sa valeur ?
Je n'ai pas tout compris.
Marsh Posté le 18-12-2007 à 17:56:00
Universofkiller a écrit : Salut, alors voila ce que j'ai fait :
|
C'est censé faire quoi cette horreur exactement?
Marsh Posté le 18-12-2007 à 19:17:36
Ben en fait, c'est censé vérifier que la chaine ne contient que des 0 et des 1
Je vois pas comment faire autrement en fait, si vous pouviez éclairer ma lanterne s'il vous plait
Voila ce que je viens de faire :
Citation :
|
malheureusement, ça ne m'affiche que ce qui est dans raw input (c'est a dire, les chiffres que je rentre.)
savez vous pourquoi?
Marsh Posté le 18-12-2007 à 20:11:59
gzii a écrit : |
c'est exactement ce que je tente de faire ^^
Marsh Posté le 18-12-2007 à 21:11:26
Là tu affiches juste chaque chiffre vérifié,
alors qu'il faut d'abord vérifier qu'il n'y ait que des 0 et des 1 sinon erreur,
puis ensuite convertir la chaîne entière, et non les chiffres un par un.
Marsh Posté le 18-12-2007 à 22:32:22
Tu mets une variable à une valeur donnée si un des éléments de la chaine est différent de 0 et de 1, et si elle n'est pas à cette nouvelle valeur c'est que c'est bon,
et ensuite tu fais la conversion avec le int(x,base)
Marsh Posté le 18-12-2007 à 22:33:40
Il y'a aussi possibilité de se faire une petite fonction qui fait le raw_input et qui vérifie par rapport à une expression régulière mais bon ce sera pour plus tard (à moins que ça existe déjà dans le langage ? Pas encore vu).
Marsh Posté le 19-12-2007 à 08:24:52
Universofkiller a écrit : Ben en fait, c'est censé vérifier que la chaine ne contient que des 0 et des 1 |
Quel intérêt ça a?
Le builtin int génère une erreur si il n'arrive pas à parser la chaîne, donc en base 2 si la chaîne contient autre chose que des 0 et des 1:
Code :
|
Donc suffit d'écrire un truc du style
Code :
|
Marsh Posté le 20-12-2007 à 08:22:35
Je pense que ce serait une bonne idée que tu lises le Python Tutorial, il est filé avec python et tu peux le trouver sur le site officiel.
Marsh Posté le 16-12-2007 à 19:56:47
Salut, alors voila, je débute le python cette année avec la fac.
Malheureusement, mon prof ne nous aide pas, il reste sur ebay.
Donc voila, je dois créer un petit programme qui :
-demande à l'utilisateur une chaine de caractères en base 2(ça, pas de problèmes, presque)
-récupère cette chaine et la code en base 10(et la, je sais pas ce qu'il faut que je fasse pour coder la base à part utiliser def)
-donne la traduction en base 10 à l'utilisateur (la encore, pas de problèmes )
Mon plus gros problème en réalité (et donc qui me bloque pour ma conversion ensuite) est que je ne connais pas une fonction qui récupère un seul caractère de la chaine
De meme, je n'en connais pas qui reconnait la position du caractere
Il me faudrait donc juste savoir quelle "balise" permet cela, après, c'est a moi de réfléchir
Merci d'avance pour votre aide.
PS : je vous demande juste comment passer de la base 2 à la base 10.
PS 2 : j'aurai une autre question :
Comment récupérer une chaine de caractères et l'afficher dans le sens inverse?(par exemple, je prend la chaine : "123abc" puis j'affiche cba321" )
Message édité par Universofkiller le 16-12-2007 à 20:19:32
---------------
Ventes / Feedback