INFO TEST D'ALGO 5 février 2014
PARTIE A ( Sur papier )
Voici un algorithme en Python.2
from random import*
def fus( ):
L1=input("Entrer la liste des noms :")
L2=input(" Entrer la liste des notes de maths respectivement ")
L3=input(" Entrer la liste des notes de français respectivement ")
L4=[]
L=[]
print " INFORMATION"
for i in range(len(L1)):
m=round(((L2[i]+L3[i])/2.0),2)
L4.append("Moyenne : "+str(m))
while (len(L1)!=0 and len(L2)!=0):
L.append("--"+str(L1[0])+" --")
L1.remove(L1[0])
L.append("Note de maths : "+str(L2[0]))
L2.remove(L2[0])
L.append("Note de de français :"+str(L3[0]))
L3.remove(L3[0])
L.append(L4[0])
L4.remove(L4[0])
for line in L:
print line
QUESTIONS:
1 . Que signifie :
len( L1) ?
C'est la longueur de la liste L1
L = [] ?
La liste L est la liste vide
while (len(L1)!=0 and len(L2)!=0): ?
Tant que les listes L1 et L2 sont non vide
2. Qu'est-ce que L2[0] ?
C'est le premier terme de la liste L2
3. Quel est l'effet produit par str( L2[0]) ?
Cela transforme en chaîne la valeur numérique L2[0].
4. Que peut-on dire de i quand on écrit :
for i in range(len(L1)): ?
i est un entier qui varie de 0 à len(L1) - 1 compris
5. Quel est l'effet produit par :
L3.remove(L3[0]) ?
Cela retire à L3 son premier terme.
6. Pourquoi dans la boucle while n'utilise-t-on jamaisun autre indice que 0 ?
Parce qu'on supprime chaque fois le premier terme ce qui fait qu'on a accès
chaque fois au terme suivant.
7. Quand les trois listes au départ L1 , L2 ,L3 ont le même nombre d'éléments
que leur arrive-t-il à la fin ?
Elles deviennent vides.
8. A quoi sert ? round(((L2[i]+L3[i])/2.0),2)
Cela permet d'avoir la moyenne des notes L2[i] et L3[j] avec deux décimales
9. Qu'est-ce que ?
"Note de maths : "+str(L2[0])
C'est une concaténation de deux chaînes.
10. Que donne finalement l'algorithme ?
Pour chaque élève il donne le nom puis la note de maths puis la note de français et la moyenne
11. Que se passe-t-il si les listes L1 ,L2 , L3 ne sont pas de même longueur ? Rien de particulier.
C'est la longueur de la liste L1 qui est la référence. Donc rien de particulier.
Effet produit par le programme:
>>> fus()
Entrer la liste des noms :["Alex","Gerard","Robin"]
Entrer la liste des notes de maths respectivement [16,14.5,13]
Entrer la liste des notes de français respectivement [11.5,17,15.5]
INFORMATION
--Alex --
Note de maths : 16
Note de de français :11.5
Moyenne : 13.75
--Gerard --
Note de maths : 14.5
Note de de français :17
Moyenne : 15.75
--Robin --
Note de maths : 13
Note de de français :15.5
Moyenne : 14.25
>>>
--------------------------------------------------------------------
PARTIE B sur ordinateur 30 mn
1. Écrire , en Python . 2 , un algorithme qui demande la saisie de quatre nombres,
les met dans une liste L puis affiche L et leur somme, en utilisant une boucle for.
Réponse:
from random import*
def som( ):
L=[]
S=0
for i in range(0,4):
x=input("Saisissez un nombre")
L.append(x)
S=S+L[i]
print S
Par exemple on obtient:
>>> som()
Saisissez un nombre12
Saisissez un nombre4
Saisissez un nombre3
Saisissez un nombre1
20
>>>
2. Modifier cet algorithme afin qu'il affiche la plus grande des valeurs de L et qu'il affiche
la liste L ordonnée dans l'ordre croissant.
On peut considérer:
from random import*
def clas( ):
L=[]
for i in range(4):
x=input("Saisissez un nombre : ")
L.append(x)
for i in range(4):
for j in range(i,4):
if L[i]>L[j]:
L[i],L[j]= L[j],L[i]
print L
print " Le plus grand nombre dans L est: ", L[3]
Par exemple on obtient:
>>> clas()
Saisissez un nombre : 18
Saisissez un nombre : 14
Saisissez un nombre : 20
Saisissez un nombre : 3
[3, 14, 18, 20]
Le plus grand nombre dans L est: 20
>>>
--------------------------------------------------------------------------------------