Aller au contenu

QCM

Note

Les QCM sont là pour vous aider à contrôler ce que vous avez retenu. Si vous ne répondez pas à toutes les questions sans hésitation, c'est sans doute qu'il faut refaire des lectures des pages précédentes.

Trouvez la ou les bonnes réponses.

QCM

Quelle est la réponse de l'interpréteur python en dernière ligne?

>>> a = [1,2,3]
>>> a = [str(x) for x in a]
>>> a[1] + a[2]
  • 3
  • 5
  • '12'
  • '23'
Réponse
  • 3
  • 5
  • '12'
  • '23'

En ligne 1, on construit la liste contenant les entiers 1, 2, 3. En ligne 2, on construit la liste des chaînes de caractères définies à partir des entiers de la liste précédente.

>>> str(2)
'2'
>>> a = [1, 2, 3]
>>> type(a[0])
<class 'int'>
>>> a = [str(x) for x in a]
>>> a
['1', '2', '3']
>>> type(a[0])
<class 'str'>

En ligne 3, on demande donc la concaténation de deux chaînes de caractères, ici les chaînes '2' et '3'. Leur concaténation est '23'.

QCM

Q'obtient-on avec

>>> [a + b for a in ('1', '2', '3') for b in ('4', '5', '6')]
  • ['41', '52', '63']
  • ['14', '25', '36']
  • ['14', '24', '34', '15', '25', '35', '16', '26', '36']
  • ['14', '15', '16', '24', '25', '26', '34', '35', '36']
Réponse
  • ['41', '52', '63']
  • ['14', '25', '36']
  • ['14', '24', '34', '15', '25', '35', '16', '26', '36']
  • ['14', '15', '16', '24', '25', '26', '34', '35', '36']

Le code

liste = [a + b for a in ('1', '2', '3') for b in ('4', '5', '6')]

est équivalent au code suivant:

liste = []
for a in ('1', '2', '3'):
    for b in ('4', '5', '6'):
        liste.append(a+b)

La lecture est la suivante:

  • a étant fixé à la valeur '1', b parcourt le tuple ('4', '5', '6'): on ajoute donc '14', puis '15' puis '16' à la liste.
  • a prend ensuite la valeur '2' et b parcourt le tuple ('4', '5', '6'): on ajoute donc '24', puis '25' puis '26' à la liste.
  • a prend ensuite la valeur '3' et b parcourt le tuple ('4', '5', '6'): on ajoute donc '34', puis '35' puis '36' à la liste.

QCM

Quelle est la réponse de l'interpréteur Python en dernière ligne:

>>> a = [i*i for i in range(5)]
>>> a[-1]
  • Une erreur
  • 0
  • 16
  • 25
Réponse
  • Une erreur
  • 0
  • 16
  • 25
>>> a = [i*i for i in range(5)]
>>> a
[0, 1, 4, 9, 16]
>>> a[-1]
16

QCM

Après l'affectation suivante:

alpha = [x for x in 'abcdefghijklmnopqrstuvwxyz']

on accède à la lettre 'b' avec:

  • alpha[1]
  • alpha[2]
  • alpha['b']
  • alpha(1)
Réponse
  • alpha[1]
  • alpha[2]
  • alpha['b']
  • alpha(1)
>>> alpha = [x for x in 'abcdefghijklmnopqrstuvwxyz']
>>> alpha
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
>>> alpha[1]
'b'

QCM

def multipleDe10(x):
    """
    x -- entier

    renvoie True si l'écriture décimale de x se termine par 0, False sinon
    """
    return x%10 == 0


def filtre(liste, fonction):
    """
    liste -- liste d'entiers
    fonction -- fonction prenant un entier en paramètre et renvoyant True ou False.

    renvoie la liste des éléments de liste tel que fonction(element) est vrai.
    """
    return [elt for elt in liste if fonction(elt)]

Quelle est la valeur de filtre([i*j for i in range(1,10) for j in range(1,10)], multipleDe10)?

  • [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
  • []
  • [10, 20, 30, 40]
  • [10, 20, 10, 20, 30, 40, 30, 40]
Réponse
  • [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
  • []
  • [10, 20, 30, 40]
  • [10, 20, 10, 20, 30, 40, 30, 40]

On rappelle que le code

tab = [i*j for i in range(1,10) for j in range(1,10)]

est équivalent au code:

tab = []
for i in range(1,10):
    for j in range(1,10):
        tab.append(i*j)

On a donc:

>>> tab = [i*j for i in range(1,10) for j in range(1,10)]
>>> tab
[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 
12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 
27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 
15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 
36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 
63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 
27, 36, 45, 54, 63, 72, 81]