Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Débutant] Exercice d'après Swinnen avec une liste : rien ne va plus si un peu corsé

21 réponses
Avatar
chose
Bonjour,

Je débute avec le livre de M. Swinnen, je suis arrivé à l'exercice sur
les listes (PDF, page 54) :

#Exercice 5.13 : Écrivez un programme qui recherche le plus grand
#élément présent dans une liste donnée. Par exemple, si on l'appliquait
#à la liste [32, 5, 12, 8, 3, 75, 2, 15], ce programme devrait afficher
#: le plus grand élément de cette liste a la valeur 75.

Je l'ai réussi avec [32, 5, 12, 8, 3, 75, 2, 15].
Mais quand j'utilise raw_input pour des listes sur mesure,
rien ne va plus.
J'ai testé deux variantes qui donnent toutes les deux un résultat
erroné. Je suis curieux de connaître la raison de cette erreur.
Le code est simple pour les habitué(e)s, un coup d'oeil de votre part
me ferait plaisir et m'aidera certainement. Merci.
a+
Chose

------------------------------------------------------ programme 1

#-*- coding:latin-1 -*-
a=[]
print "Nombre d'items dans la liste ?"
b=int(raw_input())
print "Va pour", b, "items"
i = 0
while i < b:
a.append(raw_input())
i = i + 1
d=len(a)
i =0
c=0
print a
while i < d:
if int(a[i]) > c:
c = a[i]
print c
i = i+1
print "Le plus grand élément de la liste a la valeur de", c

------------------------------------------------------ résultat de 1

Voici le résultat :

Nombre d'items dans la liste ?
7
Va pour 7 items
14
5
16
3
25
4
60
['14', '5', '16', '3', '25', '4', '60']
14
Le plus grand élément de la liste a la valeur de 14

------------------------------------------------------ programme 2

#-*- coding:Latin-1 -*-
a=[]
print "Nombre d'items dans la liste ?"
b=int(raw_input())
print "Va pour", b, "items"
i = 0
while i < b:
a.append(raw_input())
i = i + 1
d=len(a)
i =0
c=0
print a
while i < d:
if a[i] > c: #j'ai changé ici
c = a[i]
print c
i = i+1
print "Le plus grand élément de la liste a la valeur de", c

------------------------------------------------------ résultat de 2

Nombre d'items dans la liste ?
7
Va pour 7 items
14
5
16
3
25
4
60
['14', '5', '16', '3', '25', '4', '60']
14
5
60
Le plus grand élément de la liste a la valeur de 60

1 réponse

1 2 3
Avatar
chose
Il se trouve que Boris Borcic a formulé :
chose wrote:

print max(int(x) for x in iter(raw_input,''))


Là je nage, c'est pas grave, faut que j'avance.



iter(f,sentinelle) est un iterateur qui va invoquer f() et retourner
la valeur obtenue jusqu'à ce que f()==sentinelle.

Donc iter(raw_input,'') va retourner des lignes d'input jusqu'à ce qu'on
entre une ligne vide.

Ainsi max(int(x) for x in iter(raw_input,'')) va calculer le max
des valeurs entières int(x) des lignes d'input x entrées jusqu'à
une ligne vide qui signalera la fin des données.

hth


Merci pour l'explication, ce n'était pas évident au premier coup
d'oeil.



1 2 3