A voir également:
- Inverser une liste python
- Inverser liste python - Meilleures réponses
- Retourner une liste python - Meilleures réponses
- Retourner une liste ✓ - Forum - Python
- Annuaire inversé gratuit liste rouge - Forum - Internet / Réseaux sociaux
- Meilleur annuaire inversé gratuit ✓ - Forum - Mobile
- Comment trouver un num de tel sur liste rouge - Forum - Mobile
- Rechercher un numéro sur liste rouge ✓ - Forum - Mobile
3 réponses
fiddy
- Messages postés
- 11066
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 18 octobre 2016
Bonjour,
Pour range(), il ne faut pas oublier le pas : -1.
Il faudrait que tu montres ton programme.
Note : pense bien à utiliser la balise "code".
Exemple :
<code python>ici ton code</code>
Google is your friend
Pour range(), il ne faut pas oublier le pas : -1.
Il faudrait que tu montres ton programme.
Note : pense bien à utiliser la balise "code".
Exemple :
<code python>ici ton code</code>
Google is your friend
F1VP
- Messages postés
- 3
- Date d'inscription
- dimanche 9 novembre 2014
- Statut
- Membre
- Dernière intervention
- 9 novembre 2014
En fait le but du programme est de pouvoir convertir un binaire en décimal, voila ce que j'ai tapé :
print ('Entrez le nombre que vous souhaitez convertir en decimal :')
nbre_a_convertir = input ()
#On transforme le nombre binaire entré par l'utilisateur en une liste
# comportant les chiffres de ce nombre afin de pouvoir les traiter 1 a 1
L = [int(i) for i in str(nbre_a_convertir)]
print L
nbre_converti = 0
for i in range (len(L),0,-1) :
if L[i] == 0 :
nbre_converti += 0
if L[i] == 1 :
nbre_converti += 2**i
print nbre_converti
Je l'exécute, je rentre le nombre que je souhaite, il me créer et affiche la bonne liste puis m'affiche le message d'erreur suivant :
if L[i] == 0 :
IndexError: list index out of range
Je n'ai pas compris l'histoire de balise...
print ('Entrez le nombre que vous souhaitez convertir en decimal :')
nbre_a_convertir = input ()
#On transforme le nombre binaire entré par l'utilisateur en une liste
# comportant les chiffres de ce nombre afin de pouvoir les traiter 1 a 1
L = [int(i) for i in str(nbre_a_convertir)]
print L
nbre_converti = 0
for i in range (len(L),0,-1) :
if L[i] == 0 :
nbre_converti += 0
if L[i] == 1 :
nbre_converti += 2**i
print nbre_converti
Je l'exécute, je rentre le nombre que je souhaite, il me créer et affiche la bonne liste puis m'affiche le message d'erreur suivant :
if L[i] == 0 :
IndexError: list index out of range
Je n'ai pas compris l'histoire de balise...
fiddy
- Messages postés
- 11066
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 18 octobre 2016
if L[i] == 0 : nbre_converti += 0 if L[i] == 1 : nbre_converti += 2**i
nbre_converti+=0 est inutile. Tu peux mettre l'instruction pass à la place.
Sinon, tu peux être plus concis :
nbre_converti+=L[i]* 2**i
for i in range (len(L),0,-1) :
Attention. len(L) vaut le nombre d'élément dans ta liste. Donc si tu fais L[i] ça plantera. Il faudrait plutôt faire : for i in range (len(L)-1,-1,0)
D'ailleurs, utilise plutôt xrange() que range().
Pour l'histoire de la balise, il n'y a rien à comprendre. Il suffit de remplacer "TON CODE" par ton code dans la phrase ci-dessous :
<code python>TON CODE</code>
Exemple :
<code python>print i</code>
F1VP
- Messages postés
- 3
- Date d'inscription
- dimanche 9 novembre 2014
- Statut
- Membre
- Dernière intervention
- 9 novembre 2014
Effectivement c'est plus joli et concis comme ca.
Quelle est la différence entre range et xrange ?
Du coup voila ou en est mon programme :
Mais la c'est la débandade, je te copie quelques exemples de résultat :
"Entrez le nombre que vous souhaitez convertir en decimal :
1011
[1, 0, 1, 1]
12
Entrez le nombre que vous souhaitez convertir en decimal :
1101
[1, 1, 0, 1]
10
Entrez le nombre que vous souhaitez convertir en decimal :
1111
[1, 1, 1, 1]
14
Entrez le nombre que vous souhaitez convertir en decimal :
10111
[1, 0, 1, 1, 1]
28
"
alors que les bons résultats sont 11, 13, 15 et 23
T'as une idée du problème ?
Quelle est la différence entre range et xrange ?
Du coup voila ou en est mon programme :
L = [int(i) for i in str(nbre_a_convertir)] print L nbre_converti = 0 for i in range (len(L)-1,0,-1) : nbre_converti += L[i]* 2**i print nbre_converti
Mais la c'est la débandade, je te copie quelques exemples de résultat :
"Entrez le nombre que vous souhaitez convertir en decimal :
1011
[1, 0, 1, 1]
12
Entrez le nombre que vous souhaitez convertir en decimal :
1101
[1, 1, 0, 1]
10
Entrez le nombre que vous souhaitez convertir en decimal :
1111
[1, 1, 1, 1]
14
Entrez le nombre que vous souhaitez convertir en decimal :
10111
[1, 0, 1, 1, 1]
28
"
alors que les bons résultats sont 11, 13, 15 et 23
T'as une idée du problème ?
fiddy
- Messages postés
- 11066
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 18 octobre 2016
Ca vient d'ici :
range (len(L)-1,0,-1)
C'est range(len(L)-1,-1,-1)
range(...) retourne une liste tandis que xrange() est un générateur. Donc, c'est moins gourmand en mémoire d'utiliser xrange().
range (len(L)-1,0,-1)
C'est range(len(L)-1,-1,-1)
range(...) retourne une liste tandis que xrange() est un générateur. Donc, c'est moins gourmand en mémoire d'utiliser xrange().