QCM : Variables itérables et fonctions Python — 19 questions

Questions et réponses du QCM

1. Quelle propriété caractérise une liste en Python ?

C’est une suite ordonnée dont les éléments peuvent avoir des types différents.
C’est une suite immuable dont les éléments doivent partager un même type.
C’est une structure indexée réservée aux valeurs numériques.
C’est une collection non ordonnée dont les éléments ont un type identique.

C’est une suite ordonnée dont les éléments peuvent avoir des types différents.

Explication

Une liste conserve un ordre et peut contenir des éléments de types différents. La confusion vient de l’immuabilité, qui caractérise plutôt un tuple que les listes.

2. Quelle liste est produite par la compréhension [x∗x for x in range(5) if x%2==0][x*x\ \text{for}\ x\ \text{in}\ \text{range}(5)\ \text{if}\ x\%2==0] ?

[0, 4, 16]
[2, 4, 6, 8, 10]
[1, 9, 25]
[0, 1, 4, 9, 16]

[0, 4, 16]

Explication

La condition conserve les valeurs paires de 0 à 4, soit 0, 2 et 4, puis leur carré donne 0, 4 et 16. La liste contenant tous les carrés inclut à tort les valeurs impaires.

3. Pour une liste de longueur nn, quelles bornes décrivent correctement ses indices valides positifs et négatifs ?

Les indices vont de 0 à nn, et les indices négatifs commencent à −n-n pour le premier élément.
Les indices vont de −1-1 à n−1n-1, et 0 désigne le dernier élément.
Les indices vont de 1 à nn, et les indices négatifs commencent à 0 pour le dernier élément.
Les indices vont de 0 à n−1n-1, et les indices négatifs commencent à −1-1 pour le dernier élément.

Les indices vont de 0 à $$n-1$$, et les indices négatifs commencent à $$-1$$ pour le dernier élément.

Explication

Le premier élément porte l’indice 0, le dernier l’indice n−1n-1, et l’indice −1-1 désigne ce dernier élément. Commencer les indices positifs à 1 correspond à une convention qui n’est pas celle des listes Python.

4. Quelle affirmation compare correctement L2=LL2=L et L2=L[:]L2=L[:] ?

L2=LL2=L crée un second nom pour le même objet, tandis que L2=L[:]L2=L[:] crée une liste indépendante.
Les deux affectations créent un second nom qui partage les modifications avec la liste initiale.
Les deux affectations créent des listes indépendantes ayant le même contenu initial.
L2=LL2=L crée une copie indépendante, tandis que L2=L[:]L2=L[:] conserve le même objet.

$$L2=L$$ crée un second nom pour le même objet, tandis que $$L2=L[:]$$ crée une liste indépendante.

Explication

L’affectation directe ajoute un autre nom au même objet, alors que le découpage complet construit une nouvelle liste. Ainsi, une modification de la liste originale est partagée dans le premier cas mais pas dans le second.

5. Laquelle de ces propositions décrit correctement une matrice à deux dimensions en Python ?

Elle correspond à une liste dans laquelle chaque élément doit être une valeur numérique.
Elle est formée de plusieurs tuples imbriqués, chaque tuple représentant une colonne.
Elle peut être représentée par une liste de listes, chaque liste interne représentant une ligne.
Elle est représentée par une liste plate contenant les éléments rangés dans un ordre unique.

Elle peut être représentée par une liste de listes, chaque liste interne représentant une ligne.

Explication

Une matrice à deux dimensions peut être construite comme une liste dont chaque sous-liste constitue une ligne. Une liste plate ne conserve pas directement cette organisation en lignes et en colonnes.

6. Dans une matrice AA représentée par des listes imbriquées, que désigne A[i][j]A[i][j] ?

L’élément de la ligne d’indice ii et de la colonne d’indice jj.
La ligne d’indice ii contenant l’ensemble des colonnes de la matrice.
La colonne d’indice jj contenant l’ensemble des lignes de la matrice.
L’élément de la colonne d’indice ii et de la ligne d’indice jj.

L’élément de la ligne d’indice $$i$$ et de la colonne d’indice $$j$$.

Explication

Le premier indice sélectionne la sous-liste correspondant à la ligne, puis le second sélectionne l’élément correspondant à la colonne. Inverser les deux indices conduit à lire une position différente dans la matrice.

7. Quelle propriété caractérise un tuple en Python ?

Il s’agit d’une structure réservée aux valeurs numériques
Il s’agit d’une structure non ordonnée et extensible
Il s’agit d’une structure ordonnée dont les éléments sont modifiables
Il s’agit d’une structure ordonnée et immuable

Il s’agit d’une structure ordonnée et immuable

Explication

Un tuple conserve l’ordre de ses éléments et ne permet ni leur modification ni l’ajout ou la suppression d’éléments. La possibilité de modifier directement ses éléments caractérise plutôt une liste.

8. Que réalise l’instruction « a, b = b, a » lorsqu'a et b contiennent déjà deux valeurs ?

Elle échange les contenus de a et b par déconstruction
Elle additionne les contenus de a et b dans a
Elle affecte à a et b une même valeur issue de b
Elle transforme a et b en deux listes indépendantes

Elle échange les contenus de a et b par déconstruction

Explication

Python construit une paire de valeurs à droite, puis la décompose pour affecter simultanément les valeurs inversées à a et b. Cette opération ne réalise ni addition ni partage d’une valeur unique.

9. Quelle distinction décrit correctement une chaîne de caractères par rapport à un tuple ?

Une chaîne est une structure immuable réservée aux couples de valeurs
Une chaîne est une collection non ordonnée de caractères
Une chaîne est une séquence modifiable composée de nombres
Une chaîne est une séquence immuable composée de caractères

Une chaîne est une séquence immuable composée de caractères

Explication

Comme un tuple, une chaîne est immuable, mais elle représente spécifiquement une séquence de caractères. Elle ne constitue donc ni une séquence modifiable ni une structure destinée à des couples.

10. Quelle opération peut être effectuée directement sur une chaîne de caractères en Python ?

La supprimer automatiquement avec l’opérateur de découpage
La concaténer avec une autre chaîne au moyen de +
La modifier sur place en remplaçant un caractère par indice
La convertir en tuple dès qu’elle est parcourue par indice

La concaténer avec une autre chaîne au moyen de +

Explication

L’opérateur + permet de concaténer des chaînes, qui peuvent aussi être indexées, découpées et mesurées avec len. Une chaîne étant immuable, l’affectation directe d’un nouveau caractère à un indice n’est pas possible.

11. Quel est le rôle principal d’une fonction en Python ?

Exécuter automatiquement toutes les instructions d’un programme
Stocker plusieurs valeurs dans une séquence ordonnée
Associer des instructions à un nom pour réaliser une tâche réutilisable
Remplacer chaque variable locale par une constante globale

Associer des instructions à un nom pour réaliser une tâche réutilisable

Explication

Une fonction regroupe une séquence d’instructions sous un nom afin de pouvoir réaliser une tâche réutilisable, avec des paramètres si nécessaire. Elle ne remplace pas les variables et ne constitue pas une structure de stockage.

12. Quelle structure respecte la règle de définition d’une fonction en Python ?

Elle commence par function, se termine par un point-virgule et contient un corps aligné
Elle commence par def, se termine par une virgule et contient un corps entre parenthèses
Elle commence par return, se termine par deux-points et contient un corps non indenté
Elle commence par def, se termine par deux-points et contient un corps indenté

Elle commence par def, se termine par deux-points et contient un corps indenté

Explication

Une définition de fonction utilise le mot-clé def, un en-tête terminé par deux-points et un corps indenté. L’indentation indique quelles instructions appartiennent au corps de la fonction.

13. Que renvoie l’instruction `return` dans une fonction Python ?

La valeur `None` produite après l’exécution de toute la fonction
Le nombre d’arguments reçus par la fonction lors de son appel
Un affichage à l’écran qui ne peut pas être réutilisé
La valeur de l’expression qui la suit, utilisable dans une autre expression

La valeur de l’expression qui la suit, utilisable dans une autre expression

Explication

L’instruction `return` transmet la valeur calculée par l’expression qui la suit, ce qui permet de la réutiliser dans une expression plus complexe. La confusion fréquente consiste à l’assimiler à `print`, qui affiche une valeur sans la renvoyer comme résultat de fonction.

14. Que renvoie implicitement une fonction Python qui atteint sa fin sans exécuter d’instruction `return` ?

La valeur zéro, de type `int`
La valeur spéciale `None`, de type `NoneType`
La dernière valeur affichée par une éventuelle instruction `print`
Une chaîne vide, de type `str`

La valeur spéciale `None`, de type `NoneType`

Explication

Lorsqu’aucun `return` n’est exécuté, Python renvoie implicitement `None`, qui appartient au type `NoneType`. Un affichage effectué avec `print` ne devient pas le résultat renvoyé par la fonction.

15. Dans quelles conditions une variable locale est-elle utilisable ?

Elle est créée par un argument et modifie la variable extérieure correspondante
Elle est définie dans une fonction et utilisable pendant l’exécution de cette fonction
Elle est déclarée avec `global` et reste disponible après chaque appel
Elle est définie hors des fonctions et accessible depuis tout le programme

Elle est définie dans une fonction et utilisable pendant l’exécution de cette fonction

Explication

Une variable locale est créée dans le contexte d’une fonction et sa portée se limite à l’exécution de cette fonction. Une variable définie à l’extérieur relève de la portée globale, tandis qu’un argument reçu est aussi traité comme une variable locale.

16. Comment une fonction Python peut-elle lire une variable globale portant un nom qui n’est pas défini localement ?

Elle doit transformer la variable en argument avant chaque appel de la fonction
Elle ne peut pas lire une variable globale créée en dehors de la fonction
Elle peut lire directement la variable globale lorsqu’aucune variable locale du même nom ne la masque
Elle doit utiliser `global` avant toute lecture de cette variable extérieure

Elle peut lire directement la variable globale lorsqu’aucune variable locale du même nom ne la masque

Explication

Une fonction peut accéder en lecture à une variable globale si aucun nom local identique ne la masque. Le mot-clé `global` sert à permettre une modification de cette variable, mais il n’est pas requis pour cette lecture.

17. Si une fonction reçoit une variable extérieure comme argument puis affecte une nouvelle valeur à cet argument, que devient la variable extérieure ?

Elle conserve sa valeur, car l’argument est une variable locale dans la fonction
Elle prend la nouvelle valeur, car tout argument partage son nom extérieur
Elle reçoit `None`, car une affectation locale annule l’argument
Elle devient globale, car l’affectation se produit dans une fonction

Elle conserve sa valeur, car l’argument est une variable locale dans la fonction

Explication

L’argument est reçu comme une variable locale, et son affectation ne modifie pas la variable extérieure correspondante. La portée locale explique pourquoi la nouvelle valeur reste limitée à l’exécution de la fonction.

18. Que se passe-t-il lorsqu’une instruction `return` est exécutée au milieu d’une fonction ?

La fonction ignore la valeur calculée et poursuit l’exécution jusqu’à sa dernière ligne
La fonction mémorise l’instruction et l’exécute après avoir parcouru le reste du code
La fonction s’arrête immédiatement et les instructions suivantes ne sont pas exécutées
La fonction affiche la valeur renvoyée puis reprend automatiquement son exécution

La fonction s’arrête immédiatement et les instructions suivantes ne sont pas exécutées

Explication

L’exécution de `return` termine immédiatement la fonction et fournit sa valeur de résultat. Les instructions placées après ce `return` ne sont donc pas atteintes, même si elles figurent dans le corps de la fonction.

19. Dans une fonction `estPremier`, dans quel cas le résultat `True` doit-il être renvoyé ?

Lorsque n>1n>1 et qu’aucun diviseur n’est trouvé entre 22 et n−1n-1
Lorsque n≤1n\leq 1 et qu’aucun diviseur n’est trouvé dans l’intervalle testé
Lorsque n≤1n\leq 1, car les petits entiers sont traités comme premiers
Lorsque n>1n>1 et qu’au moins un diviseur est trouvé entre 22 et n−1n-1

Lorsque $$n>1$$ et qu’aucun diviseur n’est trouvé entre $$2$$ et $$n-1$$

Explication

Après avoir écarté les valeurs n≤1n\leq 1 et les nombres possédant un diviseur entre 22 et n−1n-1, `estPremier` renvoie `True` si aucun diviseur n’a été trouvé. La présence d’un diviseur conduit au contraire à renvoyer `False`.

Révisez avec les flashcards

Mémorisez les réponses avec 47 flashcards sur Variables itérables et fonctions Python.

Qu'est-ce qu'une liste en Python ?

Une suite ordonnée d'éléments de types différents.

Quelle forme générale a une compréhension de liste ?

[f(x) for x in iterable if condition][f(x)\ \text{for}\ x\ \text{in}\ iterable\ \text{if}\ condition] avec condition facultative.

Que produit la compréhension [x∗x for x in range(5) if x%2==0][x*x\ \text{for}\ x\ \text{in}\ range(5)\ \text{if}\ x\%2==0] ?

La liste [0, 4, 16].

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Variables itérables et fonctions Python.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM