[Débutant] Exercice d'après Swinnen avec une liste : rien ne va plus si un peu corsé
21 réponses
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
#-*- 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
#-*- 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
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.
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.
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.