Title: Niveau 2
Course: Les images vectorielles

Q: Quelle est la sortie du code suivant :

def sum(*args):

    r = 0

    for i in args:

        r+=i

    return r

print (sum(1, 2, 3))

print (sum(1, 2, 3, 4, 5))
- 6 15
- 6 100
- 123 12345
- Aucune de autres propositions
A: 6 15
Feedback: L’opérateur * indique que la fonction accepte un nombre arbitraire d’arguments.

Q: Quelle est la sortie du code suivant :

def change(i = 1, j = 2):

    i = i + j

    j = j + 1

    print(i, j)

change(j = 1, i = 2)
- 3 2
- Erreur
- 1 2
- 3 3
A: 3 2
Feedback: L’affectation lors de l’appel de la fonction prend le dessus sur les valeurs par défaut.

Q: Quelle est la sortie du code suivant :

def change(i = 1, j = 2):

    i = i + j

    j = j + 1

    print(i, j)

change()
- 3 3
- None
- 0 1
- 3 2
A: 3 3
Feedback: Les valeurs par défaut sont utilisées.

Q: Quelle est la sortie du code suivant :

def change(one, *two):

    print(type(two))

change(1,2,3,4)
- Tuple
- Integer
- String
- Erreur
A: Tuple
Feedback: Le paramètre two est un paramètre variable qui ici correspond à (2,3,4), c’est donc un tuple.

Q: Quelle est la sortie du code suivant :

def foo(fname, val):

    print(fname(val))

foo(max, [1, 2, 3])

foo(min, [1, 2, 3])
- 3 1
- 1 3
- erreur
- Aucune de autres propositions
A: 3 1
Feedback: Les noms de fonctions sont également des références à des emplacements en mémoire, c’est pourquoi, on peut utiliser le mécanisme précédent..

Q: Quelle est la sortie du code suivant :

def foo():

    return total + 1

total = 0

print(foo())
- 1
- 0
- erreur
- Aucune de autres propositions
A: 1
Feedback: Si aucune variable locale n’est trouvée, l’interpréteur cherche une variable globale. Toutefois, on ne peut modifier une variable globale de l’intérieur de la fonction sans déclaration préalable.

Q: Quelle est la sortie du code suivant :

def foo():

    total += 1

    return total

total = 0

print(foo())
- erreur
- 0
- 1
- Aucune de autres propositions
A: erreur
Feedback: Si aucune variable locale n’est trouvée, l’interpréteur cherche une variable globale. Toutefois, on ne peut modifier une variable globale de l’intérieur de la fonction sans déclaration préalable.

Q: Quelle est la sortie du code suivant :

def foo(i, x=[]):

    x.append(i)

    return x

for i in range(3):

    print(foo(i))
- \(\left [ \right .\)0\(\left . \right ]\) \(\left [ \right .\)0, 1\(\left . \right ]\) \(\left [ \right .\)0, 1, 2\(\left . \right ]\).
- \(\left [ \right .\)0\(\left . \right ]\) \(\left [ \right .\)1\(\left . \right ]\) \(\left [ \right .\)2\(\left . \right ]\).
- \(\left [ \right .\)1\(\left . \right ]\) \(\left [ \right .\)2\(\left . \right ]\) \(\left [ \right .\)3\(\left . \right ]\).
- \(\left [ \right .\)1\(\left . \right ]\) \(\left [ \right .\)1, 2\(\left . \right ]\) \(\left [ \right .\)1, 2, 3\(\left . \right ]\).
A: \(\left [ \right .\)0\(\left . \right ]\) \(\left [ \right .\)0, 1\(\left . \right ]\) \(\left [ \right .\)0, 1, 2\(\left . \right ]\).
Feedback: Quand une liste est une valeur par défaut, elle est réutilisée lors des appels suivants.

Q: Quelle est la sortie du code suivant :

def power(x, y=2):

    r = 1

    for i in range(y):

        r = r * x

    return r

print (power(3))

print (power(3, 3))
- 9 27
- 212 32
- 567 98
- Aucune de autres propositions
A: 9 27
Feedback: Pour une fonction, on peut définir des arguments par défaut. Ici, c’est le cas pour le second argument. Notre fonction peut donc être appelée avec un ou deux arguments. On parle de valeur implicite.