Questions : fonctions
1. Fonctions et mathématiques
Question 1.1
Question
Parmi les 4 fonctions suivantes, lesquelles permettent de renvoyer le maximum des 2 paramètres ?
Fonction A :
def maximum(a,b):
if a > b :
resultat = a
else :
resultat = b
return resultat
Fonction B :
def maximum(a,b):
if a >= b :
resultat = a
else :
resultat = b
return resultat
Fonction C :
def maximum(a,b):
if a > b :
resultat = a
if a < b :
resultat = b
return resultat
Fonction D :
def maximum(a,b):
return a if a > b else b
- A
- B
- C
- D
- A
- B
- C
- D
Parmi les propositions, toutes conviennent sauf la C : lorsque les 2 paramètres sont égaux la C ne renvoie rien. La syntaxe de la D est particulière, mais usuelle en Python.
Question 1.2
Question
Parmi les 4 fonctions suivantes, lesquelles permettent de renvoyer la liste des valeurs de la table de multiplication d'un entier (c'est à dire les produits de cet entier par les entiers de 1 à 10) ?
Fonction A :
def table_multiplication(n):
table = []
for i in range(1,11):
table.append(n*i)
return table
Fonction B :
def table_multiplication(n):
table = []
for i in range(1,11):
table = table + n*i
return table_multiplication
Fonction C :
def table_multiplication(n):
table = []
for i in range(10):
table.append(n*i)
return table
Fonction D :
def table_multiplication(n):
table = []
for i in range(1,11):
table = table + [n*i]
return table
- A
- B
- C
- D
- A
- B
- C
- D
La proposition B essaie d'utiliser le symbole +
entre une liste et un entier, ce qui provoque une erreur. Par ailleurs elle renvoie la fonction plutôt que la liste, ce qui ne répond pas à la question posée.
La fonction C n'utilise pas les bons entiers : range(10)
engendre les entiers de 0 à 9, et non de 1 à 10.
Les fonctions A et D sont correctes.
2. Avec l'opérateur +
Question 2.1
Question
On donne la fonction suivante :
def plus(a, b)
return a + b
print(plus(5, 6))
- 11
- 5 6
- 56
- Une erreur
- 11
- 5 6
- 56
- Une erreur
Lorsque les paramètres sont des nombres, le symbole +
est un opérateur d'addition.
Question 2.2
Question
On donne la fonction suivante :
def plus(a, b)
return a + b
print(plus('5', '6'))
- 11
- 5 6
- 56
- Une erreur
- 11
- 5 6
- 56
- Une erreur
Lorsque les paramètres sont des chaines de caractères, le symbole +
est un opérateur de concaténation. L'affichage produit est la chaine de caractères '56' et non l'entier 56.
Question 2.3
Question
On donne la fonction suivante :
def plus(a, b)
return a + b
print(plus('5', 6))
- 11
- 5 6
- 56
- Une erreur
- 11
- 5 6
- 56
- Une erreur
Lorsque les paramètres sont un entier pour l'un et une chaine de caractères pour l'autre, le symbole +
n'a pas de signification.
L'affichage produit est le message d'erreur : TypeError: cannot concatenate 'str' and 'int' objects
3. Tracés en boucle : des fonctions sans return
Module turtle
Les exercices suivants utilisent le module turtle
. Ils sont précédés de l'icône .
Pour exécuter dans un notebook Jupyter de Basthon un programme utilisant des instructions du module turtle
, le notebook doit contenir l'instruction from turtle import *
et le programme doit se terminer avec l’instruction done()
.
Question 3.1
Question
Parmi les programmes suivants, lequel permet de faire tracer à la tortue la figure ci-dessous ?
Programme A :
def carre():
for nb_cote in range(3):
forward(100)
left(90)
for nb_carre in range(4):
carre()
right(120)
Programme B :
def carre():
for nb_cote in range(4):
forward(100)
left(90)
for nb_carre in range(3):
carre()
left(30)
Programme C :
def carre():
for nb_cote in range(4):
forward(100)
left(90)
for nb_carre in range(3):
carre()
left(120)
Programme D :
def carre():
for nb_cote in range(3):
forward(100)
left(90)
for nb_carre in range(4):
carre()
left(120)
- A
- B
- C
- D
- A
- B
- C
- D
La fonction carre
doit faire tracer 4 côtés (range(4)
) et les angles d'un carré font 90°.
Chaque carré est l'image d'un autre par une rotation d'un tiers d'angle plein (360/3 = 120°). Le sens de cette rotation importe peu : right(120)
aurait aussi convenu.
Question 3.2
Question
Parmi les programmes suivants, lequel permet de faire tracer à la tortue la figure ci-dessous ?
Programme A :
def hexagone():
for nb_cote in range(3) :
forward(80)
left(120)
for nb_poly in range(6) :
hexagone(t)
left(60)
Programme B :
def hexagone():
for nb_cote in range(6) :
forward(80)
left(120)
for nb_poly in range(3) :
hexagone()
left(60)
Programme C :
def hexagone():
for nb_cote in range(6) :
forward(80)
left(60)
for nb_poly in range(6) :
hexagone()
left(120)
Programme D :
def hexagone():
for nb_cote in range(6) :
forward(80)
left(60)
for nb_poly in range(3) :
hexagone()
left(120)
- A
- B
- C
- D
- A
- B
- C
- D
Il y a 3 hexagones réguliers à tracer (range(3)
).
La fonction hexagone
fait tracer 6 côtés (range(6)
). Les angles internes de l'hexagone font 120° donc la tortue doit pivoter de 180 - 120 = 60°.
Chaque hexagone est l'image d'un autre par une rotation d'un tiers d'angle plein (360/3 = 120°). Le sens de cette rotation importe peu : right(120)
aurait aussi convenu.