Bienvenue dans notre QCM Python ! Que vous soyez débutant ou déjà expérimenté en programmation, ce questionnaire à choix multiples est l’occasion parfaite de tester vos connaissances en Python. Grâce à des questions couvrant tous les niveaux, vous pourrez évaluer votre maîtrise des concepts clés du langage, comme les structures de données, les fonctions, les modules et bien plus. Si vous cherchez à améliorer vos compétences ou à vous préparer pour un examen, ce QCM Python est fait pour vous. Lancez-vous et découvrez où vous en êtes !
1. Quelle est la sortie du code suivant?
def f(x, y):
if(x==0):
return y
else:
return f(x-1,x+y)
print(f(2,5))
A 2
B 4
C 8
D Boucle infinie
C
Le code appelle récursivement la fonction f(x, y) jusqu’à ce que x atteigne 0. Dans chaque appel récursif, x est décrémenté de 1 et y est ajouté à la nouvelle valeur de x. Lorsque x devient 0, la fonction retourne la valeur de y, ce qui donne 8.
2. Laquelle des affirmations suivantes est vraie?
A La méthode __new__() appelle automatiquement la méthode __init__
B La méthode __init__ est définie dans la classe de l’objet
C La méthode __eq(obj) est définie dans la classe de l’objet
D La méthode __repr__() est définie dans la classe de l’objet
C
La méthode spéciale __eq(obj) est utilisée pour définir le comportement de l’opérateur == dans une classe. Elle permet de comparer deux objets de la classe pour savoir s’ils sont considérés comme égaux. Cette méthode est définie dans la classe de l’objet et permet de personnaliser la logique de comparaison d’égalité.
3. Si une fonction contient au moins une instruction « yield », elle devient ______
A un itérateur
B une fonction anonyme
C une fonction génératrice
D Aucune de ces réponses n’est vraie.
C
Une fonction qui contient l’instruction yield devient une fonction génératrice. Contrairement aux fonctions classiques, une fonction génératrice génère des valeurs une par une à chaque appel, ce qui permet d’économiser de la mémoire en ne chargeant pas toutes les données à la fois. Cela permet de créer des itérateurs paresseux, utiles pour travailler avec de grandes quantités de données ou des séquences infinies. Exemple:
def mygen():
n = 100
yield n
...
a = mygen()
print(next(a))
4. Laquelle des affirmations suivantes est fausse à propos de la récursivité?
A Une récursion infinie peut se produire si le cas de base n’est pas correctement mentionné
B Chaque fonction récursive doit avoir un cas de base
C Une fonction récursive facilite la compréhension du code
D Chaque fonction récursive doit avoir une valeur de retour
D
L’affirmation D est fausse, car une fonction récursive n’a pas nécessairement besoin d’une valeur de retour. Bien que la plupart des fonctions récursives retournent une valeur pour résoudre un problème, certaines peuvent simplement effectuer des actions sans retour de valeur.
5. Que se passera-t-il si vous essayez d’ouvrir un fichier qui n’existe pas?
A Un nouveau fichier est créé.
B Rien ne va se passer.
C Une exception est levée.
D Aucune de ces réponses n’est vraie.
C
Lorsque vous essayez d’ouvrir un fichier qui n’existe pas avec des modes comme ‘r’ (lecture), Python lèvera une exception FileNotFoundError. Pour éviter cela, vous pouvez utiliser des gestionnaires d’exceptions (try-except) pour attraper l’erreur ou utiliser des modes qui permettent de créer le fichier si nécessaire, comme ‘w’ ou ‘x’.
6. Quelle fonction surcharge l’opérateur == ?
A__equ__()
B__eq__()
C__isequal__()
D Aucune de ces réponses n’est vraie.
B
La méthode __eq__() est utilisée pour surcharger l’opérateur d’égalité (==) dans Python. Lorsque vous comparez deux objets avec ==, cette méthode est appelée pour déterminer si les objets sont égaux. Si elle n’est pas définie dans une classe, Python utilisera la méthode par défaut pour comparer les objets.
A Affiche « Message error » si une exception survient (peu importe l’exception).
B Affiche « Message error » si aucune exception ne se produit.
C Affiche « Message error » si une exception TypeError ou ZeroDivisionError se produit.
D Affiche « Message error » uniquement si les deux exceptions TypeError et ZeroDivisionError se produisent.
C
Le code dans le bloc try pourrait générer une exception, mais dans l’exemple donné, le mot-clé pass est utilisé, ce qui signifie qu’aucun code ne sera exécuté, donc aucune exception ne sera générée dans ce cas précis. Cependant, si une exception ZeroDivisionError ou TypeError se produisait dans le bloc try, l’exécution serait transférée au bloc except, qui afficherait le message « Message error ». Le bloc except capte les exceptions spécifiées dans la parenthèse (ici ZeroDivisionError et TypeError), et affiche le message uniquement si l’une de ces exceptions est levée.
8. Quelle est la sortie du code suivant?
def f(x):
if (x > 50):
return x - 5
return f(f(x+10));
print(f(10))
A 100
B 50
C 25
D 10
B
Le code utilise la récursivité pour atteindre une condition où la valeur de x dépasse 50. Lorsqu’une valeur supérieure à 50 est obtenue, le programme commence à réduire cette valeur en la soustrayant de 5. L’exécution suit un enchaînement d’appels à f(x+10) jusqu’à ce que x atteigne 60. Une fois que x est supérieur à 50, la valeur est réduite de 5 à chaque retour de la fonction, jusqu’à obtenir 50. Ainsi, le résultat final de l’appel f(10) est 50.
9. La récursivité et l’itération sont la même approche de programmation.
A Vrai
B Faux
B
La récursivité et l’itération ne sont pas la même approche de programmation.
La récursivité est une méthode dans laquelle une fonction s’appelle elle-même pour résoudre un problème. Chaque appel récursif résout une version plus petite du problème jusqu’à atteindre un cas de base.
L’itération, en revanche, utilise des boucles (comme for ou while) pour répéter un bloc de code jusqu’à ce qu’une condition soit remplie.
Le code définit une fonction fun(f, val) qui prend en paramètres une fonction f et une valeur val. Cette fonction applique f à val. Lorsque fun(max, [1, 2, 3]) est appelée, elle utilise la fonction max pour obtenir la valeur maximale de la liste, qui est 3. Ensuite, fun(min, [1, 2, 3]) est appelée, utilisant min pour obtenir la valeur minimale de la liste, qui est 1. Ainsi, la sortie du code est 3 1. La réponse correcte est A.