Posez votre question Signaler

[python] Debut et fin de liste incorrecte [Résolu]

stephane70 - Dernière réponse le 1 mars 2008 à 10:15
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 :
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
Lire la suite 

[python] Debut et fin de liste incorrecte »

3 réponses
Réponse
+0
moins plus
C'est à cause de ça:
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))
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Mince j'ai perdu le bouton 'Resolu' !!!
Ajouter un commentaire
Ce document intitulé « [python] Debut et fin de liste incorrecte » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?