0% ont trouvé ce document utile (0 vote)
8 vues190 pages

Introduction à Python et Variables

Transféré par

najiibalmali
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues190 pages

Introduction à Python et Variables

Transféré par

najiibalmali
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Premiers pas.

Introduction à Python

Pr. Abdessamad JARRAR Master IASD


Premiers pas.

Objectifs de ce module

• Introduire les notions d’algorithmes et de


programmes informatiques.

• Présenter plus particulièrement le langage


Python et deux de ses environnements de
développement.

• Effectuer ses premières manipulations de


variables.
Pr. Abdessamad JARRAR Master IASD
Premiers pas.

Plan de ce module

1. Généralités sur l’algorithmique et la


programmation.
2. Prise en main de l’environnement de
développement.
3. Notion de variables.
4. Opérations sur les variables.

Pr. Abdessamad JARRAR Master IASD


Premiers pas.

1. Généralités sur l’algorithmique et


la programmation.

Pr. Abdessamad JARRAR Master IASD


1. Généralités sur l’algorithmique et la programmation.

Pourquoi le choix du Python ?


• Il possède une syntaxe simple.

• On peut donc se concentrer sur la logique algorithmique.

• Le mode “console” permet de tester des portions de codes


immédiatement.

• C’est un langage interprété, c’est-à-dire que les


instructions des programmes seront exécutées au fur et à
mesure.

Pr. Abdessamad JARRAR Master IASD


1. Généralités sur l’algorithmique et la programmation.

Pourquoi le choix du Python ?


• C’est un langage de haut niveau, on ne souciera pas de la
gestion des ressources mémoires.

• Python possède des structures de données évoluées,


listes, ensembles, dictionnaires, etc.

• Python est de plus en plus populaire et possède de


nombreuses ressources bibliographiques.

• Enfin, c’est un langage open source.

Pr. Abdessamad JARRAR Master IASD


1. Généralités sur l’algorithmique et la programmation.

Quelle version de Python ?


• Il y a principalement deux “branches” différentes de
Python : 2.x et 3.x

• Même si elles sont assez semblables dans l’esprit, on peut


noter d’importantes différences de syntaxes,
fonctionnalités, etc.

• Ce cours est basé sur la branche 3.x, et plus


particulièrement sur la version 3.11

Pr. Abdessamad JARRAR Master IASD


Premiers pas.

2. Prise en main de
l’environnement de
développement.
Pr. Abdessamad JARRAR Master IASD
2. Prise en main de l’environnement de développement.

Plan de ce chapitre

a. Téléchargement de IDLE et Anaconda.


b. Utilisation de la console.
c. Écriture de scripts.

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Téléchargement de IDLE et Pycharm.


Environnement de développement IDLE proposé par la
Python Software Foundation :

•[Link]

•Multiplateforme et de licence libre.

•Ce cours a été écrit avec la version 3.11

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Téléchargement de IDLE et Pycharm.


• Anaconda est une distribution Python gratuite et open
source pour la science des données, l'apprentissage
automatique et l'informatique haute performance (HPC).

• [Link]

• Anaconda inclut plus de 150 packages préinstallés, tels


que NumPy, Pandas, Matplotlib et Scikit-learn.

• Anaconda Navigator est une interface graphique incluse


dans la distribution Anaconda.
Pr. Abdessamad JARRAR Master IASD
2. Prise en main de l’environnement de développement.

Utilisation de la console.
• Le premier mode d’utilisation de Python est un mode
interactif, style “calculatrice”.

• Il permet d’exécuter du code “à la volée”.

• L’intérêt étant de pouvoir tester facilement des petites


portions de code, de vérifier la justesse d’une syntaxe, etc.

• Ou même de réaliser des calculs.

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Utilisation de la console.
Sous Windows : au choix

•à partir du menu “démarrer”, répertoire ‘Python 3.11”


lancer “Python (command line)”.
•À partir du réperoire “c:/Python311” lancer “[Link]”.

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Utilisation de la console.
Console d’IDLE sous Windows : au choix

•à partir du menu “démarrer”, répertoire ‘Python 3.11”


lancer “IDLE (Python GUI)”.
•À partir du réperoire “c:/Python311/lib/idlelib” lancer
“[Link]”.

Console d’IDLE sous Mac :

•Dans “Applications/Python 3.11” lancer IDLE.

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Utilisation de la console.
La console d’IDLE :

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Utilisation de la console.
À partir de Anaconda Navigator : Lancer Spyder

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Utilisation de la console.
À partir de Anaconda Navigator : Lancer Jupyter

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Écriture de scripts.
• Le mode console ne permet pas de sauvegarder des
programmes.

• Pour écrire un script, un simple éditeur de texte peut


suffire mais on préfèrera utiliser un environnement de
développement afin de bénéficier de fonctionnalités
supplémentaires : coloration syntaxique, auto-
complétion, etc.

Pr. Abdessamad JARRAR Master IASD


2. Prise en main de l’environnement de développement.

Écriture de scripts.
Avec IDLE :

•Écriture : menu “File”, “New File” (ou “New window” selon


les versions).

•Ouverture : menu “File”, “Open”.

•Lancement : menu “Run”, “Run Module” ou alors touche


“F5”.

Pr. Abdessamad JARRAR Master IASD


Premiers pas.

3. NOTION DE VARIABLES.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

Plan de ce chapitre

a. Variables.
b. Les types de variables.
c. Spécificités du Python.
d. Affectation de variables.
e. Conversions de types.
f. Affichage et saisie.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

a. Variables.
• Un algorithme ou un programme manipulent des données.
Certaines sont connues dès le départ, d’autres sont
calculées lors de son exécution.

• Pour pouvoir manipuler ces données il faut garder leurs


valeurs en mémoire.

• C’est le rôle des variables.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

a. Variables.
Variable :

• Nom désignant une donnée (nombre, texte…) susceptible


de changer de valeur.

• Une variable possède un type, ce qui permet à l’ordinateur


de savoir quelles valeurs elle peut prendre et quelles
opérations on peut effectuer avec.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

b. Les types de variables.


Types “élémentaires” en Python :

•int : nombres entiers.

•float : nombres décimaux.

•complex : nombres complexes.

•bool : booléens (deux valeurs possibles “True” et “False”).

•str : chaînes de caractères.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

c. Spécificités du Python.
Typage dynamique :

•Avant d’utiliser une variable on n’a pas besoin de déclarer


explicitement son type, c’est l’interpréteur qui s’en charge.

•Cela sera fait dès que l’on attribuera une valeur à notre
variable.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

c. Spécificités du Python.
Typage fort :

•Les opérations possibles sur une variable dépendent


intégralement de son type.

•Les conversions de types implicites afin de réaliser certaines


opérations sont donc interdites.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

d. Affectation de variables.
• Syntaxe : affectation simple

maVariable = valeur

• Syntaxe : affectation multiple

var1, var2, ... = val1, val2, ...

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

d. Affectation de variables.
Remarques :

•Comme mentionné précédemment, lorsque l’on veut utiliser


une variable il n’y a donc pas besoin de déclarer son type.
C’est lors de son initialisation que ce typage s’effectue.

•On peut toujours vérifier le type d’une variable avec


l’instruction “type” :

type(maVariable)

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

d. Affectation de variables.
Exemple :

>>> i = 4
>>> type(i)
<class 'int'>
>>> x, z = -5.3, 1+1j
>>> z
(1+1j)
>>> type(z)
<class 'complex'>
>>> type(x)
<class 'float'>

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

d. Affectation de variables.
Exemple :

>>> texte = 'Street fighting man'


>>> type(texte)
<class 'str'>
>>> texte
'Street fighting man’
>>> '666’ + 111
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: Can't convert 'int' object to str
implicitly

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

e. Conversions de types.
Opérations de conversions :
Opération Contrainte / Résultat
int(x) x est un décimal (qui sera tronqué) ou une chaîne
int(x,base) x est une chaîne et base un entier
float(x) x est un entier ou une chaîne
complex(x,y) x et y sont des nombres ou x est une chaîne
bool(x) x est un nombre ou un booléen
Vaut False uniquement si x vaut 0 ou ‘ ‘
str(x) x est un nombre ou un booléen
eval(x) x est une chaîne qui est évaluée comme une
expression Python
Pr. Abdessamad JARRAR Master IASD
3. Notions de variables.

e. Conversions de types.
Exemple :

>>> x = 666.6
>>> y = int(x)
>>> y
666
>>> eval('y+111')
777
>>> int('10101',2)
21
>>> str(y)
'666'

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
• En mode “console” on peut afficher le contenu d’une
variable en tapant juste son nom (voir exemples
précédents).

• Pour réaliser un affichage sur la console à partir d’un


script, et/ou pour réaliser des affichages plus sophistiqués
on aura besoin de l’instruction “print”.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Syntaxe de la fonction “print” :

print(expr_1,expr_2,...,sep=‘ ‘,end=‘\n’)

•Les différentes expressions (en nombre variables) sont soit


des chaînes, soit des résultats de calculs convertis en chaînes,
soit des variables dont on souhaite afficher la valeur.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Syntaxe de la fonction “print” : (suite)

•“sep” indique ce qui va séparer ces expressions, par défaut il


s’agit d’un espace.

•“end” indique ce qui sera affiché après toutes les


expressions, par défaut il s’agit d’un retour à ligne.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Exemple :

>>> age = 30
>>> print("J'ai",age,"ans et dans deux ans
j'aurais",age+2,"ans")
J'ai 30 ans et dans deux ans j'aurais 32 ans

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Exemple : (suite)

print("des","traits","bas","pour","séparer",
sep='_')
print("et","des","plus","à","la","suite",
sep='_',end='+++ ')
print("et la fin")

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Remarque

•Tabulation et retour à la ligne s’obtiennent avec ‘\t’ et ‘\n’ :

>>> print("The \tRolling Stones")


The Rolling Stones
>>> print("The Rolling\nStones")
The Rolling
Stones

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Syntaxe de la fonction “input” :

var = input(expression)

•“expression” est facultative, elle sert juste à réaliser un


affichage sur la ligne de la saisie.

•Ce que va saisir l’utilisateur sera affecté sous forme de


chaîne de caractère à la variable “var”.

Pr. Abdessamad JARRAR Master IASD


3. Notions de variables.

f. Affichage et saisie.
Exemple :

>>> a = input()
>? 12
>>> print(a,type(a))
12 <class 'str'>
>>> b = eval(input("saisir un nombre : "))
saisir un nombre : >? 12
>>> print(b,type(b))
12 <class 'int'>

Pr. Abdessamad JARRAR Master IASD


Premiers pas.

4. Opérations sur
les variables.

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

Plan de ce chapitre

a. Opérations arithmétiques.
b. Opérations sur les chaînes.

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Liste des principales opérations arithmétiques :

Opération Résultat
x+y Addition de x et y
x-y Soustraction de y à x
x*y Multiplication de x et y
x ** y Élévation de x à la puissance y
x/y Quotient réel de x par y
x // y Quotient entier de x par y
x%y Reste du quotient entier de x par y

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Précisions :

•Si les deux opérandes des opérations +, -, *, ** sont entiers


(resp. réels) le résultat est entier (resp. réel).

•Si un des deux opérandes est réel, le résultat est réel.

•Le résultat de l’opération / est toujours un réel.

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Précisions : (suite)

•Si les deux opérandes sont des entiers, le résultat de


l’opération // est le quotient de la division euclidienne et le
résultat de l’opération % le reste.

•Si l’un des deux opérandes est un réel, le résultat de


l’opération // est la partie entière du quotient de la division
réelle.

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Exemple :

>>> -3 + 5
2
>>> 3 * 5
15
>>> 5 ** 2
25
>>> 13 / 4
3.25

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Exemple : (suite)

>>> 13 // 4
3
>>> 13 % 4
1
>>> 13 // 4.6
2.0
>>> 13 % 4.6
3.8000000000000007

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Quelques raccourcis :

Opération Résultat
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x **= y x = x ** y
x /= y x=x/y
x //= y x = x // y
x %= y x=x%y

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Exemple :

>>> x = 25
>>> y = 0.5
>>> x **= y
>>> print(x)
5.0
>>> y += 1
>>> print(y)
1.5

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Module “math” :

•Pour effectuer des calculs mathématiques plus “élaborés”,


on pourra utiliser un module de fonctions complémentaires.

•Avant de l’utiliser, il convient de l’importer :

from math import *

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

a. Opérations arithmétiques.
Exemple :

>>> from math import *


>>> exp(1)
2.718281828459045
>>> pi
3.141592653589793
>>> cos(pi/2)
6.123233995736766e-17

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


• En Python, une chaîne de caractères est considérée
comme une suite de caractères.

• Cela signifie entre autres que l’on pourra avoir accès à


n’importe lequel de ces caractères via sa position dans la
chaîne.

• Particularité importante, une variable dont le type est “str”


est en fait une constante.

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


Exemple : la chaîne “street”

Indexation des caractères


à partir du début

0 1 2 3 4 5

s t r e e t

-6 -5 -4 -3 -2 -1

Indexation des caractères


à partir de la fin

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


Accès aux éléments (“slicing”) :

Opération Résultat
s[i] i-ème élément de s
s[i:j] Sous-chaîne de s constituée des éléments entre
le i-ème (inclus) et le j-ème (exclus)
s[i:j:k] Sous-chaîne de s constituée des éléments entre
le i-ème (inclus) et le j-ème (exclus)
pris avec un pas de k

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


Exemple :

>>> s = 'street'
>>> print(s[0],s[-1])
s t
>>> s[2:]
'reet'
>>> s[1:4]
'tre'
>>> s[2] = 'z'
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'str' object does not support item
assignment

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


Opérations de traitement :
Opération Résultat
x in s Teste si x appartient à s
x not in s Teste si x n’appartient pas à s
s+t Concaténation de s et t
s * n ou n * s Concaténation de n copies de s
len(s) Nombre d’éléments de s
min(s) Plus petit élément de s
max(s) Plus grand élément de s
[Link](x) Nombre d’occurences de x dans s
[Link](x) Indice de x dans s.
Pr. Abdessamad JARRAR Master IASD
4. Opérations sur les variables.

b. Opérations sur les chaînes.


Exemple :

>>> texte = "street"


>>> 'z' not in texte
True
>>> len(texte)
6
>>> 3*texte
'streetstreetstreet'
>>> [Link]('e')
2
>>> max(texte)
't'

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


Opérations de conversions en minuscules et majuscules :

Opération Résultat
[Link]() Convertit la chaîne de caractères s en
minuscules
[Link]() Convertit la chaîne de caractères s en
majuscules

Pr. Abdessamad JARRAR Master IASD


4. Opérations sur les variables.

b. Opérations sur les chaînes.


Exemples :

>>> texte = "The Rolling Stones"


>>> [Link]()
'THE ROLLING STONES'
>>> [Link]()
'the rolling stones’
>>> texte
'The Rolling Stones'

Pr. Abdessamad JARRAR Master IASD


Premiers pas.

Structures conditionnelles et itératives.

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.
Algorithm in Python

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.

Objectifs de ce module

• Comprendre que la programmation n’est pas


qu’une succession linéaire d’instructions.

• Des structures permettent :

– D’exécuter des instructions selon le résultat d’une


condition.
– De répéter plusieurs fois le même type
d’instructions.

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.

Plan de ce module

1. Ruptures de séquences.
2. Structures conditionnelles.
3. Structures itératives.

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.

1. Ruptures de séquences.

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

Plan de ce chapitre

a. Motivation.
b. Conditionnelle.
c. Opérateurs de comparaison.
d. Opérateurs logiques.

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

a. Motivation.
• Un programme n’est pas nécessairement qu’une
succession d’instructions exécutées les unes à la suite des
autres.

• On peut avoir besoin de choisir telle ou telle instruction


pour s’adapter à telle ou telle situation.

• Ou encore devoir répéter plusieurs fois le même type


d’instructions.

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

a. Motivation.
• Par exemple, si l’on veut résoudre une équation du second
degré, les calculs ne seront pas les mêmes selon que le
discriminant soit positif ou négatif.

• Ou si l’on souhaite afficher des tables de multiplication, on


sera amené à répéter des calculs qui se ressemblent.

• Ces choix et répétitions sont régis par ce que l’on appelle


une “conditionnelle”.

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

b. Conditionnelle.
• Conditionnelle : expression booléenne dont la valeur va
déterminer les actions réalisées dans la suite du
programme.

• En Python, une conditionnelle vaut donc soit True soit


False.

• C’est le résultat d’une comparaison, ou de plusieurs


comparaisons reliées entre elles par des opérateurs
logiques.

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

c. Opérateurs de comparaison.
Liste des opérateurs de comparaison :

< <= > >= == !=

Remarque importante : ces comparaisons doivent se faire


entre deux nombres ou entre deux chaînes.

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

c. Opérateurs de comparaison.
Exemples :

>>> 2 == 2.0
True
>>> 3.5 < 2
False
>>> "comparer" < "comparaison"
False
>>> '*' < '+'
True

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

d. Opérateurs logiques.
• Ce sont des opérateurs qui relient entre elles plusieurs
expressions booléennes pour en former de nouvelles.

• Opérateurs binaires :
or
and
• Opérateur unaire :

not

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

d. Opérateurs logiques.
Tables de vérité des opérateurs logiques :

a b a or b a and b
False False False False
False True True False
True False True False
True True True True

a not a
False True
True False

Pr. Abdessamad JARRAR Master IASD


1. Ruptures de séquences.

d. Opérateurs logiques.
Exemples :

>>> not 3 == 3.0


False
>>> 2 == 3 and 3 == 3
False
>>> 2 == 3 or 3 == 3
True
>>> 3 == 2 and 3 == 3 or 'e' != 'é'
True

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.

2. STRUCTURES
CONDITIONNELLES.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

Plan de ce chapitre

a. Test simple.
b. Test avec alternative(s).
c. Opérateur ternaire.
d. Imbrication de tests.
e. Exercices.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

a. Test simple.
• L’idée de base est donc la réalisation d’une ou plusieurs
actions selon la vérification d’une condition.

• Cela correspond au SI ... ALORS ... du langage courant.

• En mathématiques on utilise également le terme


d’implication.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

a. Test simple.
Syntaxe d’un test simple :

if conditionnelle:
bloc d’instructions à exécuter si la
conditionnelle est vraie

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

a. Test simple.
Remarque plus qu’importante :

En python les blocs d’instructions sont délimités de deux


façons :

[Link] ligne les précédant se termine par un double point :

2.L’intégralité du bloc est indenté par rapport aux


instructions qui le précèdent et le suivent.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

a. Test simple.
Exemple de test simple : remplacer un nombre par sa valeur
absolue

x = eval(input())
if x < 0:
x = -x
print(x)

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

b. Test avec alternative(s).


• Cette fois-ci, on pourra avoir une ou plusieurs alternatives
à la conditionnelle si cette dernière n’est pas vérifiée.

• On va donc simuler des raisonnements de la forme

SI ... ALORS ...


SINON SI ... ALORS ...
SINON ...

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

b. Test avec alternative(s).


Syntaxe d’un test avec une alternative :

if conditionnelle:
bloc d’instructions à exécuter si la
conditionnelle est vraie
else:
bloc d’instructions à exécuter si la
conditionnelle est fausse

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

b. Test avec alternative(s).


Exemple de test avec une alternative : savoir si un nombre
est pair ou non

n = eval(input())
if n%2 == 0:
print("le nombre saisi est pair")
else:
print("le nombre saisi est impair")

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

b. Test avec alternative(s).


Syntaxe d’un test avec plusieurs alternatives :

if conditionnelle:
bloc d’instructions à exécuter si la
conditionnelle est vraie
elif autre_conditionnelle:
bloc d’instructions à exécuter si la
seconde conditionnelle est vraie
else:
bloc d’instructions à exécuter si les
premières conditionnelles sont fausses

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

b. Test avec alternative(s).


Exemple de test avec plusieurs alternatives : signe strict d’un
nombre

x = eval(input())
if x < 0:
print("le nombre saisi est strictement négatif")
elif x > 0:
print("le nombre saisi est strictement positif")
else:
print("le nombre saisi est nul")

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

c. Imbrication de tests.
• L’imbrication de structures conditionnelles est non
seulement possible mais souvent fort utile.

• Cela peut éviter le recours à une succession de tests


simples et donc rendre les codes plus lisibles.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

c. Imbrication de tests.
Exemple : équation du premier degré ax + b = 0

a,b = eval(input()),eval(input())
if a == 0:
if b == 0:
print("infinité de solutions")
else:
print("pas de solution")
else:
print("unique solution :",-b/a)

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

d. Opérateur ternaire.
• Cet opérateur permet dans certains cas une syntaxe plus
compacte d’un test avec une alternative.

• Néanmoins son usage est beaucoup plus limité puisque les


blocs à exécuter selon que la conditionnelle soit vraie ou
fausse ne doivent comporter qu’une seule instruction.

• Plus exactement les deux alternatives doivent être le calcul


d’une expression.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

d. Opérateur ternaire.
Syntaxe de l’opérateur ternaire :

expression_1 if conditionnelle else expression_2

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

d. Opérateur ternaire.
Exemples : majeur ou mineur ?

statut = "mineur" if age < 18 else "majeur"

print("mineur") if age < 18 else print("majeur")

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

e. Exercices.
Exercice : écrire un programme calculant les maximums et
minimums de deux nombres.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

e. Exercices.
Solution 1 : avec un test à une alternative

x,y = eval(input()),eval(input())
if x > y:
mini,maxi = y,x
else:
mini,maxi = x,y
print("minimum :",mini,", maximum :",maxi)

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

e. Exercices.
Solution 2 : avec un test simple

x, y = eval(input()),eval(input())
mini, maxi = x, y
if x > y:
mini, maxi = y, x
print("minimum :",mini,", maximum :",maxi)

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

e. Exercices.
Exercice : écrire un programme qui en fonction de la
moyenne aux écrits du Bac indique si le lycéen en question
est admis, recalé ou au rattrapage.

Pr. Abdessamad JARRAR Master IASD


2. Structures conditionnelles.

e. Exercices.
Solution :

note = eval(input())
if note < 8:
print("recalé")
elif note < 10:
print("rattrapage")
else:
print("admis")

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.

3. Structures itératives.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

Plan de ce chapitre

a. Notion d’itération.
b. Structure « for ».
c. Structure « while ».
d. Imbrications de structures itératives.
e. Sorties de boucles.
f. Clause « else » dans une boucle.
g. Exercices.
Pr. Abdessamad JARRAR Master IASD
3. Structures itératives.

a. Notion d’itération.
Dans certaines situations, on est amené à exécuter plusieurs
fois des actions identiques ou du moins de même nature.

Une Itération est une séquence d’instructions destinée à être


exécutée plusieurs fois.

Selon que le nombre de répétitions soit connu à l’écriture du


programme ou pas, on utilisera une structure « for » ou
une structure « while ».

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
• La structure « for » réalise un nombre d’itérations fixe et
connu.

• Elle utilise une variable dont la valeur va parcourir une


certaine plage au fil des itérations. C’est cette variable qui
contrôlera le nombre d’itérations.

• Cette plage de valeurs va être construite grâce à la


fonction « range ».

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Syntaxe de la fonction “range” :

range(début,fin,pas)

•Cette fonction produit une plage de valeurs allant de ‘début’


(inclus) à ‘fin’ (non inclus) avec un certain ‘pas’.

•À noter que par défaut ‘début’ et ‘pas’ valent


respectivement 0 et 1.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Exemples d’utilisation de la fonction “range” :

•range(6) produira la plage de valeurs 0, 1, 2, 3, 4, 5.

•range(3,6) produira la plage de valeurs 3, 4, 5.

•range(3,10,2) produira la plage de valeurs 3, 5, 7, 9.

•range(6,0,-1) produira la plage de valeurs 6, 5, 4, 3, 2, 1.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Syntaxe de la structure “for” :

for var in range(début,fin,pas):


bloc d’instructions à répéter
pendant que var prend les valeurs de la plage
définie par range

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Explication du fonctionnement :

•Au fil des itérations, la variable var prendra successivement


toutes les valeurs de la plage créée par la fonction range.

•Le nombre d’itérations sera donc le nombre d’éléments de


la plage créée par la fonction range.

•En pratique on se servira également très souvent des


valeurs de la variable var.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Exemple : table de multiplication d’un entier saisi par
l’utilisateur

n = eval(input())
for i in range(1,11):
print(i,'*',n,'=',n*i)

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Déroulement du programme :

•Admettons que l’utilisateur saisisse la valeur 9.


•À la première itération la variable i vaut 1, il est donc affiché
1 * 9 = 9.
•À la seconde itération la variable i vaut 2, il est donc affiché
2 * 9 = 18.
•Etc.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

b. Structure “for”.
Autre exemple : affichage des nombres pairs entre 20 et 0

for i in range(20,-1,-2):
print(i)

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

c. Structure “while”.
• La structure « while » réalise un nombre d’itérations non
nécessairement connu à l’écriture du programme.

• Ce nombre dépend d’une conditionnelle qui sera évaluée


avant chaque itération.

• On la qualifie parfois d’itération conditionnelle.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

c. Structure “while”.
Syntaxe de la structure “while” :

while conditionnelle:
bloc d’instructions à exécuter tant que la
conditionnelle est vraie

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

c. Structure “while”.
Explication du fonctionnement :

•On exécute donc le bloc d’instructions tant que la


conditionnelle est vraie.

•Dans ce bloc, il est donc nécessaire de modifier la valeur de


la conditionnelle pour ne pas risquer d’avoir une infinité
d’itérations.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

c. Structure “while”.
Exemple : calcul de la partie entière d’un réel positif

x = eval(input())
n = 0
while n+1 <= x:
n += 1
print("la partie entière de",x,"est",n)

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

c. Structure “while”.
Déroulement du programme :

•Admettons que l’utilisateur saisisse la valeur 2.57


•Avant les itérations, la variable n est initialisée à 0.
•La conditionnelle est alors vraie donc on réalise la première
itération, et n vaut maintenant 1.
•La conditionnelle est encore vraie donc on réalise la seconde
itération, et n vaut maintenant 2.
•Cette fois-ci la conditionnelle est fausse et l’on stoppe les
itérations.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

c. Structure “while”.
Exemple à ne pas suivre :

i = 2
while i < 3:
print("coucou")

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

d. Imbrication de structures itératives.


• L’imbrication de structures itératives est non seulement
possible mais souvent fort utile.

• À noter que l’on peut également imbriquer structures


itératives et structures conditionnelles.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

d. Imbrication de structures itératives.


Exemple : affichage de toutes les tables de multiplications

for i in range(1,11):
print("table de",i)
for j in range(1,11):
print("\t",j,"*",i,"=",j*i)

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

d. Imbrication de structures itératives.


Exemple (suite) : la variable “i” vaut d’abord 1, et alors “j”
prend toutes les valeurs de 1 à 10, puis “i” vaut 2 et “j” prend
de nouveau toutes les valeurs de 1 à 10, etc.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

e. Sorties de boucles.
Deux possibilités pour “sortir” d’une boucle :

•“break” : cette commande permet la sortie de la structure


itérative “for” ou “while” qui la contient.

•“continue” : cette commande permet de passer


directement à l’itération suivante dans la structure “for” ou
“while” qui la contient.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

e. Sorties de boucles.
Exemple de “break” : où l’on félicite l’utilisateur s’il saisit un
‘x’ en au plus 10 tentatives.

for i in range(9):
if input() == 'x':
print("quel talent")
break

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

e. Sorties de boucles.
Exemple de “continue” : affichage de tous les nombres de 10
à 20 sauf le nombre 13.

for i in range(10,21):
if i == 13:
continue
print(i)

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

f. Clause “else” dans une boucle.


• Les structures “for” et “while” peuvent contenir une
clause “else”.

• À noter que celle-ci ne sera exécutée que si la sortie de la


boucle s’effectue de façon normale, c’est-à-dire sans
“break”.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

f. Clause “else” dans une boucle.


Syntaxe de la structure “for” avec clause “else” :

for var in range(début,fin,pas):


bloc d’instructions à répéter
pendant que var prend les valeurs de la plage
définie par range
else:
bloc d’instructions à exécuter (une fois)
quand var a pris toutes les valeurs de la
plage définie par range

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

f. Clause “else” dans une boucle.


Syntaxe de la structure “while” avec clause “else” :

while conditionnelle:
bloc d’instructions à exécuter tant que la
conditionnelle est vraie
else:
bloc d’instruction à exécuter (une fois) si la
conditionnelle est fausse

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

f. Clause “else” dans une boucle.


Exemple : savoir si un nombre n saisi par l’utilisateur est un
nombre premier ou non

n = eval(input())
for i in range(2,n):
if n%i == 0:
premier = False
break
else:
premier = True

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

g. Exercices.
Exercice : écrire un programme calculant la somme des
premiers entiers naturels jusqu’à un entier positif saisi par
l’utilisateur.

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

g. Exercices.
Solution :

n = -1
while n < 0:
n = eval(input())
somme = 0
for i in range(n+1):
somme += i
print("la somme des",n,"premiers entiers vaut",somme)

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

g. Exercices.
Exercice : écrire un programme calculant la somme d’une
suite d’entiers saisie par l’utilisateur se terminant par 0
(exemple 5, 4, 9, 0 renverra 18).

Pr. Abdessamad JARRAR Master IASD


3. Structures itératives.

g. Exercices.
Solution :

somme,n = 0,1
while n != 0:
n = eval(input())
somme += n
print("la somme des entiers saisis vaut",somme)

Pr. Abdessamad JARRAR Master IASD


Structures conditionnelles et itératives.

Sous-programmes.

Pr. Abdessamad JARRAR Master IASD


Sous-programmes.
Créer des blocs de code réutilisables

Pr. Abdessamad JARRAR Master IASD


Sous-programmes.

Objectifs de ce module

• Introduire le concept de sous-programme sous


ses deux formes : procédure et fonction.

• Comprendres les notions de paramètres,


variables locales, variables globales.

Pr. Abdessamad JARRAR Master IASD


Sous-programmes.

Plan de ce module

1. Généralités algorithmiques.
2. Les sous-programmes en python.

Pr. Abdessamad JARRAR Master IASD


Sous-programmes.

1. Généralités algorithmique.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

Plan de ce chapitre

a. Principe.
b. Trois grands avantages.
c. Notion de paramètre.
d. Variables locales versus variables globales.
e. Deux types de sous-programmes.
f. Exercice.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

a. Principe.
• Un sous-programme est un bloc d’instructions réalisant
une certaine tâche.

• Il possède un nom et est exécuté lorsqu’on l’appelle.

• Un script bien structuré contiendra un programme dit


“principal”, et plusieurs sous-programmes dédiés à des
fonctionnalités spécifiques.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

a. Principe.
• Quand un programme dit « principal » fait appel à un
sous–programme, il suspend son propre déroulement,
exécute le sous–programme en question, et reprend
ensuite son fonctionnement.

Programme
appel du sous-
instructions programme
Toto
...
Toto
Retour au bloc d’instructions du sous-
... programme
programme Toto
instructions
...

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

b. Trois grands avantages.


1. Éviter la duplication de code.

appel/retour

appel/retour

Ici le bloc de code en Ici on crée un sous-programme correspondant à


rouge est dupliqué ce bloc, et on l’appelle quand on en a besoin.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

b. Trois grands avantages.


2. Favoriser la réutilisation.

•Un sous-programme écrit pour résoudre un problème donné


pourra servir de nouveau dans un autre contexte.

•On pourra ainsi créer des « librairies » de sous-programmes.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

b. Trois grands avantages.


3. Améliorer la conception.

Programme initial très complexe

Sous-programme Sous-programme
complexe simple

Sous-sous- Sous-sous- Sous-sous-


programme programme programme
simple simple simple

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

c. Notion de paramètre.
• Un sous-programme sert donc à effectuer un traitement
générique.

• Ce traitement porte sur des données, dont la valeur


pourra ainsi changer d’un appel du sous-programme à un
autre.

• Ce que l’on appelle “paramètres” ce sont justement ces


données transmises au sous-programme par le programme
principal.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

c. Notion de paramètre.
• Lors de l’implémentation d’un sous-programme, on va
donc préciser la liste de tous les paramètres qu’il va
utiliser.

para1 Toto
para2
bloc d’instructions du sous-
paraN
programme Toto, qui traite
para1, para2, ....

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

c. Notion de paramètre.
• Lors de l’utilisation d’un sous-programme, on va alors
préciser la valeur de chacun des paramètres qu’il possède.

Programme
Toto
instructions val1

... val2
bloc d’instructions du sous-
Toto(val1,val2,...) programme Toto qui traite
... valN para1, para2, .... avec les
instructions valeurs val1, val2, ...
...

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

d. Variables locales versus globales.


• Pour fonctionner un sous-programme peut également
avoir besoin d’utiliser des variables qui lui sont propres. On
parle alors de “variables locales”.

• Ce sont par exemple des résultats de calculs


intermédiaires, des compteurs de tours dans une structure
itérative, etc.

• Ces variables ne sont accessibles qu’au sein du sous-


programme qui les définit et utilise.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

d. Variables locales versus globales.


• Un sous programme reçoit donc des données à traiter, les
paramètres, et pour ce faire peut avoir besoin de variables
locales :

Toto
para1

para2 bloc d’instructions du sous-


programme Toto, qui traite
paraN para1, para2, ....
à l’aide de variables locales
var1, var2, ...

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

d. Variables locales versus globales.


• On a vu qu’un sous-programme pouvait utiliser des
données transmises par le programme principal sous
forme de paramètres.

• Il peut également manipuler directement des variables


définies par le programme principal. On parle alors de
“variables globales”.

• Il s’agit d’une possibilité mais également d’une mauvaise


pratique car cela limite énormément la réutilisabilité des
codes d’un projet à un autre.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

d. Variables locales versus globales.


• Un sous-programme peut accéder aux variables globales
définies dans le programme principal :

Programme
Toto
instructions
Définition de variables bloc d’instructions du sous-
globales glob1, glob2, ... val1 programme Toto qui traite
... val2 para1, para2, .... avec les
Toto(val1,val2,...) valeurs val1, val2, ...
... valN
à l’aide de variables locales
instructions var1, var2, ...
... Toto accède aux variables
globales glob1, glob2, ...

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

e. Deux types de sous-programmes.


En algorithmique on distingue deux types de sous-
programmes :

• Les procédures, qui modifient l’état du programme sans


retourner de résultat.

• Les fonctions, qui elles ont pour but de retourner un


résultat.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

e. Deux types de sous-programmes.


Procédures :

•C’est donc un sous-programme qui ne retourne pas de


résultat.

•Son rôle est donc d’effectuer des “effets de bords” :


affichage à l’écran ou dans un fichier, modification de
variables globales, de paramètres, etc.

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

e. Deux types de sous-programmes.


Fonctions :

•Il s’agit donc d’un sous-programme qui va retourner un


résultat au programme principal.

para1 Toto
para2 résultat
bloc d’instructions du sous-
paraN
programme Toto, qui traite
para1, para2, ....

Pr. Abdessamad JARRAR Master IASD


1. Généralités algorithmique.

e. Deux types de sous-programmes.


Remarque :

• Tous les langages de programmation ne distinguent pas


nommément ces deux types de sous–programmes.

• En Python, en C et en C++, on ne manipule ainsi a priori


que des fonctions. Bien qu’en pratique la distinction se
fasse.

• En Pascal par contre, les deux types sont clairement


séparés.
Pr. Abdessamad JARRAR Master IASD
Sous-programmes.

2. LES SOUS-PROGRAMMES EN
PYTHON.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

Plan de ce chapitre

a. Procédures.
b. Fonctions.
c. Duck Typing.
d. Paramètres par défaut.
e. Paramètres immuables.
f. Variables locales et globales.
g. Modules de fonctions.
h. Exercices.
Pr. Abdessamad JARRAR Master IASD
2. Les sous-programmes en Python.

a. Procédures.
Syntaxe générale d’une procédure :

def maProcedure(para1,para2,...,paraN):
bloc d’instructions de la procédure

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

a. Procédures.
Exemple : affichage du périmètre et de l’aire d’un rectangle

def rectangle(x,y):
print("périmètre :",2*(x+y),",aire :",x*y)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

a. Procédures.
Autre exemple : affichage du nombre d’or

def afficheNombreDor():
print((1+sqrt(5))/2)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

a. Procédures.
Utilisation d’une procédure :

•Comme une instruction prédéfinie du langage.

•On appelle la procédure par son nom, en lui passant autant


de paramètres qu’elle en possède.

•Ces paramètres peuvent être des variables ou des valeurs


explicites.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

a. Procédures.
Exemples d’utilisations de procédures :

rectangle(5,2)
longueur,largeur = 6,3
rectangle(longueur,largeur)
afficheNombreDor()

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

b. Fonctions.
Syntaxe générale d’une fonction :

def maFonction(para1,para2,...,paraN):
bloc d’instructions de la fonction
return valeur

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

b. Fonctions.
Exemple : calcul du cube d’un nombre

def cube(x):
return x*x*x

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

b. Fonctions.
Autre exemple : calcul du minimum et du maximum de deux
nombres

def calculMiniMaxi(x,y):
if x < y:
return x,y
else:
return y,x

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

b. Fonctions.
Remarques importantes :

•Une fonction peut retourner plusieurs valeurs, il suffit de


séparer celles-ci par des virgules.

•Une fonction peut contenir plusieurs fois la commande


“return”, mais elle cesse son fonctionnement dès qu’elle en
rencontre une.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

b. Fonctions.
Utilisation d’une fonction :

•On appelle la fonction par son nom, en lui passant autant de


paramètres qu’elle en possède.

•Pour ne pas “perdre” la(les) valeur(s) retournée(s), on les


incorporera par exemple dans une opération d’affichage,
d’affectation, etc.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

b. Fonctions.
Exemples d’utilisations de fonctions :

print(cube(5))
a,b = 5,-2
min,max = calculMiniMaxi(a,cube(b))
print("Minimum :",min,", Maximum :",max)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

c. Duck Typing.
Principe du “Duck Typing” :

•En Python on ne précise pas les types attendus des


paramètres des sous-programmes.

•Cela implique que l’on peut utiliser un sous-programme avec


des paramètres de n’importe quel type, à la condition que
les opérations du sous-programme soient compatibles avec
les types des paramètres.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

c. Duck Typing.
Exemple de “Duck Typing” :

def addition(x,y):
return x + y

print(addition(666,1))
print(addition("Brown ",'Sugar'))

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

d. Paramètres par défaut.


• Les paramètres d’un sous-programme peuvent comporter
des valeurs par défaut.

• Deux cas possibles :

– Lors de l’appel on ne précise pas de valeurs pour les


paramètres en question et le sous-programme utilise
celles par défaut.
– Si on précise des valeurs ce sont celles-ci qui sont
utilisées.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

d. Paramètres par défaut.


Exemple :

def rectangle(x=3,y=1):
print("périmètre :",2*(x+y),"aire :",x*y)

rectangle()
rectangle(2)
rectangle(7,5)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

d. Paramètres par défaut.


Autre exemple :

def rectangle(x,y=1):
print("périmètre :",2*(x+y),"aire :",x*y)

rectangle(2)
rectangle(7,5)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

e. Paramètres immuables.
• Les paramètres de type “int”, “bool”, “float”, “complex” et
“str” sont immuables.

• Cela signifie que si l’on passe une variable de l’un de ces


types comme paramètre à une fonction, celle-ci ne pourra
pas en modifier sa valeur.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

e. Paramètres immuables.
Exemple : tentative pour doubler un nombre

def doubler(x):
x *= 2

a = 3
print("valeur de a avant :",a)
doubler(a)
print("valeur de a après :",a)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

e. Paramètres immuables.
Exemple (suite) : contournement du problème précédent en
utilisant une fonction

def doubler(x):
return 2*x

a = 3
print("valeur de a avant :",a)
a = doubler(a)
print("valeur de a après :",a)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Variables locales :

•Ce sont donc des variables définies à l’intérieur d’un sous


programme et qui ne sont accessibles qu’au sein de celui-ci.

•Elles servent essentiellement au bon fonctionnement du


sous-programme.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Exemple : fonction calculant la somme des n premiers
entiers, avec deux variables locales “utilitaires”

def sommeEntiers(n):
somme = 0
for i in range(n+1):
somme += i
return somme

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Exemple (suite) : tentative d’utilisation de la variable locale
somme en dehors de la fonction

def sommeEntiers(n):
somme = 0
for i in range(n+1):
somme += i
return somme

print(somme)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Variables globales :

•Ce sont des variables définies en dehors de tout sous-


programme. Elles sont “globales” au sens où elles sont
visibles et utilisables dans tous les sous-programmes du
module courant.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Ordre de recherche des variables dans un sous-programme
:

•La rencontre d’un nom de variable dans un sous-programme


déclenche une recherche LGI :

1. Recherche d’une variable locale correspondant à ce nom.


2. Recherche d’une variable globale correspondant à ce nom.
3. Recherche d’un nom interne au langage.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Exemple 1 :

def exemple1():
print(i)

i = 666
exemple1()

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Exemple 2 :

def exemple2():
i = 111
print(i)

i = 666
exemple2()
print(i)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Exemple 3 :

def exemple3():
print(i)
i = 111
print(i)

i = 666
exemple3()

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Modification de la valeur de variables globales :

•Les variables globales ne sont a priori pas modifiables par


des sous-programmes.

•Pour que cela soit possible, il faut le signaler explicitement


dans le sous programme à l’aide de l’instruction “global”.

Syntaxe :
global var

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

f. Variables locales et globales.


Exemple 4 :

def exemple4():
global i
print(i)
i = 111
print(i)

i = 666
exemple4()
print(i)

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

g. Modules de fonctions.
Module de fonctions : fichier d’extension “.py” contenant
des sous-programmes regroupés de façon cohérente.

Structure d’un projet : plusieurs modules de fonctions et un


module particulier, dit “main”, où l’on définit les variables du
projet et où l’on utilise les fonctions des différents modules.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

g. Modules de fonctions.
Trois méthodes pour l’import d’un module :

from NomDuModule import *

from NomDuModule import uneFonction

import NomDuModule

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

g. Modules de fonctions.
Exemple :

# le module exemple

def doubler(x):
return 2*x

def tripler(x):
return 3*x

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

g. Modules de fonctions.
Exemple : les deux premières méthodes

from exemple import *


print(tripler(12))

from exemple import doubler


print(doubler(12))

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

g. Modules de fonctions.
Exemple : la troisième méthode

import exemple
print([Link](12))

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

g. Modules de fonctions.
Remarque :

•Les deux premières méthodes sont à utiliser avec précaution


car si l’on importe plusieurs modules un même nom de
fonction pourrait être utilisé plusieurs fois. Ce qui créerait
une ambiguïté.

•En cas de doutes on privilégiera donc la troisième.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

h. Exercices.
Exercice 1 : écrire une procédure prenant en paramètre une
durée en secondes et qui affiche la conversion de cette durée
en heures, minutes, secondes.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

h. Exercices.
Solution :

def conversion1(n):
h = n // 3600
m = (n - 3600*h) // 60
s = n % 60
print(h,"heures,",m,"minutes,",s,"secondes")

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

h. Exercices.
Exercice 2 : écrire une fonction prenant en paramètre une
durée en heures, minutes, secondes et qui retourne le
nombre total de secondes correspondant.

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

h. Exercices.
Solution :

def conversion2(h,m,s):
return 3600*h + 60*m + s

Pr. Abdessamad JARRAR Master IASD


2. Les sous-programmes en Python.

Fin de ce chapitre

Avez – vous des questions ?

Pr. Abdessamad JARRAR Master IASD


Sous-programmes.

Structures séquentielles de données.

Pr. Abdessamad JARRAR Master IASD

Vous aimerez peut-être aussi