[python] Debut et fin de liste incorrecte

Résolu/Fermé
stephane70 - 29 févr. 2008 à 15:11
 stephane70 - 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

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 févr. 2008 à 20:37
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))
0
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
0
Mince j'ai perdu le bouton 'Resolu' !!!
0