INFO TEST janvier 2015 BTS1A
redonné le mercredi 26 janvier 2016 et le mercredi 1 mars 2017
Premier travail:
Voici en Python 2.7 un script:
def sep():
L=input("Entrer une liste de 6 entiers naturels: ")
print L
P=[]
I=[]
s=0
for elem in L:
if elem%2==0:
P.append(elem*2)
else:
I.append(elem+2)
print "P = " ,P
print "I = " ,I
m=P[0]
for i in range(0,len(P)):
s=s+P[i]
if m<P[i]:
m=P[i]
print s
print m
QUESTIONS:
1. Citer toutes les variables utilisées et donner leur type.
L , P , I sont ds listes
s , elem , i , m sont des entiers
2. Que met-on dans P ? dans I ? P contient tous les doubles des entiers pairs de L
I contient tous les entiers impairs auxquels on ajoute 2, de L
3. Que représente s ? Que signifie P[ i ] ? s est la somme des éléments de P
P[i] est l'élément de P d'indice i
4. Qu'est-ce que len(P) ? C'est la longueur de P c-à-d le nombre de ses termes
5. Quel est l'intérêt de input ? De demander la saisie d'une valeur ou liste
6. Quand on écrit :
for i in range(0,len(P)):
quelles sont les valeurs de i ? Les entiers i sont les eniers de 0 à len(P) − 1
7. Que représente m ? C'est ici le plus grand élément de P
8. Que signifie:
for elem in L: ? Cela veut dire : Pour tout élément de L
9. Que signifie :
if elem%2==0: Cela veut dire : si elem est pair c-à-d si elem est divisible par 2
c-à-d si le reste entier de la division de elem par 2 est 0
10.La simulation suivante est-elle correcte?
NON car la somme des termes de P est 16 + 112 = 128 et non 138
et le plus grand terme de P est 112 et non 110
La vraie simulation serait:
>>> sep()
Entrer une liste de 6 entiers naturels: [5,41,8,56,23,7]
[5,41,8,56,23,7]
[5, 41, 8, 56, 23, 7]
P = [16, 112]
I = [7, 43, 25, 9]
128
112
>>>
-----------------------------------------------------------------------------------------
Second travail.
1. Écrire un script qui demande la saisie d'une liste L de six valeurs et
ordonne ses valeurs dans l'ordre croissant, sans utiliser sort() .
REPONSE:
from random import*
def tri():
L=input( "Donner une liste de valeurs numériques: " )
for i in range(6):
for j in range(i,6):
if L[i]>L[j]:
L[i],L[j]=L[j],L[i]
print L
Par exemple:
>>> tri()
Donner une liste de valeurs numériques: [16,4,8,1,9,0]
[0,1, 4, 8, 9, 16]
>>>
2. Compléter cet algorithme pour qu'il fasse apparaître un tableau M de deux listes L1 e L2
formées respectivement par les trois premiers termes de L et par les trois derniers termes de L.
REPONSE: On peut proposer:
from random import*
def tri1():
L=input( "Donner une liste de six valeurs numériques : " )
for i in range(6):
for j in range(i,6):
if L[i]>L[j]:
L[i],L[j]=L[j],L[i]
print L
L1=[]
L2=[]
M=[]
for i in range(3):
L1.append(L[i])
L2.append(L[i+3])
M.append(L1)
M.append(L2)
print M
Par exemple on obtient:
>>> tri1()
Donner une liste de six valeurs numériques : [16,4,8,1,9,0]
[0, 1, 4, 8, 9, 16]
[[0, 1, 4], [8, 9, 16]]
>>>
3. Compléter M par une liste comportant la moyenne des termes de L1 et L2 de même indice.
REPONSE: On peut proposer:
from random import*
def tri3():
L=input( "Donner une liste de valeurs: " )
for i in range(6):
for j in range(i,6):
if L[i]>L[j]:
L[i],L[j]=L[j],L[i]
print L
L1=[]
L2=[]
M=[]
for i in range(3):
L1.append(L[i])
L2.append(L[i+3])
M.append(L1)
M.append(L2)
print M
L3=[]
for i in range(3):
L3.append((L1[i]+L2[i])/2.)
M.append(L3)
print M
Par exemple on obtient:
>>> tri3()
Donner une liste de valeurs: [16,4,8,1,9,0]
[0, 1, 4, 8, 9, 16]
[[0, 1, 4], [8, 9, 16]]
[[0, 1, 4], [8, 9, 16], [4.0, 5.0, 10.0]]
>>>
------------------------------------------------------------------------------------------------------