1 Définir une fonction

publicité
TP 8 – L ES
1
FONCTIONS EN
python
Définir une fonction
Introduction
Il arrive de manière fréquente qu’une même séquence d’instructions doive être utilisée à plusieurs reprises dans un
programme, et on souhaitera bien évidemment ne pas avoir à la reproduire systématiquement. Une solution consiste à
créer des fonctions avec ou sans paramètres.
La syntaxe des fonctions est :
1
2
def nomDeLaFonction(argument1, argument2, ...):
bloc d’instructions
argument1, argument2, ... sont appelés les arguments ou les paramètres de la fonction.
Fonction sans paramètre
Une fonction n’a pas forcément d’argument, il faut quand même mettre « () » dans la définition de cette fonction.
On peut, par exemple, créer une fonction permettant d’obtenir la table de 7.
Exemple : enregistrer un fichier TP8cours1.py
1
2
3
4
5
6
def table7():
"""fonction permettant d’obtenir la table par 7"""
n = 1
while n <11 :
print(n * 7, end =’ ’)
n = n +1
# Programme principal
table7()
# Pour utiliser la fonction que nous venons de définir, il suffit de l’appeler par son nom.
Noter ci-dessous l’affichage obtenu :
Fonction avec un paramètre
On peut définir une fonction qui est capable d’afficher n’importe quelle table, à la demande.
Exemple : enregistrer un fichier TP8cours2.py
1
2
3
4
5
6
def
table(base):
""" fonction permettant d’obtenir la table par base"""
n = 1
while n <11 :
print(n * base, end =’ ’)
n = n +1
# Programme principal
table(13)
#pour obtenir la table de 13
table(9)
#pour obtenir la table de 9
La fonction table() utilise le paramètre base pour calculer les dix premiers termes de la table de multiplication
correspondante.
Noter ci-dessous l’affichage obtenu :
Fonction avec plusieurs paramètres
On peut définir une fonction qui est capable d’afficher n’importe quelle table et pas forcément les dix premiers
termes de la table.
Exemple : enregistrer un fichier TP8cours3.py
1
2
3
4
5
6
7
def tableMulti(base, debut, fin):
"""fonction permettant d’obtenir la table par base de debut à fin"""
print(’Fragment de la table de multiplication par’, base, ’:’)
n = debut
while n <= fin :
print(n, ’x’, base, ’=’, n * base)
n = n +1
8
9
tableMulti(8, 13, 17)
Noter ci-dessous l’affichage obtenu :
Vos fonctions doivent être documentées pour que d’autres puissent savoir ce que fait
cette fonction.
Vraies fonctions et procédures
Une « vraie » fonction ( au sens strict ) doit renvoyer une valeur, sinon on parle de procédure. On utilise le
mot-clé return.
Exemple :
def cube(n):
"""fonction qui renvoie le cube d’un nombre"""
return n**3
def volumeSphere(r):
"""fonction qui renvoie le volume d’une sphère"""
return 4 * 3.14159 * cube(r) /3
#la fonction volumeSphere appelle la fonction cube
# Programme principal
r = float(input(‘ Entrez la valeur du rayon : ‘))
print(‘Le volume de cette sphère vaut : ‘, volumeSphere(r) )
#on appelle la fonction volumesphere
2 Les modules en python
Un module, c’est quoi ?
En python, certaines fonctions font partie du « pack » de base qui est toujours disponible, par exemple, len(),
input(), print(), . . .
D’autres fonctions, comme les fonctions sin et cos ne sont pas présentes dans le « pack » de base contrairement
à l’addition, la soustraction, . . .
Il faut donc faire appel aux modules . . .
Un module en python est une bibliothèque de fonction, non disponible directement au chargement de
python.
Le module math
Le module math regroupe toutes le fonctions indispensables en mathématiques.
On peut importer une fonction particulière :
1
>>> from math import cos
# importe la fonction cosinus du module math
On peut importer un module en entier :
1
>>> from math import *
# l’étoile indique que l’on doit importer tous le module math
Pour connaître le contenu d’un module :
On utilise la fonction dir()
1
>>>import math
2
>>>dir(math)
[’ doc ’, ’ name ’, ’ package ’, ’acos’, ’acosh’, ’asin’, ’asinh’, ’atan’, ’atan2’, ’atanh’, ’ceil’,
’copysign’, ’cos’, ’cosh’, ’degrees’, ’e’, ’erf’, ’erfc’, ’exp’, ’expm1’, ’fabs’, ’factorial’, ’floor’, ’fmod’,
’frexp’, ’fsum’, ’gamma’, ’hypot’, ’isfinite’, ’isinf’, ’isnan’, ’ldexp’, ’lgamma’, ’log’, ’log10’, ’log1p’,
’modf’, ’pi’, ’pow’, ’radians’, ’sin’, ’sinh’, ’sqrt’, ’tan’, ’tanh’, ’trunc’]
2
3
4
5
Puis utiliser help(cos) pour connaitre ce que fait la fonction, ou mieux aller lire la documentation en ligne.
Le module random
Le module random permet de « gérer » tout l’aléatoire.
1
>>> from random import *
# importe tout le module random
Les principales fonctions de ce module que nous utiliserons :
• randint(a,b) : renvoie aléatoirement un entier compris entre a et b (inclus tous les
deux). Attention : a et b doivent être entiers (négatifs éventuellement).
• random() : renvoie aléatoirement un réel compris entre 0 (inclus) et 1 (exclu).
Exemples
1
2
3
4
>>> randint(2,75)
63
>>> random()
0.46480356897753472
Le module time
Le module time permet de « gérer le temps ».
1
>>> from time import *
# importe le module time
Les principales fonctions de ce module que nous utiliserons :
• La fonction time() permet de récupérer un temps machine (donc par différence de chronométrer).
• La fonction localtime() permet de récupérer l’« heure ».
• La fonction sleep(5) permet de faire une pause de 5 secondes.
Exemple La fonction suivante :
• affiche les entiers de 0 à 5 en faisant une pause entre les affichages ;
• calcul le temps nécessaire à l’exécution de cette fonction.
1
from time import *
2
14
def essai():
"""essai du module time"""
c1=time()
i=0
while i<6:
print(i)
sleep(1)
i=i+1
c2=time()
print("Temps écoulé :",c2-c1)
# Programme Principal
essai()
# On exécute la fonction essai qui affiche les nombres avec une pause de 1 seconde.
3
Exercices
3
4
5
6
7
8
9
10
11
12
13
E XER CI CE 1
Écrire un programme qui demande à un utilisateur d’entrer une phrase et qui en un seul parcours de cette
chaîne de caractères, compte le nombre de voyelles et le nombre de s compris dans cette chaîne. On définira une
fonction comptage(chaine)qui retournera deux nombres.
E XER CI CE 2
Écrire un programme qui demande à un utilisateur d’entrer une phrase, puis l u i d e m a n d e un caractère et
affiche le nombre de f o i s o ù o n r e n c o n t r e c e caractère dans la chaîne. On définira une fonction
comptageCaractere comme qui retournera le nombre cherché.
E XER CI CE 3
(1) Écrire la fonction retourne(ch) qui étant donné une chaîne de caractères renvoie la chaîne écrite « à l’envers ».
(2) Écrire une fonction palindrome(ch) qui teste si une chaîne de caractères est un palindrome et renvoie un
booléen.
(3) En déduire un programme qui affiche les années palindromiques de 1 à n.
Une année est palindromique si la chaîne de caractères correspondante est un palindrome.
On pourra utiliser la fonction str qui transforme un entier en la chaîne correspondante.
E XER CI CE 4
Écrire la fonction triangle(n) qui affiche un triangle d’étoiles.
1
triangle(5)
2
2
3
4
5
6
*
* *
* * *
* * * *
* * * * *
E XER CI CE 5
E XER CI CE 6
E XER CI CE 7
Écrire un programme qui recherche le plus grand élément présent dans une liste de nombre entrée par l’utilisateur.
E XER CI CE 8
La suite de Thue–Morse est définie par :
• a0 = 0 ;
• pour passer de an à an+1 on remplace tous les 0 de an par la séquence 01 et tous les 1 par la séquence 10.
(1) Donner, à la main, a1 ; a2 et a3.
(2) Écrire la fonction change(a) qui étant donné une chaîne de caractères a composée uniquement de 1 et de 0
renvoie la chaîne obtenue en remplaçant tous les 0 par 01 et les 1 par 10.
(3) Écrire un programme qui calcule an .
E XER CI CE 9
n
Écrire la fonction ζn qui calcule et renvoie la somme suivante : ζn(s) =
�
p=1
1
2
3
4
1
s
p
.
zeta(50,2)
1.6251327336215291
zeta(100,2)
1.6349839001848923
E XER CI CE 10
(1) Écrire la fonction etoiles(n) qui affiche n étoiles sur une ligne (sans saut de ligne à la fin).
(2) Écrire la fonction blancs(p) qui affiche p blancs sur une ligne (sans saut de ligne à la fin).
(3) Écrire la fonction etoiles_bl(n) qui affiche n étoiles avec un espace entre elles (sans espace au début et sans
saut de ligne à la fin).
(4) En déduire les fonctions :
• carre(n) : qui affiche un carré de n étoiles sur n.
1
2
3
4
5
6
carre(5)
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
• rectangle(n,p) : qui affiche un rectangle de p étoiles sur n étoiles.
• tri_rect(n) : qui affiche un triangle « rectangle » d’étoiles.
1
2
3
4
5
6
tri_rect(5)
*
* *
* * *
* * * *
* * * * *
(5) Écrire la fonction triangle(n) qui affiche un triangle d’étoiles.
1
2
3
4
5
6
triangle(5)
*
* *
* * *
* * * *
* * * * *
On peut aussi obtenir les triangles « tête en bas » . . . faire des figures . . .
Téléchargement