Vous êtes sur la page 1sur 8

007 - Les fonctions

September 3, 2023

1 Les fonctions - Géneralités


[ ]: # Exemple d'une fonction
def fonction(a,b,c):
s=a+b+c
print("La somme de",a,",",b,"et",c,"est",s)

[ ]: # Appel à la fonction
fonction(3,6,5)

La somme de 3 , 6 et 5 est 14

[ ]: # Appel à la fonction
fonction(7,10,9)

La somme de 7 , 10 et 9 est 26

[ ]: # Exemple d'une autre fonction


def produit(a,b):
print(a,'x',b,"=",a*b)

[ ]: # Appel à la fonction
produit(5,7)

5 x 7 = 35

[ ]: # Appel à la fonction
produit(3,7)

3 x 7 = 21

1.1 Exercice 1 :
Ecrire une fonction qui prend en paramètre un entier et affiche son factoriel.

[ ]: def factoriel(n):
f=1
for i in range(1,n+1):
f=f*i
print("Le factoriel de",n,"est",f)

1
1.2 Exercice 2 :
En utilisant la fonction ci dessus, ecrire un programme qui prend un entier chez l’utilisateur et qui
affiche son factoriel.

[ ]: n=int(input("Veuillez saisir un entier : "))


factoriel(n)

Veuillez saisir un entier : 5


Le factoriel de 5 est 120

2 Les fonctions - return


[ ]: # Soit les deux fonctions suivantes
def test1(a,b):
s=a+b
print(s)

def test2(a,b):
s=a+b
return s

[ ]: # On fait appel à la fonction test1


test1(5,2)

[ ]: # On fait appel à la fonction test2


test2(5,2)

[ ]: 7

[ ]: # On affecte test1(3,4) à a
a = test1(3,4)

[ ]: # On affecte test2(3,4) à b
b = test2(3,4)

[ ]: # Cherchons le contenu de a
print(a)

None

[ ]: # Cherchons le contenu de b
print(b)

2
[ ]: s=test1(4,5)+test1(4,2)
print(s)

9
6

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-32-6955af746076> in <module>
----> 1 s=test1(4,5)+test1(4,2)
2 print(s)

TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

[ ]: s=test2(4,5)+test2(4,2)
print(s)

15

[ ]: test1(4,2)==6

[ ]: False

[ ]: test2(4,2)==6

[ ]: True

[ ]: # Soit les deux fonctions suivantes


def test3():
for i in range(5):
print(i)

def test4():
for i in range(5):
return i

[ ]: # On fait appel à test3()


test3()

0
1
2
3
4

3
[ ]: # On fait appel à test4()
test4()

[ ]: 0

[ ]: def test5():
for i in range(5):
if i>0:
return i

test5()

[ ]: 1

[ ]: def test6():
return("a")
return("b")

test6()

[ ]: 'a'

2.1 Exercice 3 :
Ecrire une fonction qui prend en paramètre un entier et qui retourne son factoriel.

[ ]: def fact(n):
f=1
for i in range(1,n+1):
f=f*i
return f

2.2 Exercice 4 :
En utilisant la fonction ci dessus, ecrire un programme qui prend un entier chez l’utilisateur et qui
affiche son factoriel.

[ ]: n=int(input("Veuillez saisir un entier : "))


f=fact(n)
print(n,"! =",f)

Veuillez saisir un entier : 5


5 ! = 120

2.3 Exercice 5 :
1. Ecrire une fonction qui prend en paramètre un entier et qui retourne le nombre de ses diviseurs.
2. Ecrire une fonction qui prend en paramètre un entier et qui retourne True s’il est premier et
False sinon. Utilisez deux méthodes.

4
[ ]: # 1 - Nombre de diviseurs d'un entier
def nbre_div(n):
s=0
for i in range(1,n+1):
if n%i==0:
s=s+1
return s

[ ]: # 2 - Premier ou non - En utilisant la fonction nbre_div 1


def premier(n):
if nbre_div(n)==2:
return True
else:
return False

[ ]: # 2 - Premier ou non - En utilisant la fonction nbre_div 2


def premier(n):
if nbre_div(n)==2:
return True
return False

[ ]: # 2 - Premier ou non - En utilisant la fonction nbre_div 3


def premier(n):
return nbre_div(n)==2

[ ]: # 2 - Premier ou non - Sans utiliser la fonction nbre_div


def premier(n):
for i in range(2,n):
if n%i==0:
return False
return True

2.4 Exercice 6 :
Ecrire une fonction qui prend en paramètre un entier et qui retourne le nombre de ses chiffres

[ ]: def nbre_chiffre(n):
s=0
while n!=0:
s=s+1
n=n//10
return s

nbre_chiffre(14567)

[ ]: 5

5
3 Variables globales & Variables locales
[5]: # m est déclarée à l'extérieur de la définition de la fonction
# m est dite variable globale
# On peut utiliser la variable m au sein de la fonction
m=5
def fonction(x,y):
return x+y+m

print(fonction(3,4))
print(m)

12
5

[7]: # n est déclarée à l'intérieur de la définition de la fonction


# n est dite variable locale
# n est crée lors de l'appel de la fonction et supprimée juste aprés␣
↪l'éxécution de la fonction

def fonction(x,y):
n=5
return x+y+n

print(fonction(3,4))
print(n)

12

---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-7-6a8c419ada05> in <module>
7
8 print(fonction(3,4))
----> 9 print(n)

NameError: name 'n' is not defined

[8]: # n est déclarée à l'intérieur de la définition de la fonction


# n est dite variable locale
# n est crée lors de l'appel de la fonction et supprimée juste aprés␣
↪l'éxécution de la fonction

# Si nous voulons que n soit accessible apres l'appel de la fonction on utilise␣


↪le mot global

def fonction(x,y):
global n

6
n=5
return x+y+n

print(fonction(3,4))
print(n)

12
5

[10]: # n est déclarée à l'intérieur de la définition de la fonction


# n est dite variable locale
# n est crée lors de l'appel de la fonction et supprimée juste aprés␣
↪l'éxécution de la fonction

# Si nous voulons que n soit accessible apres l'appel de la fonction on utilise␣


↪le mot global

def fonction(x,y):
global s
s=5
return x+y+s

print(s)
print(fonction(3,4))

---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-10-bd9d6c7c1931> in <module>
9 return x+y+s
10
---> 11 print(s)
12 print(fonction(3,4))

NameError: name 's' is not defined

[11]: # La variable a à l'extérieure de la définition de la fonction est globale


# La variable a à l'intérieur de la définition de la fonction est locale
a=5
def fct(x,y):
a=77
return a+x+y

print(fct(1,2))
print(a)

80
5

7
[12]: a=5
def fct(x,y):
global a
a=77
return a+x+y

print(fct(1,2))
print(a)

80
77

[13]: a=5
def fct(x,y):
global a
a=77
return a+x+y

print(a)
print(fct(1,2))

5
80

[14]: a=5
def fct(x,y):
global a
a=77
return a+x+y

print(a)
print(fct(1,2))
print(a)

5
80
77

Vous aimerez peut-être aussi