Bonjour à tous, je fais mes premiers pas en Python aujourd'hui . Mon programme qui est censé afficher le maximum d'une liste affiche juste la valeur la plus grande entre i et i+1 :
t,i,c,val_max=[1,3,4,2],0,0,0
while(c<4):
for i in t:
if(t[i]<t[i+1]):
val_max=t[i+1]
else:
val_max=t[i]
i+=1
c+=1
print val_max
Déjà ça c'est très moche, la déclaration sur une ligne c'est bien quand tu déclare simultanément deux valeurs, surtout si ces valeurs ont un lien sémantique, 4 d'un coup c'est trop.
Au passage i n'a pas besoin d'être déclaré à l'avance.
while(c<4):
for i in t:
if(t[i]<t[i+1]):
val_max=t[i+1]
else:
val_max=t[i]
i+=1
c+=1
print val_max
Ici le while ne sert à rien, et je crois que tu n'a pas compris comment fonctionnait la boucle for en Python (c'est pas du tout comme en C).
Ton i n'est pas l'indice de la liste, mais la valeur de chaque élément, tu n'a donc pas besoin d'utiliser t[i], puisque i est directement la valeur que tu cherche.
Je propose cette solution :
t = [1, 3, 6, 2, 4, 10, 9, 14, 24, 20]
max = 0
for v in t:
if v > max:
max = v
print max
Ça ne fonctionne que pour une liste d'entiers positifs bien entendu.
Dans un 1er cas il doit comprendre qu'il existe des fonctions toutes faites en python. Il ne peut pas les inventer.
Visiblement il est débutant en Python, mais aussi en programmation en général, recoder des fonctions qui existent déjà peut être un entraînement, je ne vois pas de problème à cela.
C'est une bonne pratique de pas réinventer la roue, mais quand on apprend à programmer c'est, je pense, plus formateur de recoder la fonction max() que de l'utiliser telle quelle.
Une bonne solution serait la suivante, mais elle ne marche pas sur une liste vide (logique, le minimum d'une liste vide n'est pas défini) :
li = [1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1]
current_max = li[0]
for elem in li[1:]:
if elem > current_max:
current_max = elem
Si tu veux en plus l'indice de la plus grande valeur :
li = [1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1]
current_max, current_max_i = li[0], 0
for i, elem in enumerate(li[1:]):
if elem > current_max:
current_max = elem
current_max_i = i + 1 # Plus un, car on parcourt la liste décalée d'un élément
Merci à tous, oui enfaite le C m'a donné des automatismes, qu'il faut que je place entre paranthèse.
Faut dire qu'avec la boucle for, je l'ai pas encore vu ;o .
bonsoir moi aussi je suis débutant hier mon prof m'a donné un exercice similaire seulement il me demande de faire sans min ni max voici l"noncé des coups de mains welcome: écrire une fonction qui permet d’afficher le maximum et le minimum d'une d'une liste sans utiliser max et min
Il y a plusieurs exemples qui ont été donnés sur cette page, ils fonctionnent, tu peux les étudier / t'en inspirer.
Blond, bouclé, toujours le sourire aux lèvres...
[Python] Les listes
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...