INFO TEST D'ALGO BTS1 A Mardi 10 février 2015
redonné le mercredi 27 janvier 2016 en BTS1 B
Premier travail
Voici un script écrit en Python 2.7
from random import*
from string import*
def es3():
print "On s'intéresse à trois étudiants en beaux arts"
L=["Isidore", "philomy", "Arverne"]
B=[]
C=[]
D=[L]
for i in range(3):
print "Donner la note de chinois au premier semestre de ",L[i]
b=input()
B.append(b)
print "Donner sa note de suédois au premier semestre "
c=input()
C.append(c)
D.append(B)
D.append(C)
for line in D:
print line
s=B[0]
for i in range(3):
if s<B[i]:
s=B[i]
p=L[i]
print " En chinois c'est",p
M=[]
for i in range(3):
M.append((B[i]+ C[i]) / 2.)
D.insert(1,M)
for line in D:
print line
QUESTIONS :
1. Que signifie B = [ ] ? B est une liste vide.
On ne peut pas dire que B contient une liste vide
car dans B il n'y a rien.
2. Quelles sont les valeurs de i quand il y a : for i in range(3): ?
i prend successivement les valeurs entières 0 ; 1 ; 2
Aucune initialisation de i n'est nécéssaire avec une boucle for.
3.Que font les lignes
for line in D:
print line ? La liste D a ses termes affichés les uns en dessous des autres
4.Qu'y a-t-il dans D avant le premier for et qu'y a-t-il dans D après le premier for ?
Avant il y a seulement la liste L car D = [ L ]
Après il y a en plus les listes B, de notes de chinois, et C, de notes de suédois.
C'est-à-dire on : L = [ L , B , C ]
5.Que donne l'affichage de p ? p est l'étudiant qui a la meilleure note en chinois
p est un élément de L
6. Que représente s ? s est la meilleure note en chinois
7. Qu'est-ce que M ? M est la liste des moyennes de chacun des étudiants
7.Quel est l'effet de D.insert(1,M) ? Cela met la liste M dans la liste L en seconde position
de façon à avoir M comme terme d'indice 1 dans L
8.Qu'y a-t-il dans D à la fin ? La liste des trois noms ,puis la liste de trois moyennes ,
puis la liste des trois notes de chinois,enfin la liste des trois
notes de suédois.
C'est-à-dire D = [ L , M , B , C ]
9. Qu'y a-t-il dans d à la fin c-à-d quel est le but du script ?
Avoir un bulletin avec les listes des noms,
des moyennes, des notes de
chinois, puis des notes suédois.
10.Quand on a : M.append(( B[i]+C[i])/2.)
Quel est l'intérêt de mettre 2. au lieu de 2 ?
Pour obtenir le résultat sous forme décimale
c-à-d obtenir le type float
A quoi sert le append ?
Cela permet de mettre dans la liste M
à la fin la valeur de ( B[i]+C[i])/2.
------------------------------------------------
11. Question facultative non posée pour ceux qui ont le temps
Quel affichage aurait-on obtenu si on avait mis( avec le module from string import* ?
F=join(L)
print F ? Cela permet d'avoir les noms les uns à côté des autre,
sans liste sans crochets ni virgule
Pour voir l'effet du script de la partie A on a par exemple:
>>> es3()
On s'intéresse à trois étudiants en beaux arts
Donner la note de chinois au premier semestre de Isidore
15
Donner sa note de suédois au premier semestre
12
Donner la note de chinois au premier semestre de philomy
13
Donner sa note de suédois au premier semestre
10
Donner la note de chinois au premier semestre de Arverne
17
Donner sa note de suédois au premier semestre
16
['Isidore', 'philomy', 'Arverne']
[15, 13, 17]
[12, 10, 16]
En chinois c'est Arverne
['Isidore', 'philomy', 'Arverne']
['13.5', '11.5', '16.5']
[15, 13, 17]
[12, 10, 16]
>>>
( Remarque: Si à partir de la ligne D.append(B) on mettait les lignes dans la boucle for i in range(3):
on répèterait simplement plusieurs fois la même chose )
-----------------------------------------------------------------------
Second ttravail
1. Écrire en Python 2.7 un script qui demande la saisie d'une liste N de
cinq entiers naturels certains pairs et certains impairs puis qui en donne
la liste P de ceux qui sont pairs puis qui donne une liste F contenant P,
la liste des carrés des éléments de P et la liste des cubes des éléments de P,
en affichant F sur trois lignes comme pour une matrice.
REPONSE : On peut proposer
from random import*
def dist():
N=input("Donner cinq entiers naturels pairs ou impairs ")
F=[]
P=[]
for i in range(5):
if N[i]%2==0:
P.append(N[i])
F.append(P)
F.append([elem**2 for elem in P])
F.append([elem**3 for elem in P])
for line in F:
print line
Par exemple on obtient:
>>> dist()
Donner cinq entiers naturels pairs ou impairs [14,8,9,12,13]
[14, 8, 12]
[196, 64, 144]
[2744, 512, 1728]
>>>
( Remarque : la liste P s'affiche car elle est dans F. Il est donc inutile de mettre print P )
2. Écrire un script qui permet d'ordonner dans l'ordre croissant les termes
d'une liste L de valeurs numériques sans utiliser L.sort().
REPONSE: On peut proposer:
from random import*
def tri():
L=input( "Donner une liste de valeurs numériques: " )
for i in range(len(L)):
for j in range(i,len(L)):
if L[i]>L[j]:
L[i],L[j]=L[j],L[i]
print L
Par exemple on obtient:
>>> tri()
Donner une liste de valeurs: [16,4,8,1,9]
[1, 4, 8, 9, 16]
>>>
-------------------------------------------------------------------------------------------------