TD⚓︎
Exercice 1
def foo(mot):
return len(mot) * '*'
- Que renvoie (retourne) l'appel
foo("mot de passe")? - Modifier la fonction pour que la fonction retourne deux étoiles en plus.
- Renvoie
'************' -
def foo(mot): return len(mot) * '*' + '**'
Exercice 2
def foo(a, b):
return a + b
- Que renvoie (retourne) l'appel
foo(8, 9)? - Modifier la fonction pour que la fonction retourne le produit des paramètres.
- Renvoie
17 -
def foo(a, b): return a * b
Exercice 3
def foo(a, b):
q = a // b
r = a % b
return str(a) + " = " + str(q) + " * " + str(b) + " + " + str(r)
- Que renvoie (retourne) l'appel
foo(15, 4)? - Modifier la fonction pour que l'appel
foo(15, 4)retourne"15 / 4 = 3.75".
- Renvoie
'15 = 3 * 4 + 3' -
def foo(a, b): q = a / b return str(a) + " / " + str(b) + " = " + str(q)
Exercice 4
-
Que fait la fonction suivante ?
def foo(): print("***") print("***") print("***") -
Que fait la fonction suivante ?
def foo(): res = "***\n" res += "***\n" res += "***\n" return res
-
Elle affiche
*** *** *** -
Elle retourne la chaine
'***\n***\n***\n'. Cette chaine, si on l'affiche s'affichera comme la fonction précédente.
Exercice 5
-
Écrire une fonction
triangle()retournant une chaine de caractères s'affichant:* ** *** **** -
Écrire une fonction
rectangle(lg)retournant une chaine de caractères composée de trois lignes delgétoiles.Exemple:
>>> print(rectangle(10)) ********** ********** **********
-
def triangle(): return "*\n**\n***\n****" -
def rectangle(lg): return (lg * '*' + '\n') * 3
Exercice 6
def foo(prenom):
prenom = input("quel est votre prénom ?")
print("Bonjour", prenom)
- Qu'affiche l'appel
foo("Rosa")? -
Kevin pense que pour que l'appel
foo("Rosa")afficheBonjour Rosail faut modifier la fonction comme suit:def foo(prenom): prenom = "Rosa" print("Bonjour", prenom)Qu'en pensez-vous ?
- Affichera
Bonjoursuivi du prenom indiqué par l'utilisateur. C'est absurde puisque l'on s'attendrait à ce que cela afficheBonjour Rosa - La solution de Kevin permet d'afficher
Bonjour Rosamais l'appelfoo("Reda")affichera encoreBonjour Rosa. C'est tout aussi absurde.
IL NE FAUT DONC JAMAIS "ECRASER" LES PARAMÈTRES DE LA FONCTION.
Exercice 7
Ecrire des docstrings pour les fonctions que vous avez écrites aux exercices 1 à 4.
Voir exercice suivant
Exercice 8
Ecrire des doctests pour les fonctions que vous avez écrites aux exercices 1 à 4.
Avec l'exercice précédent:
# Ex1
def foo(mot):
"""Cette fonction renvoie une chaine de caractères composée d'autant d'étoiles que
le nombre de caractères de mot.
Args:
mot (str): chaine de caractères que l'on veut remplacer
Returns:
str : chaine composée d'étoiles voulue
>>> foo("bonjour")
'*******''
>>> foo("")
''
"""
return len(mot) * '*'
# Ex2
def foo(a, b):
"""Cette fonction renvoie la somme des nombres (int ou float) passés en paramètre.
Args:
a (int ou float): un deux deux nombres que l'on veut additionner
b (int ou float): autre nombre que l'on veut additionner
Returns:
int ou float : somme de a et b
>>> foo(8, 9)
17
>>> foo(-2.0, 0)
-2.0
"""
return a + b