QCM : Python et biologie des séquences — 27 questions

Questions et réponses du QCM

1. Quelle instruction compare la valeur de `x` à 10 sans modifier cette variable ?

`compare(x, 10)`
`x == 10`
`x := 10`
`x = 10`

`x == 10`

Explication

L’opérateur `==` teste si deux valeurs sont égales, tandis que `=` affecte une valeur à une variable. L’expression `x = 10` modifierait donc le contenu de `x` au lieu de réaliser une comparaison.

2. Quelle valeur produit l’expression 1717 \\% 5 en Python ?

15
2
3
3,4

2

Explication

L’opérateur `%` renvoie le reste de la division entière : 17 divisé par 5 laisse un reste de 2. L’opérateur `//` aurait produit le quotient entier, soit 3.

3. Pour la chaîne `DNA = "ACGT"`, quelle expression permet d’accéder au dernier caractère ?

`DNA[1]`
`DNA[-1]`
`DNA[4]`
`DNA[0]`

`DNA[-1]`

Explication

L’indice `-1` désigne le dernier caractère d’une chaîne, ici `T`. L’indice 0 désigne le premier caractère, tandis que l’indice 4 dépasse les positions valides de cette chaîne.

4. Pour `seq = "ACGTAC"`, quels caractères sont sélectionnés par `seq[1:4]` ?

`ACG`
`CGT`
`GTAC`
`CGTA`

`CGT`

Explication

Le slicing inclut la borne de début et exclut la borne de fin : les indices 1, 2 et 3 correspondent donc à `C`, `G` et `T`. La borne 4 n’est pas comprise dans le résultat.

5. Si `seq = "AGTC"`, quelle expression renvoie la séquence dans l’ordre inverse ?

`seq[::2]`
`seq[:]`
`seq[::-1]`
`seq[1:]`

`seq[::-1]`

Explication

Le pas négatif de `seq[::-1]` parcourt les caractères de la fin vers le début et produit `CTGA`. L’expression `seq[:]` conserve la séquence entière dans son ordre initial.

6. Dans une boucle `for base in DNA`, que représente la variable `base` à chaque itération ?

L’indice courant de la séquence
La longueur totale de la séquence
Le caractère courant de la séquence
La dernière position de la séquence

Le caractère courant de la séquence

Explication

Une boucle `for base in DNA` parcourt directement les éléments de la séquence, donc `base` contient successivement chaque caractère. Pour parcourir les indices, il faudrait utiliser une construction comme `range(len(DNA))`.

7. Quelle modification permet d’éviter une boucle infinie dans `while i < 5:` lorsque le bloc dépend de `i` ?

Remplacer `i` par une chaîne
Modifier `i` à chaque passage
Ajouter une instruction `print(i)`
Déclarer une seconde condition vraie

Modifier `i` à chaque passage

Explication

La variable de contrôle doit évoluer afin que la condition `i < 5` puisse finalement devenir fausse. Afficher `i` ne change pas sa valeur et ne permet donc pas, à lui seul, de terminer la boucle.

8. Dans une structure `if`, `elif`, `else`, quand le bloc `else` est-il exécuté ?

Après chaque condition alternative
Quand la première condition est vraie
Lorsqu’une nouvelle condition est ajoutée
Quand les conditions précédentes sont fausses

Quand les conditions précédentes sont fausses

Explication

Le bloc `else` s’exécute lorsqu'aucune des conditions précédentes n’est vraie, sans tester une nouvelle condition. Un bloc `elif`, en revanche, introduit une condition alternative à évaluer.

9. Quelle distinction décrit correctement une liste Python et un tuple après leur création ?

La liste et le tuple deviennent non modifiables après leur création
La liste ne peut plus être modifiée, tandis que le tuple peut l’être
La liste peut être modifiée, tandis que le tuple ne peut plus l’être
La liste et le tuple peuvent être modifiés avec les mêmes opérations

La liste peut être modifiée, tandis que le tuple ne peut plus l’être

Explication

Une liste Python est modifiable, alors qu’un tuple ne peut pas être modifié après sa création. Confondre leurs propriétés conduirait à attribuer au tuple la possibilité de changer ses éléments.

10. Quelle association de bases correspond au dictionnaire de complémentarité de l’ADN ?

A est associé à G et T est associé à C
A est associé à C et T est associé à G
A est associé à T et C est associé à G
A est associé à A et T est associé à T

A est associé à T et C est associé à G

Explication

Le dictionnaire de complémentarité associe A à T, T à A, C à G et G à C. L’association de A avec C inverse la correspondance correcte entre les bases azotées.

11. Quelle caractéristique définit une fonction Python ?

C’est une boucle qui parcourt une séquence sans pouvoir recevoir de paramètres
C’est une valeur affichée directement par print, sans bloc de code associé
C’est une structure de données destinée à classer des éléments selon leur ordre
C’est un bloc réutilisable défini avec def, qui peut recevoir des arguments et renvoyer un résultat

C’est un bloc réutilisable défini avec def, qui peut recevoir des arguments et renvoyer un résultat

Explication

Une fonction est un bloc de code réutilisable introduit par def, pouvant recevoir des arguments et renvoyer un résultat avec return. Une boucle sert plutôt à répéter une série d’instructions et ne constitue pas par elle-même une fonction.

12. Que produit une fonction lorsqu’elle exécute print au lieu de return pour transmettre une valeur au programme appelant ?

Elle convertit la valeur en argument réutilisable par l’appelant
Elle affiche la valeur et renvoie None
Elle renvoie la valeur et ne produit aucun affichage
Elle stocke automatiquement la valeur dans une nouvelle variable

Elle affiche la valeur et renvoie None

Explication

print affiche une valeur, mais sa valeur de retour est None, tandis que return transmet une valeur réutilisable au programme. Remplacer return par print empêche donc l’appelant de récupérer cette valeur comme résultat.

13. Quel traitement réalise la fonction complémentaire lorsqu’elle reçoit une séquence d’ADN ?

Elle parcourt chaque base, lui associe son complément et renvoie la séquence construite
Elle trie les bases, supprime les répétitions et affiche la séquence obtenue
Elle parcourt les bases et les regroupe selon leur position dans le dictionnaire
Elle remplace chaque base par elle-même, puis imprime la séquence originale

Elle parcourt chaque base, lui associe son complément et renvoie la séquence construite

Explication

La fonction consulte le dictionnaire A:T, T:A, C:G, G:C pour chaque base, ajoute le complément obtenu et renvoie la nouvelle séquence. Le tri ou la suppression des répétitions ne font pas partie de ce traitement.

14. Comment une séquence est-elle généralement présentée dans un fichier FASTA ?

Une ligne de séquence commençant par #, suivie d’un tableau de bases numérotées
Une ligne d’en-tête commençant par >, suivie d’une ou plusieurs lignes de séquence
Une suite de lignes contenant d’abord les bases, puis le nom placé après la séquence
Un bloc composé d’une seule ligne où le nom et toutes les bases sont séparés par des virgules

Une ligne d’en-tête commençant par >, suivie d’une ou plusieurs lignes de séquence

Explication

Le format FASTA commence chaque séquence par une ligne d’en-tête dont le premier caractère est >, puis fournit une ou plusieurs lignes de séquence. Les autres structures proposées ne correspondent pas à l’organisation caractéristique du format FASTA.

15. Lors de la lecture d’un fichier FASTA, quelle opération supprime les retours à la ligne présents à la fin de chaque ligne ?

L’ouverture du fichier avec le mode lecture
Le parcours des lignes au moyen d’une boucle
L’appel de close() après la dernière ligne lue
L’appel de .strip() sur chaque ligne lue

L’appel de .strip() sur chaque ligne lue

Explication

La méthode .strip() nettoie chaque ligne, notamment en retirant les retours à la ligne. La méthode close() sert à fermer le fichier après sa lecture et n’effectue pas ce nettoyage.

16. Dans un dictionnaire construit à partir d’un fichier FASTA, comment sont organisées les informations d’une séquence ?

Le nom de l’en-tête sert de clé et les lignes suivantes sont concaténées comme valeur
L’en-tête et chaque ligne de séquence sont conservés ensemble dans une liste imbriquée
Chaque ligne de séquence forme une entrée distincte avec un numéro comme clé
Les lignes de séquence servent de clés et le nom de l’en-tête devient leur valeur commune

Le nom de l’en-tête sert de clé et les lignes suivantes sont concaténées comme valeur

Explication

Le parsing utilise le nom d’en-tête comme clé et rassemble les lignes de séquence suivantes en une seule valeur. Inverser ces rôles ferait perdre la fonction d’identification portée par l’en-tête.

17. Quelle fonction du module `re` renvoie toutes les occurrences d’un motif dans une chaîne de caractères ?

`re.match()`
`re.search()`
`re.findall()`
`re.split()`

`re.findall()`

Explication

La fonction `re.findall()` renvoie la liste de toutes les occurrences correspondant au motif recherché. À l’inverse, `re.search()` sert à rechercher une occurrence, sans fournir la collection complète des correspondances.

18. Une séquence de 200 bases contient 30 G et 50 C. Quel est son pourcentage de GC ?

40 %
80 %
25 %
60 %

40 %

Explication

Le pourcentage de GC vaut GC=30+50200×100=40 %\mathrm{GC} = \frac{30 + 50}{200} \times 100 = 40\ \%. Le dénominateur correspond à la longueur totale de la séquence, tandis que le numérateur compte seulement les G et les C.

19. Quelle opération réalise la transcription simplifiée d’une séquence d’ADN en ARN dans cette recette ?

Supprimer toutes les bases T
Associer chaque base à sa complémentaire
Inverser l’ordre des bases
Remplacer chaque T par U

Remplacer chaque T par U

Explication

La recette réalise la transcription simplifiée en remplaçant chaque thymine T par une uracile U avec `DNA.replace('T', 'U')`. L’association de bases deux à deux décrit plutôt une relation de complémentarité.

20. Quelle expression concatène les deux portions d’ADN correspondant aux exons indiqués, de la position 0 à 63 puis à partir de la position 91 ?

`DNA[:63] + DNA[90:]`
`DNA[64:91] + DNA[91:]`
`DNA[:64] + DNA[90:91]`
`DNA[:64] + DNA[91:]`

`DNA[:64] + DNA[91:]`

Explication

En Python, `DNA[:64]` inclut les positions 0 à 63, et `DNA[91:]` commence à la position 91. La combinaison de ces deux tranches extrait donc les portions demandées.

21. Quel pool de bases faut-il mélanger pour obtenir 100 bases aléatoires contenant 60 % de GC ?

20 A, 20 T, 30 G et 30 C
10 A, 10 T, 40 G et 40 C
30 A, 30 T, 20 G et 20 C
25 A, 25 T, 25 G et 25 C

20 A, 20 T, 30 G et 30 C

Explication

Le pool contient 30 G et 30 C, soit 60 bases GC sur 100, ainsi que 20 A et 20 T. Le pool équilibré à 25 bases par type donnerait une proportion de GC de 50 %, et non de 60 %.

22. Quelle distinction décrit correctement la complémentarité et l’antiparallélisme de l’ADN ?

La complémentarité concerne les bases, l’antiparallélisme concerne l’orientation des brins
Les deux notions décrivent uniquement le sens de lecture d’un même brin
Les deux notions décrivent l’association entre A et T ainsi qu’entre C et G
La complémentarité concerne l’orientation des brins, l’antiparallélisme concerne les bases

La complémentarité concerne les bases, l’antiparallélisme concerne l’orientation des brins

Explication

La complémentarité associe A à T et C à G, tandis que l’antiparallélisme indique que les deux brins sont orientés en sens opposés. Confondre ces notions revient à attribuer l’orientation des brins aux règles d’appariement des bases.

23. Quelle distinction entre exon et intron est correcte dans le cadre présenté ?

Un exon et un intron sont deux régions non codantes de fonctions différentes
Un exon est une région non codante, tandis qu’un intron est une région codante
Un exon et un intron sont deux régions codantes de fonctions différentes
Un exon est une région codante, tandis qu’un intron est une région non codante

Un exon est une région codante, tandis qu’un intron est une région non codante

Explication

Dans la distinction donnée, l’exon correspond à une région codante et l’intron à une région non codante. L’inversion de ces rôles constitue la confusion principale entre les deux types de régions.

24. Quelle séquence correspond à un poly-T selon la définition donnée ?

`TTTT`
`TTATTT`
`TTTTT`
`ATGCT`

`TTTTT`

Explication

Un poly-T est une suite d’au moins cinq thym es T consécutifs, comme `TTTTT`. Une suite de quatre T ne satisfait pas le seuil minimal, même si elle ne contient aucune autre base entre eux.

25. Pourquoi un remplacement séquentiel de « A » par « T », puis de « T » par « A », échoue-t-il pour réaliser une complémentation simultanée ?

Le second remplacement transforme aussi les « T » nouvellement créés, ce qui peut produire une séquence composée de « A ».
Le remplacement séquentiel inverse uniquement les caractères situés à des positions paires de la séquence.
Le premier remplacement modifie la longueur de la séquence, ce qui décale les positions traitées par le second.
Le second remplacement ne peut pas parcourir une séquence qui a déjà été modifiée par une instruction précédente.

Le second remplacement transforme aussi les « T » nouvellement créés, ce qui peut produire une séquence composée de « A ».

Explication

Le second remplacement agit également sur les « T » produits par le premier, d’où la transformation possible de toute la séquence en « A ». Un changement de longueur ou de position n’explique pas ce piège, puisque les remplacements de lettres conservent ici la longueur de la séquence.

26. Dans une séquence Python, quel caractère est désigné par `seq[1]` ?

Le dernier caractère de la séquence, car l’indexation parcourt la séquence à rebours.
Le deuxième caractère de la séquence, car l’indexation commence à zéro.
Le troisième caractère de la séquence, car l’index zéro désigne une position vide.
Le premier caractère de la séquence, car la position affichée commence à un.

Le deuxième caractère de la séquence, car l’indexation commence à zéro.

Explication

Python utilise une indexation commençant à zéro : `seq[0]` désigne le premier caractère et `seq[1]` le deuxième. Confondre l’indice avec une position commençant à un conduit à sélectionner le premier caractère au lieu du deuxième.

27. Quelle démarche est la plus adaptée pour choisir un outil lors de la résolution d’un exercice de traitement de séquence ?

Modifier la séquence obtenue, puis déduire progressivement quelle entrée aurait dû être utilisée.
Identifier l’entrée, déterminer l’opération, puis sélectionner l’outil adapté à cette opération.
Écrire une boucle complète, puis rechercher après coup l’opération réellement demandée par l’exercice.
Choisir d’abord une bibliothèque familière, puis reformuler l’entrée pour qu’elle corresponde à cet outil.

Identifier l’entrée, déterminer l’opération, puis sélectionner l’outil adapté à cette opération.

Explication

La résolution commence par l’identification de l’entrée et de l’opération, avant le choix d’un outil comme une boucle, un dictionnaire, `.count()`, `re` ou `random`. Commencer par un outil prédéterminé inverse cette démarche et risque de l’adapter à un problème mal compris.

Révisez avec les flashcards

Mémorisez les réponses avec 60 flashcards sur Python et biologie des séquences.

Quelle est la différence entre = et == en Python ?

= affecte une valeur, == compare deux valeurs.

Quels types Python sont utilisés dans cette fiche ?

int, float, str, bool, list, tuple et dict.

Que fait l'opérateur // en Python ?

Il réalise une division entière.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Python et biologie des séquences.

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