ITI1520
Exemples des questions de Test 3 – pratique 3
1) Quel est le type pour les paramètres et le résultat dans la définition de
fonction suivante?
def test(x):
'''
Retourne True si la valeur 0 se trouve en x, et False sinon
>>> test((1,2,0,4,5))
True
>>> test((1,5,6))
False
'''
res = False
for val in x:
if val == 0:
res = True
return res
Réponses possibles (choisissez une):
a) (str,str)->bool
b) (tuple)->bool
c) (tuple,int)->noneType
d) (str)-> int
2) Quelle est la description correcte de la fonction suivante?
def ma_fonction(m):
'''(list) -> bool
Description:
>>> m = [[1,2,3],[4,5,6],[7,0,8]]
>>> ma_fonction(m)
True
>>> m2 = [[1],[3,4,5]]
>>> ma_fonction(m2)
False
'''
res = False
for rang_val in m:
for col_val in rang_val:
if col_val == 0:
res = True
break
return res
Réponses possibles (choisir une):
a) Retourne True si la matrice m (ou liste de listes) contient au moins un
zéro
b) Retourne True si la matrice m (ou liste de listes) ne contient pas des
zéros
c) Change tous les éléments dans la matrice m (ou liste de listes) a zéro
d) Aucun de ci-dessus
3) Si la liste L contient N = 1000 éléments, combien de pas sont effectués
dans la fonction suivante? Autrement dit, combien de fois le test L[i]==L[j]
est exécuté ?
def ma_fonction(L):
compteur=0
for i in range(len(L)):
semaphore=True
for j in range(len(L)):
if L[i] == L[j] and i!=j:
semaphore = False
if semaphore:
compteur=compteur+1
return compteur
L=[1, 0, 2, 0, 3]
resultat = ma_fonction(L)
print(resultat)
Réponses possibles (choisir une):
a) Moins de 20
b) Entre 1 000 et 9 000 fois
c) Entre 10 000 and 100 000 fois
d) Entre 200 000 et 2 millions de fois
e) Entre 10 millions et 200 millions de fois
4) Combien d’objets sont créés dans ce programme ?
class Point(object):
def __init__(self,x,y):
self.x = x
self.y = y
p1 = Point(10,20)
p2 = Point(30,50)
p3 = p2
p4 = Point(-10,5)
p4 = p1
Réponses possibles (choisir une):
a) 3
b) 4
c) 5
d) 2
e) Aucune des réponses ci-dessus
b. Combiens d’objets sont encore disponible (accessible) à la fin du
programme (avant qu’il se termine) ?
Réponses possibles (choisir une):
a) 3
b) 4
c) 5
d) 2
e) Aucune des réponses ci-dessus
5) Qu’est-ce que le programme suivant affiche-t-il?
def orange(n):
if n > 0:
print(n,end=" ")
orange(n-2)
def guava(n):
if n > 0:
guava(n-2)
print(n,end=" ")
guava(10)
print()
orange(10)
print()
Réponses possibles (choisir une):
a) 1 3 5 7 9
97531
b) 2 4 6 8 10
10 8 6 4 2
c) 10 8 6 4 2
2 4 6 8 10
d) Aucun de ci-dessus
6) Laquelle est la plus correcte description de la fonction suivante ?
def ma_fonction(x, v):
'''
Description:
>>> ma_fonction((1,2,3,2,5), 2)
True
>>> ma_fonction((1,5,6), 2)
False
'''
res = False
n = 0
for val in x:
if val == v:
n = n + 1
if n == 2:
res = True
return res
Réponses possibles (choisissez une):
a) Retourne False si la valeur v se trouve en x
b) Retourne True si la valeur 2 se trouve en x
c) Retourne False si la valeur 2 se trouve en x
d) Retourne True si la valeur v se trouve au moins 2 fois en x
7) Lesquels des programmes suivants I, II, et III sont équivalentes à ce
programme:
m = [[1,2,3],[4,5,6]]
rang = 0
while rang < len(m):
col = 0
while col < len(m[rang]):
m[rang][col] = 0
col = col + 1
rang = rang + 1
I.
m = [[1,2,3],[4,5,6]]
for rang_val in m:
for col_val in rang_val:
col_val = 0
II.
m = [[1,2,3],[4,5,6]]
for val_rang in m:
col = 0
while col < len(val_rang):
val_rang[col] = 0
col = col + 1
III.
m = [[1,2,3],[4,5,6]]
rang = 0
while rang < len(m):
col = 0
while col < len(m):
m[rang][col] = 0
col = col + 1
rang = rang + 1
Réponses possibles (choisir une):
a) I seulement
b) II seulement
c) III seulement
d) I et II
e) I, II, et III
8) Que fait la fonction de la question 3? Quelle est la description la plus
correcte de la fonction?
Réponses possibles (choisir une):
a) Compte combien d’éléments arrivent seulement une fois dans la liste.
b) Compte combien d‘éléments arrivent au moins deux fois dans la liste.
c) Vérifie s’il y a des éléments qui arrivent au moins deux fois dans la liste
d) Vérifie s‘il y a des éléments qui arrivent seulement une fois dans la liste.
e) Aucune des réponses ci-dessus.
9) Que-est ce que le programme Python suivant va-t-il afficher sur l’écran?
class PingPong(object):
num = 0
def next(self):
if (PingPong.num % 2 == 0):
print("Ping")
else:
print("Pong")
PingPong.num += 1
b = PingPong()
b.next()
b.next()
b.next()
c = PingPong()
c.next()
c.next()
Réponses possibles (choisir une):
a) Ping
Ping
Ping
Ping
Ping
b) Pong
Pong
Pong
Pong
Pong
c) Ping
Pong
Ping
Pong
Ping
d) Aucune des réponses ci-dessus
10) Combien d’appels récursifs sont effectués dans le programme suivant ?
def ma_fonction(n):
if n == 1:
return 1
else:
return n + ma_fonction(n - 1)
print(ma_fonction(-4))
Réponses possibles (choisir une):
a) 4
b) -4
c) 10
d) infini
11)
L’ordre de complexité est utilisé pour mesurer le nombre des opérations
exécutées par un algorithme dans le pire des cas (en anglais: Big O
notation). Les constantes et les termes plus petits sont ignorés quand n
deviens large. Par exemple:
4n2 est O(n2)
n2/100 +n est O(n2)
20n -70 est O(n)
10 log2 n + 100 est O(log2 n)
Pour chacune des 3 fonctions suivantes, combien d’opérations sont
exécutées dans la fonction, approximativement, quand n devient large? Par
exemple, pour f2, la réponse est: approximativement linéaire avec n, donc
O(n).
def f1(n):
i = n
while i >= 1 :
i = i // 2
def f2(n):
for i in range(n) :
print('*')
def f3(n):
for i in range(n) :
for j in range(i+1, n):
print('*')
12) Dans la fonction Python suivante une ligne de code qui manque.
def maFonction(x, v):
v = v + 1
t = 100
index = 0
# code manque
x[index] = x[index] * 2
index = index + 1
return v
>>> a = [10, 20, 30]
>>> t = 5
>>> print(maFonction(a, t), t, a)
6 5 [20, 20, 60]
Quelle ligne devrait être la ligne qui maque ?
Réponses possibles (choisir une):
a) while index < len(x) and index % 2 == 1:
b) while index < len(x) and index % 2 == 0:
c) while index < len(x):
if index % 2 == 1:
d) while index < len(x):
if index % 2 == 0:
13) Qu’est ce que le programme Python suivant va-t-il afficher sur l’écran?
def f(x, v):
global b
b = b + 1
for val in x:
print(val, end=" ")
return v
a = "12"
b = 7
print(f(a,b), end=" ")
print(b)
Réponses possibles (choisir une):
a) 1 2 7 7
b) 8 1 2 7
c) 1 2 7 8
d) 7 1 2 7