Fonctions

En mathématiques

Une fonction à une variable :

In [1]:
def f(x):
    return 3*x**2- x - 2

print(f(0))

for k in [-5,-4,-3,-2,-1,0,1,2,3,4,5]:
    print(f(k))
-2
78
50
28
12
2
-2
0
8
22
42
68

Une fonction à deux variables :

In [2]:
def g(x,y):
    return x**2 + y**2

g(3,4)
Out[2]:
25

Deux paramètres en entrée, un booléen en retour.

Le premier return rencontré fait sortir de la fonction.

In [3]:
def meme_signe(a,b):
    if a*b > 0:
        return True
    else:
        return False
    
meme_signe(-2,3) , meme_signe(2,3), meme_signe(-2,-3)
Out[3]:
(False, True, True)

Exercice 1

Ecrire une fonction max_des_deux qui

  • prend en paramètres deux nombres
  • retourne le plus grand des deux
In [4]:
def max_des_deux(a,b):
    if a>b :
        return a
    else :
        return b
    
max_des_deux(10,50) , max_des_deux(5000,50) , max_des_deux(1,1)
Out[4]:
(50, 5000, 1)

Exercice 2

En utilisant la fonction précédente, écrire une fonction max_des_trois qui

  • prend en paramètres trois nombres
  • retourne le plus grand des trois
In [5]:
def  max_des_trois(a,b,c):
    return max_des_deux( max_des_deux(a,b) , c )

max_des_trois(1,2,3) , max_des_trois(1,3,2) , max_des_trois(3,1,2)
Out[5]:
(3, 3, 3)

Exercice 3

Ecrire une fonction insere_debut_liste qui

  • prend en paramètres un nombre et une liste
  • retourne la liste avec le nombre en première position, tous les autres éléments de la liste sont décalés d'une position vers la droite
In [6]:
def insere_debut_liste(x,liste):
    return [x] + liste

insere_debut_liste(10,[1,2,3])
Out[6]:
[10, 1, 2, 3]

Exercice 4

Ecrire une fonction max_liste qui

  • prend en paramètre une liste de nombres
  • retourne le plus grand élément de la liste
In [7]:
def max_liste(liste):
    longueur = len(liste)
    maxliste = liste[0]
    for i in range(1,longueur):
        if liste[i] > maxliste :
            maxliste = liste[i]
    return maxliste

max_liste([1,2,10,6]) , max_liste([10,5,2]) , max_liste([1,10])            
Out[7]:
(10, 10, 10)

Exercice 5

Ecrire une fonction min_liste qui

  • prend en paramètre une liste de nombres
  • retourne le plus petit élément de la liste
In [8]:
def min_liste(liste):
    longueur = len(liste)
    minliste = liste[0]
    for i in range(1,longueur):
        if liste[i] < minliste :
            minliste = liste[i]
    return minliste

min_liste([1,2,10,6]) , min_liste([10,5,2]) , min_liste([1,10])
Out[8]:
(1, 2, 1)

Exercice 6

En utilisant des fonctions précédentes, écrire une fonction tri_basique_decroissant qui

  • prend en paramètre une liste de nombres
  • retourne la liste triée dans l'ordre décroissant
In [ ]:
  
    

Exercice 7

En utilisant des fonctions précédentes, écrire une fonction tri_basique_croissant qui

  • prend en paramètre une liste de nombres
  • retourne la liste triée dans l'ordre croissant
In [ ]:
 

Pour aller plus loin

S'il n'y a pas de return dans une fonction, elle retourne none :

In [9]:
def f(a):
    a =2
    
f(5)

Il ne s'est rien passé et :

In [10]:
print(f(5))
None

En Python les fonctions sont polymorphes.

In [11]:
def f(x,y):
    return x+y

Le type des paramètres x et y n'est pas défini. Essayer de prendre deux entiers pour x et y, ou deux listes :

In [12]:
f(2,5)
Out[12]:
7
In [13]:
f([12,13],[4,5,6])
Out[13]:
[12, 13, 4, 5, 6]
In [14]:
f('abcd','efg')
Out[14]:
'abcdefg'
In [ ]: