QCM Python — Corrigé expliqué (Version 2)

Corrigé détaillé des 20 questions : bonne réponse et explication.

Q1. Quelle sera la sortie du code suivant ?

L = [4, 5, 6] ; L2 = L + [7] ; print(L2)
Réponse — A. [4, 5, 13]
Bonne réponse — B. [4, 5, 6, 7]
Réponse — C. [4, 5, 6, [7]]
Réponse — D. un message d'erreur
Explication

L'opérateur + entre deux listes réalise une concaténation. L + [7] donne donc une nouvelle liste [4, 5, 6, 7].

Q2. Quelle sera la sortie du code suivant ?

def f(t): if len(t) >= 3: return t[1] else: return t[0] print(f([10, 20, 30]))
Bonne réponse — A. 20
Réponse — B. 10
Réponse — C. 30
Réponse — D. un message d'erreur
Explication

La liste [10, 20, 30] a une longueur de 3, donc len(t) >= 3 est vrai. La fonction retourne t[1], c'est-à-dire l'élément d'indice 1 : 20.

Q3. Quelle sera la sortie du code suivant ?

import numpy as np A = np.linspace(0, 1, 5) print(A[3])
Réponse — A. 0.5
Bonne réponse — B. 0.75
Réponse — C. 1.0
Réponse — D. 0.25
Explication

np.linspace(0, 1, 5) génère 5 valeurs régulièrement espacées entre 0 et 1 inclus : [0, 0.25, 0.5, 0.75, 1.0]. L'indice 3 correspond à la quatrième valeur, donc 0.75.

Q4. Quelle sera la sortie du code suivant ?

import numpy as np B = np.arange(2, 10, 2) print(B[2])
Réponse — A. 4
Réponse — B. 8
Bonne réponse — C. 6
Réponse — D. un message d'erreur
Explication

np.arange(2, 10, 2) commence à 2 et ajoute 2 jusqu'à atteindre 10 (exclu) : [2, 4, 6, 8]. L'indice 2 correspond à la troisième valeur, donc 6.

Q5. Quelle sera la sortie du code suivant ?

a = 2 b = 0 for i in range(3): a = a + i b = b + 1 print(a, b)
Réponse — A. 5 2
Bonne réponse — B. 5 3
Réponse — C. 6 3
Réponse — D. 5 2
Explication

range(3) produit 0, 1, 2. On a : a = 2 + 0 = 2 ; puis a = 2 + 1 = 3 ; puis a = 3 + 2 = 5. b est incrémenté 3 fois, donc b = 3. La sortie est 5 3.

Q6. Quelle sera la sortie du code suivant ?

n = 0 i = 1 while n < 5: n = n + i i = i + 1 print(n, i)
Réponse — A. 5 3
Bonne réponse — B. 6 4
Réponse — C. 5 4
Réponse — D. 6 3
Explication

Déroulement : n=0, i=1 ; n=1, i=2 ; n=3, i=3 ; n=6, i=4. La condition n<5 est fausse après n=6, la boucle s'arrête. La sortie est 6 4.

Q7. Qu'est-il retourné si on tape dans la console : print('Banana'[2])

Réponse — A. B
Réponse — B. a
Bonne réponse — C. n
Réponse — D. un message d'erreur
Explication

Les caractères de 'Banana' sont indexés : 0:B, 1:a, 2:n, 3:a, 4:n, 5:a. L'indice 2 correspond à 'n'.

Q8. Qu'est-il retourné si on tape dans la console : print('Banana'[1:4][1])

Réponse — A. a
Bonne réponse — B. n
Réponse — C. B
Réponse — D. un message d'erreur
Explication

'Banana'[1:4] donne les indices 1, 2, 3, soit 'ana'. Puis 'ana'[1] donne 'n'.

Q9. Qu'est-il retourné si on tape dans la console : print(2 * 'BCPST'[-1])

Réponse — A. SS
Bonne réponse — B. TT
Réponse — C. T
Réponse — D. BCPSTBCPST
Explication

On évalue d'abord 'BCPST'[-1], qui vaut 'T'. Ensuite 2 * 'T' donne 'TT'.

Q10. Qu'est-il retourné si on tape dans la console : print((2 * 'BCPST')[-1])

Réponse — A. TT
Réponse — B. T
Bonne réponse — C. T
Réponse — D. BCPSTBCPST
Explication

Les parenthèses imposent de calculer d'abord 2 * 'BCPST', ce qui donne 'BCPSTBCPST'. L'indice [-1] renvoie le dernier caractère, soit 'T'.

Q11. On execute les 2 lignes suivantes :
a = [0,1,2,3,4,5,6,7,8,9]
print(a[1:5][1:3])
Qu'est renvoyé dans la console ?

Réponse — A. [1,2,3,4]
Bonne réponse — B. [2,3]
Réponse — C. [1,3,5]
Réponse — D. [2,4]
Explication

a[1:5] vaut [1,2,3,4] (de l'élément numéro 1 de a au numéro 5 (exclu). On prend ensuite l'élément numéro 1 inclus au numéro 3 exclu de [1,2,3,4], ce qui donne [2,3].

Q12. On execute les 2 lignes suivantes :
tableau = numpy.array([[1,2,3],[4,5,6]])
print(tableau[1,:])
Qu'est renvoyé dans la console ?

Réponse — A. [1,2,3]
Bonne réponse — B. [4,5,6]
Réponse — C. [1,4]
Réponse — D. un message d'erreur
Explication

tableau[1,:] sélectionne la ligne d'indice 1 (la deuxième ligne) et toutes les colonnes. On obtient [4,5,6].

Q13. Qu'est-il retourné si on tape dans la console : print(type([10, 3.5, 'ok'][2]))

Réponse — A. <class 'int'>
Réponse — B. <class 'float'>
Bonne réponse — C. <class 'str'>
Réponse — D. un message d'erreur
Explication

[10, 3.5, 'ok'][2] vaut 'ok', qui est une chaîne de caractères. Son type est donc str : <class 'str'>.

Q14. Quelle sera la sortie du code suivant ?

def mystere(x): if x > 0 and x % 2 == 0: return True else: return False print(mystere(7))
Réponse — A. True
Bonne réponse — B. False
Réponse — C. un message d'erreur
Réponse — D. Aucune réponse
Explication

Pour x=7, x>0 est vrai, mais 7%2 vaut 1, donc x%2==0 est faux. La condition complète avec and est fausse, la fonction retourne False.

Q15. On execute les 3 lignes suivantes :
a = "abc" ; b = "abc"
print(a == b)
print(a is b)
Qu'est renvoyé dans la console ?

Bonne réponse — A. True True
Réponse — B. False False
Réponse — C. True False
Réponse — D. False True
Explication

L'opérateur == compare les valeurs, et les deux chaînes valent "abc", donc a==b est True. Dans l'implémentation Python courante, les deux littéraux identiques peuvent référencer le même objet, donc a is b est aussi True. Pour comparer des valeurs, on utilise == ; is teste l'identité.

Q16. Quelle sera la sortie du code suivant ?

def f(ch1, ch2): res = "" for i in range(len(ch1)): if ch1[i] != ch2: res = res + ch1[i] return res print(f("python", "o"))
Réponse — A. python
Bonne réponse — B. pythn
Réponse — C. pyton
Réponse — D. o
Explication

La fonction parcourt chaque caractère de "python" et l'ajoute à res s'il est différent de "o". Seul le 'o' est retiré. On obtient "pythn".

Q17. Quelle sera la sortie du code suivant ?

def g(L): i = 0 ch = "" while i < len(L): ch = ch + str(L[i]) i = i + 2 return ch print(g([10,20,30,40,50]))
Réponse — A. 1020304050
Bonne réponse — B. 103050
Réponse — C. 2040
Réponse — D. 102030405
Explication

i commence à 0 et augmente de 2 à chaque tour. On prend les éléments d'indices 0, 2 et 4 : 10, 30 et 50. Le résultat est "103050".

Q18. On execute les lignes suivantes :

import numpy as np A = np.array([[1, 2], [3, 4], [5, 6]]) print(A[2,1])

Qu'est renvoyé dans la console ?

Réponse — A. 3
Réponse — B. 4
Bonne réponse — C. 6
Réponse — D. 5
Explication

A[2,1] sélectionne l'élément à la ligne d'indice 2 (troisième ligne) et à la colonne d'indice 1 (deuxième colonne). La troisième ligne est [5,6], donc l'élément est 6.

Q19. On execute les lignes suivantes :

import numpy as np A = np.array([[1, 2, 3], [4, 5, 6]]) print(A[:, 1:])

Qu'est renvoyé dans la console ?

Réponse — A. [[1, 2],
[4, 5]]
Bonne réponse — B. [[2, 3],
[5, 6]]
Réponse — C. [[1, 2, 3],
[4, 5, 6]]
Réponse — D. un message d'erreur
Explication

A[:, 1:] sélectionne toutes les lignes et les colonnes à partir de l'indice 1 (inclus) jusqu'à la fin. On obtient donc les colonnes 1 et 2 de chaque ligne : [[2,3],[5,6]].

Q20. On execute les lignes suivantes :

import numpy as np A = np.array([[1, 2, 3], [4, 5, 6]]) print(A[:, 1:][1, 0])

Qu'est renvoyé dans la console ?

Réponse — A. 2
Bonne réponse — B. 5
Réponse — C. 3
Réponse — D. un message d'erreur
Explication

On calcule d'abord A[:, 1:], qui vaut [[2,3],[5,6]]. Ensuite, [1,0] sélectionne l'élément à la ligne d'indice 1 et à la colonne d'indice 0 de ce nouveau tableau, c'est-à-dire 5.