[python] Debut et fin de liste incorrecte
Résolu
stephane70
-
stephane70 -
stephane70 -
Bonjour,
Je suis toujours les cours de Schwinnen en python et dans un exercice, il nous est demandé d'entrer une serie, puis un debut et une fin pour définir en réponse un maximum compris entre le début et la fin définit par nous. (Oulah, j'espère que j'ai été assez clair)
J'ai donc créer une déf qui renvoie le maximun d'une liste compris entre le début et la fin définit comme ceci :
Mais voila si j'entre une dizaine de chiffre décroissant,(10,9,8,7,6,5,4,3,2,1) et comme début '1' et comme fin '10', il m'affiche comme maximum "9" alors que ca devrait être 10.
Pourtant dans ma def j'ai bien mis debut-1 et comme fin-1
Je suis perdu et ne comprend pas mon erreur
j'en appelle donc a votre aide
Merci d'avance
Stephane70
Je suis toujours les cours de Schwinnen en python et dans un exercice, il nous est demandé d'entrer une serie, puis un debut et une fin pour définir en réponse un maximum compris entre le début et la fin définit par nous. (Oulah, j'espère que j'ai été assez clair)
J'ai donc créer une déf qui renvoie le maximun d'une liste compris entre le début et la fin définit comme ceci :
def elemax(liste,debut,fin): return max(liste[(debut-1):(fin+1)])<//code> Et un programme appellant qui demande d'entrer une liste, un début et une fin pour le choix et qui renvoie le maximun <code>from maxserie import * serie=[] print 'Lorsque vous avez termine votre liste, entrez \'q\'' c=raw_input('Entrez votre liste separe par des virgules : ') serie.append(c) while c!='q': c=raw_input('Entrez votre liste separe par des virgules : ') if c!='q': serie.append(c) a=input('Entrez le debut de la recherche : ') b=input('Entrez la fin de la recherche : ') print elemax(serie,a,b) raw_input()
Mais voila si j'entre une dizaine de chiffre décroissant,(10,9,8,7,6,5,4,3,2,1) et comme début '1' et comme fin '10', il m'affiche comme maximum "9" alors que ca devrait être 10.
Pourtant dans ma def j'ai bien mis debut-1 et comme fin-1
Je suis perdu et ne comprend pas mon erreur
j'en appelle donc a votre aide
Merci d'avance
Stephane70
A voir également:
- [python] Debut et fin de liste incorrecte
- Liste déroulante excel - Guide
- Fin des zfe - Guide
- Citizen code python avis - Accueil - Outils
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
3 réponses
C'est à cause de ça:
Dans ta liste, tes nombres sont entrés en tant que chaine de caractère, or
Par contre
Il faut que tu fasses une conversion en entier au moment de l'ajout:
c=raw_input('Entrez votre liste separe par des virgules : ')
Dans ta liste, tes nombres sont entrés en tant que chaine de caractère, or
max(["10", "9"])renverra 9 car le caractère 9 est plus fort que le 1 qui marque le début de 10.
Par contre
max([10, 9])renverra bien 10.
Il faut que tu fasses une conversion en entier au moment de l'ajout:
if c!='q': serie.append(int(c))
Bonjour et encore une fois merci Kilian
Je subodorais que c'etait la le noeud de l'erreur mais je ne savais pas comment resoudre le problème, enfin surtout comment refaire la conversion en integer ou en float.
Encore une fois : un problème en python, vous pouvez toujours compter sur kilian et sur Sebsauvage.
Merci Kilian
Stéphane70
Je subodorais que c'etait la le noeud de l'erreur mais je ne savais pas comment resoudre le problème, enfin surtout comment refaire la conversion en integer ou en float.
Encore une fois : un problème en python, vous pouvez toujours compter sur kilian et sur Sebsauvage.
Merci Kilian
Stéphane70