QCM Python – Partie 19

Questions pratiques pour testez vos connaissances sur la programmation Python à savoir des structures conditionnelles, des opérations logiques, des boucles, des fonctions, etc. Testez votre connaissance et travaillez sur les questions que vous trompez le plus souvent.
 
 

1. Quelle est la sortie du code suivant?
not(1>2)
not(1&1)

A FalseFalse

B FalseTrue

C TrueFalse

D TrueTrue

C
Le code fourni consiste en deux expressions utilisant l’opérateur not. La première expression, not(1 > 2), vérifie si 1 est supérieur à 2, ce qui est faux. L’opérateur not inverse donc cette valeur, la transformant en True.

La deuxième expression, not(1 & 1), applique l’opérateur « ET » bit à bit sur 1 et 1, ce qui donne 1 (en binaire, 1 & 1 est 1). Ensuite, l’opérateur not inverse la valeur de 1, la transformant en False. En conclusion, la sortie du code sera True pour la première expression et False pour la seconde, soit C TrueFalse.

 

2. Quelle est la valeur de l’expression: 1+2**5//10

A 5

B 4

C 6

D 35

B
L’ordre de priorité est le suivant: **, //, +. L’expression 4 + 2 ** 5 // 10 est évaluée à 1 + 32 // 10, ce qui correspond à 1 + 3 = 4. Le résultat de l’expression ci-dessus est donc 4.
 

3. Quelle est la sortie du code suivant?
d = {"alex":23, "jean":24}
print(list(d.keys()))

A (“alex”:23, “jean”:24)

B (“alex”, “jean”)

C [“alex”:23, “jean”:24]

D [“alex”, “jean”]  
 

D
La sortie du code présenté ci-dessus est une liste contenant uniquement les clés du dictionnaire d, sous la forme d’une liste.
 

4. Quelle est la sortie du code suivant?
x = [1, 2, 3, 4]
x.remove(3)
print(x)

A [1, 2, 3, 4]

B [1, 2, 4]

C [1, 2, 3]

D Erreur

B
La méthode remove() supprime la première occurrence de l’élément spécifié dans la liste. Ici, 3 est supprimé de la liste, donc le résultat est [1, 2, 4].
 

5. Quelle est la sortie du code suivant?
def fun(i, l=[]):
    l.append(i)
    return l
for i in range(3):
    print(fun(i))

A [1] [1, 2] [1, 2, 3]

B [1] [2] [3]

C [0] [0, 1] [0, 1, 2]

D [0] [1] [2]  
 

C
Le code montre comment une fonction en Python utilise un paramètre mutable (comme une liste) avec une valeur par défaut. La fonction fun prend un paramètre i et un paramètre l, qui par défaut est une liste vide. Cependant, chaque fois que la fonction est appelée, elle modifie la même liste l au lieu de créer une nouvelle liste pour chaque appel. Cela entraîne des effets de partage de la liste entre les appels successifs. Ainsi, à chaque itération, la liste l accumule les valeurs de i, produisant une sortie qui montre l’ajout successif d’éléments dans la même liste partagée : [0], [0, 1] et [0, 1, 2].
 
 

6. Quelle est la sortie du code suivant?
t = (1, 2, 3, 4)
l = [t[i] for i in range(0, len(t), 2)]
print(l)

A [1, 3]

B [1, 3, 4]

C (1, 3)

D (1, 3, 4)

A
Le code utilise une compréhension de liste pour parcourir le tuple t = (1, 2, 3, 4). En itérant à travers les indices de 0 à 3, avec un pas de 2 (range(0, len(t), 2)), il sélectionne les éléments aux indices 0 et 2 du tuple, soit 1 et 3. Ces éléments sont ensuite ajoutés à la liste l, qui devient [1, 3]. Lorsque cette liste est affichée, la sortie est donc [1, 3].
 

7. Quelle est la sortie du code suivant?
l = [1, 3, 6, 10]
n = (x**2 for x in l)
print(next(n), next(n))

A (1)

B (1, 3)

C (1, 9)

D (1, 9, 12, 20)

C
Le code crée un générateur à partir de la liste l contenant les éléments [1, 3, 6, 10]. Le générateur élève chaque élément au carré. En utilisant la fonction next(), le code récupère les premiers éléments générés, qui sont 1 et 9 (respectivement les carrés de 1 et 3). Le générateur calcule ces valeurs à la demande, et la sortie affichée est (1, 9) lorsqu’on appelle next(n) deux fois. Cette méthode permet d’obtenir les résultats de manière paresseuse, c’est-à-dire uniquement lorsque cela est nécessaire.
 

8. Quelle est la sortie du code suivant?
def fun(n):
    def multiplier(x):
        return x * n
    return multiplier

a = fun(2)
b = fun(2)

print(a(b(2)))

A 2

B 4

C 6

D 8

D
Le code définit une fonction fun(n) qui renvoie une autre fonction multiplier(x) utilisant le paramètre n. Lorsque a = fun(2) et b = fun(2) sont appelées, elles créent deux fonctions multiplier(x) avec n fixé à 2. L’appel a(b(2)) exécute d’abord b(2), ce qui renvoie 4 (puisque multiplier(2) multiplie 2 par 2), puis il appelle a(4), ce qui renvoie 8. Ainsi, le résultat final de l’exécution est 8.
 

9. Lequel des énoncés suivants est vrai?

A Vous ne pouvez pas chaîner plusieurs décorateurs en Python.

B Les décorateurs ne fonctionnent pas avec des fonctions qui prennent des paramètres.

C Le symbole @ n’a aucune utilité lorsque vous utilisez des décorateurs.

D Aucune de ces réponses n’est vraie.

D
Le symbole @ est utilisé pour appliquer un décorateur à une fonction en Python. Contrairement à l’énoncé A, il est possible de chaîner plusieurs décorateurs, ce qui permet d’appliquer plusieurs transformations à une fonction. L’énoncé B est également incorrect, car les décorateurs peuvent très bien fonctionner avec des fonctions qui acceptent des paramètres. Le décorateur peut être conçu pour gérer des arguments passés à la fonction décorée. Enfin, l’énoncé C est également erroné, car le symbole @ est indispensable pour appliquer un décorateur de manière concise. Ainsi, l’énoncé D est le bon, car aucune des réponses précédentes n’est correcte.
 

10. Quelle est la sortie du code suivant?
sum(1,2,3)
sum([1,2,3])

A 6, 6

B 6, Erreur

C Erreur, Erreur

D Erreur, 6

D
La sortie du code est D Erreur, 6. Le premier appel à sum(1, 2, 3) provoque une erreur car la fonction sum() attend un seul argument itérable (comme une liste ou un tuple), et non plusieurs arguments séparés. Le second appel sum([1, 2, 3]) fonctionne correctement et renvoie la somme des éléments de la liste, soit 6. Ainsi, la première expression échoue, tandis que la deuxième donne le résultat attendu de 6.

Une réflexion sur “QCM Python – Partie 19

  • septembre 15, 2020 à 8:13 am
    Permalien

    La réponse à la question 3 est D.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *