Aller au contenu

QCM
Instructions usuelles

Rappel

Les questions ci-dessous 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 retravailler les pages précédentes.

Pour chaque question, il faut trouver la (ou les) bonne(s) réponse(s).

QCM 1

On considère la fonction suivante :

1
2
3
4
5
def f(n):
    if n%2 == 0:
        return True
    else:
        return False

Que peut-on dire de ce code ?

  • La fonction est mal nommée
  • Il manque le docstring
  • La variable n peut être de n'importe quel type
  • Cette fonction permet de tester la parité de n
Réponse
  • La fonction est mal nommée
    Cette fonction permet de tester la parité de l'entier n. Lui donner un nom comme « est_pair() » est plus pertinent.
  • Il manque le docstring
    Dans ce docstring, les spécifications sont importantes. En particulier, n doit forcément être entier pour que le test n%2 ne renvoie pas une erreur.
  • La variable n peut être de n'importe quel type
  • Cette fonction permet de tester la parité de n

QCM 2

On considère la fonction suivante (volontairement sans docstring) :

1
2
3
4
5
6
def f(a, b):
    if a > 8:
        b = b-3
    if b >= 6:
        b = b+1
    return b

Que renvoie l'appel :

>>> f(9, 9)
  • 6
  • 7
  • 9
  • 10
Réponse
  • 6
  • 7
  • 9
  • 10

En ligne 2, a vaut 9 donc a est strictement plus grand que 8. Dès lors, b prend pour valeur 9-3 = 6.
En ligne 4, b vaut 6 donc b est supérieur ou égal à 6. Dès lors, b prend pour valeur 6+1 = 7.

QCM 3

On considère la fonction suivante (volontairement sans docstring) :

1
2
3
4
5
def f(n):
    p = 1
    for k in range(1, n+1):
        p = p*k
    return p

Que renvoie l'appel :

>>> f(4)
  • 6
  • 24
  • 1
  • Une erreur
Réponse
  • 6
  • 24
  • 1
  • Une erreur

On peut compléter le docstring de f() :

1
2
3
4
5
6
7
8
9
def f(n):
    """
    n - int, entier strictement positif
    Sortie: int - produit des entiers de 1 à n : 1*2*3*...*n.
    """
    p = 1
    for k in range(1, n+1):
        p = p*k
    return p

QCM 4

On considère la fonction suivante (volontairement sans docstring) :

1
2
3
4
5
def g(n):
    s = 0
    for i in range(0, n, 2):
        s = s+i
    return s

Que renvoie l'appel :

>>> g(10)
  • 20
  • 30
  • 45
  • 55
Réponse
  • 20
  • 30
  • 45
  • 55

On peut compléter le docstring de g() :

1
2
3
4
5
6
7
8
9
def g(n):
    """
    n - entier naturel
    Sortie: int - somme des entiers naturels pairs strictement inférieurs à n
    """
    s = 0
    for i in range(0, n, 2):
        s = s+i
    return s

QCM 5

On considère la fonction suivante (volontairement sans docstring) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def f(a, b):
    """
    a - int, entier positif ou nul
    b - int, entier strictement positif
    """
    q = 0
    r = a
    while r >= b:
        r = r-b
        q = q+1
    return q, r

Que renvoie l'appel :

>>> f(7, 2)
  • (3, 1)
  • (2, 3)
  • (4, -1)
  • (7, 2)
Réponse
  • (3, 1)
  • (2, 3)
  • (4, -1)
  • (7, 2)

La fonction f() renvoie le couple (quotient, reste) de la division entière de a par b donc f() pourrait être renommée division_entiere() par exemple.