Sol Test3 Practice31
Sol Test3 Practice31
Sol Test3 Practice31
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
a) (str,str)->bool
b) (tuple)->bool
c) (tuple,int)->noneType
d) (str)-> int
Réponse correcte : b)
Explication: Le type du résultat est booléen. Il y a un paramètre de type tuple
(ou list).
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
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)
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
Réponse correcte : d)
Explication: Le test est exécuté N^2 fois. La boucle extérieure s’exécute N
fois, et pour chaque pas de la boule extérieure, la boucle intérieure s’exécute
N fois. La fonction à l’ordre de complexité O(N^2). 1000^2 = 1 million,
donc la réponse et d)
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
a) 3
b) 4
c) 5
d) 2
e) Aucune des réponses ci-dessus
a) 3
b) 4
c) 5
d) 2
e) Aucune des réponses ci-dessus
Réponse correcte :
a. a)
Explication : 3 objets sont créés en utilisant le constructeur de la classe
Point.
b. d)
def guava(n):
if n > 0:
guava(n-2)
print(n,end=" ")
guava(10)
print()
orange(10)
print()
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
Réponse correcte : b)
Explication : Les fonctions affichent des nombres de 10 à 2. Orange le fait
avant l’appel récursif et guava après.
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
Réponse correct : b)
Explication : Le programme met des zéros dans tous les éléments de la matrice
m. II fait le même. I met zéro dans la variable val_col, mais pas dans la
matrice. III ne visite pas toutes les colonnes.
Réponse correcte : a)
Explication: Le compteur est incrémente quand sémaphore devient vrais.
Quand il y a des éléments dupliqués le sémaphore devient faux.
9) Qu’-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()
a) Ping
Ping
Ping
Ping
Ping
b) Pong
Pong
Pong
Pong
Pong
c) Ping
Pong
Ping
Pong
Ping
def ma_fonction(n):
if n == 1:
return 1
else:
return n + ma_fonction(n - 1)
print(ma_fonction(-4))
a) 4
b) -4
c) 10
d) infini
Réponse correcte : d)
Explication : récursivité infini avec -4, -5, -6, -7, ….. parce que le cas de
base n’est jamais exécuté.
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)
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('*')
Réponses:
f1: O(log2 n)
f2: O(n)
f3: O(n2)
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
Réponse correcte d)
Explication: On doit changer les éléments d'index paire (0,2,…)
Les éléments dans la liste a changent par la référence locale à la liste nommé
x. La valeur de la variable globale t ne changes pas. Il y a la variable locale t
qui prend la valeur 100.
13) Qu’est ce que le programme Python suivant va-t-il afficher sur l’écran?
return v
a = "12"
b = 7
print(f(a,b), end=" ")
print(b)
a) 1 2 7 7
b) 8 1 2 7
c) 1 2 7 8
d) 7 1 2 7
Réponse correcte c)
Explication: Va exécuter f(a,b) qui affiche 1 2 après ça va effectues le print.
On affiche la valeur retourné (de v qui est 7) est affiché.
Apres ca on affiche b, qui a changé dans la fonction et devenu 8. La
déclaration global empêche la fonction de créer une autre variable b locale.