[Python] Problème avec une fonction
kilian
Messages postés
8732
Date d'inscription
Statut
Modérateur
Dernière intervention
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai voulu écrire une fonction qui convertit les nombres entiers de base 2 à leur base10. Seulement j'ai un problème.
Le nombre binaire entré par l'utilisateur est reçu comme étant une chaine de caractère. Je le retranscris ensuite à l'envers dans une liste puis je transforme chaque 0 et 1 de la liste en entiers. Et la je fais sur chacun l'opération d'addition avec une puissance de deux etc.....
Voici le code de la fonction:
Et voici l'erreur retournée:
Mais je ne comprends pas, pourtant j'ai transformé chaque élément de ma liste en entier....
Merci d'avance en tout cas....
J'ai voulu écrire une fonction qui convertit les nombres entiers de base 2 à leur base10. Seulement j'ai un problème.
Le nombre binaire entré par l'utilisateur est reçu comme étant une chaine de caractère. Je le retranscris ensuite à l'envers dans une liste puis je transforme chaque 0 et 1 de la liste en entiers. Et la je fais sur chacun l'opération d'addition avec une puissance de deux etc.....
Voici le code de la fonction:
def debinarisateur(base2): resultat=0 base2_inverse=[] compteur=len(base2)-1 while compteur>0: base2_inverse.append(base2[compteur]) compteur=compteur-1 compteur2=1 compteur=0 for chiffre in base2_inverse: int(chiffre) while compteur2<len(base2_inverse): resultat=resultat+(base2_inverse[compteur2]*(2**compteur)) compteur2=compteur2+1 compteur=compteur+1 print resultat
Et voici l'erreur retournée:
resultat=resultat+(base2_inverse[compteur2]*(2**compteur)) TypeError: unsupported operand type(s) for +: 'int' and 'str'
Mais je ne comprends pas, pourtant j'ai transformé chaque élément de ma liste en entier....
Merci d'avance en tout cas....
Kilian, débutant en tâche de fond.....
A voir également:
- [Python] Problème avec une fonction
- Fonction si et - Guide
- Citizen code python avis - Accueil - Outils
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
6 réponses
for chiffre in base2_inverse: int(chiffre)
ça convertis chiffre en entier... puis jette le résultat à la poubelle !
(Tu n'a affecté le résultat à rien.)
Il faudrait faire:
for i in range(len(base2_inverse)): base2_inverse[i] = int(base2_inverse[i])
ou encore, d'une façon plus pythonique:
base2_inverse = [int(i) for i in base2_inverse]
(Ce qui signifie: construire une nouvelle liste en prenant int(i) pour chaque élément i de la liste base2_inverse)
Magnifique, ça marche. J'ai donc pris ta façon "pythonique", je l'ai trouvée plus sympa, je ne savais pas qu'on pouvais mettre des instructions entre les crochets au moment de l'affectation d'une liste.
Merci beaucoup :-)
PS: Petite erreur sur mon script également : écrire compteur2=0 au lieu de 1.
Merci beaucoup :-)
PS: Petite erreur sur mon script également : écrire compteur2=0 au lieu de 1.
Kilian, débutant en tâche de fond.....
A propos, pour convertir un nombre binaire en entier, il y a une méthode toute simple:
et hop !... :)
>>> print int('1011010',2) 90
et hop !... :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Loool....
Ca m'etonne pas, remarque. Mon but c'était surtout de retranscrire dans un petit script les conversions que je viens d'apprendre en cours d'info. Pour le fun....
Merci pour l'astuce :-)
Ca m'etonne pas, remarque. Mon but c'était surtout de retranscrire dans un petit script les conversions que je viens d'apprendre en cours d'info. Pour le fun....
Merci pour l'astuce :-)
Kilian, débutant en tâche de fond.....