Vous êtes sur la page 1sur 100

Introduction à l’algorithmique

et à la programmation
en Python 3

Table des matières

1.1 Avant-propos 1

1.2 Algorithmes et programmes 2

1.3 Programmation en Python 3 7


1.3.1 Présentation de Python 3 7

1.3.2 Installation de Python 3 7

1.3.3 Interface Python 3 : zone de script et console 8

1.3.4 Types de données : stockage et affichage 9

1.3.5 Instructions conditionnelles (et indentation) 20

1.3.6 Instructions répétitives (et indentation) 27

1.3.7 Fonctions 34

1.3.8 Modules 44

1.3.9 Chaines de caractères 48

1.3.10 Listes 54

1.3.11 Graphismes 61

1.4 Corrections des activités et exercices 67

Picchione Serge AMOS / 2020-2021


Vous pouvez télécharger ce document au format PDF à l’adresse suivante :
https://www.sismondi.ch/disciplines/applications-des-mathematiques/cours-eleves

Picchione Serge AMOS / 2020-2021


1.1 Avant-propos
• Ce chapitre d'introduction à l'algorithmique et à la programmation en Python 3 s'adresse à un
publique scientifique, plus particulièrement aux élèves qui suivent au Collège de Genève
les cours d'options spécifiques en application des Mathématiques : 3AMOS et 4AMOS.

Aucun prérequis n'est nécessaire en algorithmique ou en programmation avec Python 3 à part


peut-être une certaine ouverture d'esprit et une forme avancée de plasticité neuronale !

Des prérequis en Mathématiques niveau 1e et 2e du Collège de Genève sont les bienvenus.

• L'objectif de cette introduction est de former rapidement et rigoureusement les élèves suivants
un cours de 3AM OS et 4AM OS aux rudiments de programmation en Python 3.

Lorsque nous traiterons par la suite des sujets spécifiques à l'application des Mathématiques
comme la cryptographie, l'analyse numérique, les statistiques, etc. les élèves pourront comprendre
plus facilement les algorithmes présentés, les programmer en langage Python 3 et aussi les
modifier afin d'obtenir les résultats escomptés dans le cadre du cours.

• Informations pour les enseignants :

Les exemples et les exercices de ce chapitre d'introduction ont été sélectionnés et choisis dans
le but d'introduire des concepts qui serviront aux élèves lorsque les chapitres suivant seront
abordés : cryptographie classique (clés privées et publiques) et méthodes itératives en analyse
numérique.

En particulier, le sous-chapitre 1.3.9 Chaînes de caractères et 1.3.10 Listes sont conseillés


si l'on veut aborder avec sérénité la programmation d'algorithmes en cryptographie.
Le sous-chapitre 1.3.10 Listes est aussi conseillé si l'on désire écrire des programmes permettant
de résoudre numériquement des systèmes d'équations linéaires en analyse numérique.

________________________________________________________________________________
P.S. 2020-2021 1 Intro_Algo_Progra_Python 3_AM_OS
1.2 Algorithmes et programmes

Exemple
Une piscine municipale propose trois tarifs :
• Tarif 1 : Une entrée : 3 €.
• Tarif 2 : Abonnement annuel 9 €, puis 1 € l'entrée.

Commençons par un problème simple : demander le nombre d'entrées et afficher s'il est
préférable de choisir le premier ou le second tarif.

Voici son algorithme : (pseudo-code)


DEMANDER un entier n
p1 ← n ⋅ 3
p2 ← 9 + n ⋅ 1
SI p1 < p2 ALORS
AFFICHER " Le tarif 1 est plus avantageux"
SINON
AFFICHER " Le tarif 2 est plus avantageux"
FIN SI

Notre précédent algorithme peut se traduire en langage Python 3 et nous obtenons


le programme suivant :

n = eval (input( "Nombre d'entrées : "))


p1 = 3 * n
p2 = 9 + n
if p1 < p2 :
print( "Le tarif 1 est plus avantageux")
else :
print( "Le tarif 2 est plus avantageux")

Définition d'un algorithme

Un algorithme est : • une suite finie de règles à appliquer,


• dans un ordre déterminé,
• à un nombre fini de données,
• se terminant (i.e., arriver, en un nombre fini d’étapes, à un résultat,
et ce quelque soit les données traitées).

Autre définition : Un algorithme est une suite finie d'opérations élémentaires constituant
un schéma de calcul ou de résolution d'un problème donné.

L'algorithmique désigne l'ensemble des règles et des techniques qui sont impliquées dans la
définition et la conception des algorithmes.

________________________________________________________________________________
P.S. 2020-2021 2 Intro_Algo_Progra_Python 3_AM_OS
Un peu d'histoire
Les algorithmes, dont on a retrouvé des descriptions exhaustives, ont été
utilisés dès l’époque des Babyloniens (env. 1500 av. J-C.) pour des calculs
concernant le commerce et les impôts. L’algorithme le plus célèbre est celui
qui se trouve dans le livre 7 des Éléments d’Euclide. Il permet de trouver le
plus grand diviseur commun, ou PGDC, de deux nombres (env. 300 av. J-C.).
L’algorithmique a été systématisée par le mathématicien perse Al Khuwarizmi,
auteur d’un ouvrage (souvent traduit par l’algèbre et le balancement) qui décrit
des méthodes de calculs algébriques.

Les éléments de base d'un algorithme

• La préparation du traitement :
Il s'agit de repérer et de stocker les données nécessaires à la résolution du problème.
Par exemple (en gras) :
DEMANDER un entier n
p1 ← n ⋅ 3
p2 ← 9 + n ⋅ 1
SI p1 < p2 ALORS
AFFICHER " Le tarif 1 est plus avantageux"
SINON
AFFICHER " Le tarif 2 est plus avantageux"
FIN SI

• Le traitement :
Il s'agit de déterminer toutes les « instructions » à donner pour automatiser la résolution du
problème et obtenir les résultats attendus.
Par exemple (en gras) :
DEMANDER un entier n
p1 ← n ⋅ 3
p2 ← 9 + n ⋅ 1
SI p1 < p2 ALORS
AFFICHER " Le tarif 1 est plus avantageux"
SINON
AFFICHER " Le tarif 2 est plus avantageux"
FIN SI

________________________________________________________________________________
P.S. 2020-2021 3 Intro_Algo_Progra_Python 3_AM_OS
• La sortie des résultats :
Les résultats obtenus peuvent être affichés à l'écran (nombres, textes, graphiques).
Par exemple (en gras) :
DEMANDER un entier n
p1 ← n ⋅ 3
p2 ← 9 + n ⋅ 1
SI p1 < p2 ALORS
AFFICHER "Le tarif 1 est plus avantageux"
SINON
AFFICHER "Le tarif 2 est plus avantageux"
FIN SI

Les conventions d'écriture d'un algorithme

Il y a deux types de conventions.

1) L'algorithme graphique ou organigramme de programmation.

Demander : n

Faux

Afficher :
Vrai "Le tarif 2 est le plus avantageux"

Afficher :
"Le tarif 1 est le plus avantageux"

Il s'agit d'une représentation graphique comportant des symboles de traitement et de test


(rectangles, losanges, etc.) reliés entre eux par des lignes de liaison indiquant le flux des contrôles.
Une norme ISO a été développée. Elle décrit en détails les différents symboles à utiliser pour
représenter un algorithme informatique de manière normalisée.

________________________________________________________________________________
P.S. 2020-2021 4 Intro_Algo_Progra_Python 3_AM_OS
2) L'algorithme textuel ou pseudo-code.

DEMANDER un entier n
p1 ← n ⋅ 3
p2 ← 9 + n ⋅ 1
SI p1 < p2 ALORS
AFFICHER " Le tarif 1 est plus avantageux"
SINON
AFFICHER " Le tarif 2 est plus avantageux"
FIN SI

Le pseudo-code est une façon de décrire un algorithme sans référence à un langage


de programmation en particulier. Il ressemble cependant à un langage de programmation
authentique mais dont on aurait retiré la plupart des problèmes de syntaxe.

Remarque :
La majorité des algorithmes présentés dans ce cours seront écrits soit en pseudo-code soit
directement traduit dans le langage de programmation Python 3. Ce choix découle du fait que
lorsque l'algorithme possède de nombreuses instructions il est plus aisé et plus compact de l'écrire
en pseudo-code qu'à l'aide d'un organigramme.

Un algorithme puis un programme

Un algorithme n'est pas un programme. Un algorithme résout un problème donné


indépendamment des particularités du langage de programmation.
Un programme est la réalisation (l'implémentation) d'un algorithme au moyen d'un langage donné
(Visual Basic, C++, Scilab, Python, Fortran, etc.). Il s'agit de la mise en œuvre de l'ensemble des
instructions. Par exemple, lors de la programmation il faut définir le format des variables utilisées,
ce qui est un problème d'implémentation ignoré au niveau de l'algorithme.
Le « code source », désigne le texte, en langage de programmation, constituant le programme.

En résumé

Un algorithme est indépendant du langage de programmation dans lequel on va l’exprimer et de


l’ordinateur utilisé pour le faire tourner. C’est une description abstraite des étapes conduisant à la
solution d’un problème.

Algorithme = partie conceptuelle d’un programme


(indépendante du langage)

Programme = implémentation (i.e., réalisation) de l’algorithme,


dans un langage de programmation et sur un système
particulier.

________________________________________________________________________________
P.S. 2020-2021 5 Intro_Algo_Progra_Python 3_AM_OS
Des programmes puis un logiciel

Un ordinateur est composé de matériel (hardware) et de logiciels (software). Sans logiciel


l'ordinateur ne fait rien parce qu'il n'a pas reçu les instructions lui indiquant ce qu'il doit faire.
Les logiciels sont composés de programmes informatiques, qui indiquent à l'ordinateur comment
effectuer les tâches. Les logiciels déterminent les tâches qu'un appareil informatique peut effectuer.
Alors qu'à la vente d'un appareil informatique, l'accent est souvent mis sur le matériel informatique,
c'est avant tout les logiciels qui donnent à l'ordinateur sa valeur ajoutée.
Logiciel n'est donc pas synonyme de programme informatique. Un logiciel est un ensemble
typiquement composé de plusieurs programmes, ainsi que tout le nécessaire pour les rendre
opérationnels : fichiers de configuration, images bitmaps, procédures automatiques.
Les deux principales catégories de logiciels sont les logiciels applicatifs et les logiciels de système.
Le logiciel applicatif est destiné à aider les usagers à effectuer une certaine tâche, et le logiciel de
système est destiné à effectuer des opérations en rapport avec l'appareil informatique.
Le logiciel le plus important est le système d'exploitation : il sert à manipuler le matériel
informatique, diriger les autres logiciels, organiser les fichiers, et faire l'interface avec l'utilisateur.
Les logiciels disponibles dans le commerce sont toujours destinés à être utilisés avec un ou
plusieurs systèmes d'exploitation donnés.

Exemple de logiciels

Photoshop (Adobe)

Logiciel de retouche d’image.

Writer (Suite LibreOffice)

Traitement de texte gratuit.

Chrome (Google)

Navigateur Web.

Excel (Microsoft)

Tableur.

________________________________________________________________________________
P.S. 2020-2021 6 Intro_Algo_Progra_Python 3_AM_OS
1.3 Programmation en Python 3
1.3.1 Présentation de Python 3

Python 3 est un langage informatique de haut niveau : c'est une suite d'instructions données par
l'homme à l'ordinateur pour qu'il exécute certaines tâches.
Parmi les nombreux avantages de ce langage, on peut citer :
• Un langage libre et gratuit.
• Un langage multiplateforme, c'est-à-dire que les programmes que vous allez réaliser pourront
tout aussi bien s' exécuter sous Windows, Mac ou Linux.
• Un langage simple et cependant puissant et rapide.
Il est simple à apprendre, car intuitif. Par exemple, pour que l'ordinateur sache que l'on veut créer
une variable nombre contenant la valeur 2, il suffit d'écrire :

nombre = 2

alors qu'en C et C++ , par exemple, il faut préciser que la variable nombre est un entier (int) avant
de pouvoir lui donner la valeur 2 :
int nombre ;
nombre = 2 ;

Python est un langage de haut niveau. Cela signifie qu'il est plus proche du langage humain (ici,
de l'anglais, malgré les apparences) que d'autres langages, et notamment le langage binaire, que lit
directement l'ordinateur. La traduction de nombre = 2 (Python) en binaire devrait en effet donner
quelque chose comme : 100101101...0011101001

• Un langage qui possède de nombreuses bibliothèques mathématiques très évoluées dans de


multiples domaines (traitement de l'image, analyse de Fourier, calcul numérique ... ) et qui
permettent ainsi de réaliser facilement de nombreux programmes assez pointus.
• Python est un langage de programmation en constante évolution. Il est à l'heure actuelle, en
2019 dans sa version 3.6.

1.3.2 Installation de Python 3

Adresses internet pour le téléchargement

https://www.python.org/

https://edupython.tuxfamily.org/ avec l'éditeur : PyScripter

https://www.anaconda.com/download/ avec l'éditeur : Spyder

Remarque : Un éditeur de texte est un logiciel destiné à la création et l'édition de fichiers textes.

Important : Télécharger la version Python 3.x et non la version Python 2.x .

________________________________________________________________________________
P.S. 2020-2021 7 Intro_Algo_Progra_Python 3_AM_OS
1.3.3 Interface Python : zone de script et console

Interface de la distribution Anaconda/Python

Le logiciel Spyder fait office d'éditeur de texte pour Anaconda/Python.


Cette interface est découpée en plusieurs zones, en particulier :
• La zone de script qui permet d'écrire/saisir des programmes et de les exécuter ensuite.
• La console ou s'afficheront les résultats des programmes.

Après avoir exécuter Spyder on obtient la fenêtre suivante : (copie d'écran)

Zone de script

Console

Remarque : Cet affichage permet de s'assurer que la console est correctement configurée.

Conclusion

• En Python 3, on écrit un programme dans la zone de script.


• Pour afficher le(s) résultat(s) du programme on l’exécute et on regarde dans la console.
• Dans certaines situations, on peut aussi écrire directement dans la console certaines
instructions. Nous verrons dans ce cours, que la console Python peut être utilisée comme
une calculatrice scientifique.

Commandes utiles dans Spyder pour l’affichage dans la zone de script et la console :

Agrandissement du texte : Ctrl + Shift + + Réduction du texte : Ctrl + −

________________________________________________________________________________
P.S. 2020-2021 8 Intro_Algo_Progra_Python 3_AM_OS
1.3.4 Types de données : stockage et affichage

• En Python 3, on écrit un programme dans la zone de script.


• Pour afficher le(s) résultat(s) du programme on l’exécute et on regarde dans la console.

• Dans Spyder, pour exécuter un programme on appuie sur la touche F 5 ou .

• Dans certaines situations, on peut aussi écrire directement dans la console certaines instructions.

Exemple 01 Nom du fichier : Exemple_donnees_01.py

# Calcul de l’aire d’un carré

Programme Python (zone de script)

# Version 01
cote=10
aire=cote*cote
aire

Entrée et/ou Sortie Python (console)


>>>

Remarque : Il manque la commande print pour afficher le résultat désiré.

Programme Python (zone de script)

# Version 02
cote=10
aire=cote*cote
print(aire)

Entrée et/ou Sortie Python (console)


>>> 100

Programme Python (zone de script)

# Version 03
cote=10
aire=cote*cote
print(cote,aire,sep="\t")

Entrée et/ou Sortie Python (console)

>>> 10 100

________________________________________________________________________________
P.S. 2020-2021 9 Intro_Algo_Progra_Python 3_AM_OS
Programme Python (zone de script)

# Version 04
cote=10
aire=cote*cote
print("L'aire du carré de coté",cote,"est égal à",aire,".")

Entrée et/ou Sortie Python (console)

>>> L'aire du carré de coté 10 est égal à 100 .

Remarque
Dans la commande print( ) on peut afficher des variables ; par exemple des nombres cote et aire
et des chaînes de caractères comme "L'aire du carré de coté" , "est égal à" et "." .
Il faut séparer ses différents objets par une virgule.

Programme Python (zone de script)

# Version 05
cote=eval(input("Entrer la valeur du coté d'un carré: "))
aire=cote*cote
print("L'aire du carré de coté",cote,"est égal à",aire,".")

Entrée et Sortie Python (console)

Entrer la valeur du coté d'un carré : 10


>>>
L'aire du carré de coté 10 est égal à 100 .

Remarque
v = input (txt) , affiche dans la console le texte txt dans lequel on entrera ce qui est demandé.
La réponse est alors affectée à la variable v sous forme d'une chaîne de caractères.

Remarques générales
a) Le symbole # (hashtag ou mot-dièse) permet d’écrire un commentaire dans un programme
sans qu’il soit exécuté.

b) Après avoir exécuté un programme et obtenu des résultats dans la console et avant
d’exécuter un nouveau programme, on peut utiliser les commandes :

• Redémarrer le noyau (Restart Kernel) qui a pour effet, entre autres, de réinitialiser
la valeur prise par toutes les variables lors de l’exécution du dernier programme.

• Effacer la console (Clear Console) qui a pour effet, d’effacer tout le texte affiché
dans la console.

________________________________________________________________________________
P.S. 2020-2021 10 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_donnees_02.py

Programme Python (zone de script)

a=2 # Type de donnée : entier


b=3.5 # Type de donnée : flottant
a=a+1
b=a*b
b=a
a=a**3
print("a=",a)
print("b=",b)

Activité
a) Sans utiliser d’éditeur Python, compléter le tableau ci-dessous en indiquant la valeur des
variables à chaque ligne du programme en précisant le type de donnée obtenu (entier ou flottant).

Instructions a Type b Type


a=2
b=3.5
a=a+1
b=a*b
b=a
a=a**3

b) Utiliser un éditeur Python pour écrire le programme du point a) dans la zone de script
et obtenir la sortie dans la console.
Le programme Python affiche en sortie dans la console : a=
b=
Que faire si un programme ne marche pas ?
Il y a plusieurs types d'erreurs.
• La cause peut-être une erreur de syntaxe (une faute de frappe) ou même un oubli : une parenthèse,
une majuscule, une virgule au lieu d'un point, etc. L'éditeur nous renseigne en général sur l'erreur
que nous commettons : à quelle ligne, le type d'erreur, etc.
Comparer vos lignes de code qui ne fonctionnent pas avec celle d'un programme qui fonctionne.
• Si le programme ne vous donne pas les résultats escomptés, vous pouvez placer la commande
print() à des endroits stratégiques pour observer la valeur des variables déclarées dans le
programme.
• On peut aussi consulter Internet (avec forums ou tutos pour la plupart en anglais ... ) car l'erreur
que vous avez faite a probablement été commise par quelqu'un d'autre, avant vous, et qui a la
bonne idée d'en témoigner.
Les erreurs en programmation restent souvent une occasion de progresser. C'est à force de recopier
et de lire des lignes de programme, qu'on se forge une culture de la programmation et qu'on devient
soi-même un bon programmeur. Courage !

________________________________________________________________________________
P.S. 2020-2021 11 Intro_Algo_Progra_Python 3_AM_OS
Remarques sur les types de données

a) L'avantage d'utiliser un langage de programmation pour effectuer des calculs réside dans le fait
de pouvoir stocker des données (informations) en mémoire. On peut, lorsque l'on réalise un
programme, utiliser des variables pour stocker des valeurs. Le fait de donner un nom à un calcul,
un texte ou un autre objet s'appelle l'affectation.

En Python Résultat après exécution


Stocke une donnée dans une variable qui porte
nom_var = donnée
le nom : nom_var

b) Affichage de données
En Python Résultat après exécution
print (données) Affiche dans la console les données

c) Opérations usuelles sur les données de type nombres en Python 3 :

Opération en Python Résultat après exécution

a+b addition

a–b soustraction

a*b multiplication

a/b division
b
a ** b a puissance b : a
Quotient de la division euclidienne de a par b
a // b
si a et b sont des entiers.
Reste de la division euclidienne de a par b
a%b
si a et b sont des entiers.

Théorème (division euclidienne)

Soit a ∈  et b ∈  * .
Il existe des entiers q et r ∈  tels que a = b ⋅ q + r avec 0 ≤ r < b
De plus q et r sont uniques.

Terminologie q est le quotient et r le reste.

Exemples

 = 34
i) Division euclidienne de 6789 par 34 : 6789  ⋅ 199
 +23 avec 0 ≤ 
23 < 34

a b q r r b

ii) La division euclidienne de −17 par 3 est : −


17 = 3 ⋅ ( −6 ) + 1 avec 0 ≤ 
1<
3
a
 b r r b
q

________________________________________________________________________________
P.S. 2020-2021 12 Intro_Algo_Progra_Python 3_AM_OS
d) Les types de données en Python 3
Il existe de nombreux types de données en Python ; en voici quelques-uns que nous allons
régulièrement utiliser.

• Les nombres ; deux catégories :


Les entiers, qui correspondent en Mathématiques aux entiers relatifs comme : 74 et -2 .
Les flottants qui correspondent en Mathématiques aux nombres décimaux comme : 12.97
et -14.0.

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

a=34 >>>
print(a,type(a)) # type() : renseigne sur le type de données 34 <class 'int'>

b=7.8 >>>
print(b,type(b)) 7.8 <class 'float'>

c=a+b >>>
print(c,type(c)) 41.8 <class 'float'>

d=int(a+b) # int() : extraction d'un entier >>>


print(d,type(d)) 41 <class 'int'>

e=float(a+b) # float() : extraction d'un flottant >>>


print(e,type(e)) 41.8 <class 'float'>

f=float('345') >>>
print(f,type(f)) 345.0 <class 'float'>

• Les chaînes de caractères qui sont des successions de caractères encadrés par des guillemets,
comme par exemple ´Ok !´ , ´456´ et ´Bonjour Gaëtan´ .

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

nom1='bonjour' >>>
print(nom1,type(nom1)) bonjour <class 'str'>

nom2='ciel' >>>
print(nom2,type(nom2)) ciel <class 'str'>

nom3=nom1+3*nom2 >>>
print(nom3,type(nom3)) bonjourcielcielciel <class 'str'>

nom4='3+4' >>>
print(nom4,type(nom4)) 3+4 <class 'str'>

nom5=eval('3+4') # eval() : transforme une chaine en nombre >>>


print(nom5,type(nom5)) 7 <class 'int'>

a,b=6,10 >>>
nom6=str(a)+'+'+str(b) # str() : transforme un nombre en chaine 6+10 <class 'str'>
print(nom6,type(nom6))

Remarque : Les opérations + et * n’ont pas les mêmes effets selon qu’ils agissent sur des nombres
ou des chaînes. Le chapitre 1.3.9 donne plus de détails sur ce type de donnée et les opérations
définies sur ce type de donnée.

________________________________________________________________________________
P.S. 2020-2021 13 Intro_Algo_Progra_Python 3_AM_OS
• Les listes qui sont des regroupements de données délimitées par des crochets.
Par exemple, [1.9,46 ," Anne",−24 ] est une liste de quatre éléments :
le flottant 1.9, puis l'entier 46, puis la chaîne de caractères "Anne", et enfin l'entier -24.

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

L1=[ ] # L=[ ] : liste vide >>>


print(L1,type(L1)) [ ] <class 'list'>

L1.append("Marie") # L.append(e) : ajoute e a la fin de L >>>


print(L1,type(L1)) ['Marie'] <class 'list'>

L1.append(18) >>>
print(L1,type(L1)) ['Marie',18] <class 'list'>

L1.append(37.2) >>>
print(L1,type(L1)) ['Marie',18,37.2] <class 'list'>

Remarque : le chapitre 1.3.10 donne plus de détails sur ce type de donnée et les opérations définies
sur ce type de donnée.

La commande type(donnée) nous renseigne sur le type de donnée / variable avec lequel on
travaille dans un programme Python.

Exercice 01
a) Sans utiliser d’éditeur Python, déterminer le résultat de chacun des « calculs » suivants en
précisant son type (entier ou flottant).

Calculs Résultat Type de donnée


1) 7 // 2
2) 4%2
3) 3.0 ** 3
4) – 5 // 2
5) 5 ** 0 + 7
6) 2 ** -2
7) -2 ** 10
8) 1–5*2
9) 5–3/–2
10) – 13 % 3
11) 1345 % 10
12) 1345 // 10 % 10
13) 1345 // 100 % 10
14) 1345 // 1000 % 10

b) Obtenir le résultat des « calculs » précédant en utilisant la console d’un éditeur Python.

________________________________________________________________________________
P.S. 2020-2021 14 Intro_Algo_Progra_Python 3_AM_OS
Exercice 02
Soit n un nombre entier positif. Sans utiliser d’éditeur Python, relier par une flèche les expressions
Python aux expressions françaises correspondantes :

n +1 • • Le chiffre des unités de n


n %10 • • Le chiffre des dizaines de n
n / /10 %10 • • L’entier précédant n
n / /100%10 • • Le double de n
n** 2 • • L’entier consécutif à n
n−1 • • Le chiffre des centaines de n
n* 2 • • Le carré de n

Remarque : Après avoir cherché les réponses, vous pouvez utiliser la console d’un éditeur
Python pour évaluer les expressions Python.

Exercice 03

a) Sans utiliser d’éditeur Python et pour chaque programme :


• Créer un tableau ou apparaissent la valeur des variables à chaque ligne du programme en
précisant le type de donnée obtenu (entier ou flottant).
• Quel est la sortie affichée dans la console après exécution du programme dans la zone de script ?

1) Programme (zone de script) 2) Programme (zone de script)

x,y,z=1,2,3
a,b=6,5
x,y=y,z
a=a-b
y,z=z,x
b,a=a+1,2*b
y=1/4*z
b=b%3
z=x+y+z
a=a-b//2+0.5
print("x=",x)
print("a=",a)
print("y=",y)
print("b=",b)
print("z=",z)

3) Programme (zone de script) 4) Programme (zone de script)

e=2 res=5.0
e=2**e res=(res-1)/res
e=2**e res=10/res
e=float(e) res=int(res)
print("e=",e) print("res=",res)

b) Utiliser un éditeur Python pour écrire les programmes du point a) dans la zone de script
et obtenir la sortie dans la console. Insérer la commande print(var,type(var)) aux endroits
appropriés de vos programmes, pour obtenir la valeur et le type des variables var.
Nom du fichier : Exercice_donnees_03.py

________________________________________________________________________________
P.S. 2020-2021 15 Intro_Algo_Progra_Python 3_AM_OS
Exercice 04

a) Sans utiliser d’éditeur Python, déterminer le résultat de chacun des « calculs » suivants en
précisant son type (entier, flottant, chaîne de caractère ou liste).

Calculs Résultat Type de donnée

1) 11 + 2 * 3

2) "11" + 2 * "3"

3) str(11) + "2 * 3"

4) "11 + 2 * 3"

5) eval("11 + 2 * 3") + 3/2

6) str(11) + str(2*3)

7) ["11","2",2 * 3]

8) "11" + 2 * 3

9) 3 * str(str(11) + "2")

10) eval("a + 3")

11) str(11 + 2 * 3)

12) 11 + "2" * [3]

13) eval("11" + "2") ** 3

14) eval("11**3") / 2

15) eval("11**3") // 2

16) "11**3" / 2

17) [eval("11**3") % 2]

18) str(11)+str(3)+ "/"+"2"

19) str(a)+str(a)+ "/"+"2"

20) "a+b" + "/" + "2"

b) Obtenir le résultat des « calculs » précédant en utilisant la console d’un éditeur Python.

________________________________________________________________________________
P.S. 2020-2021 16 Intro_Algo_Progra_Python 3_AM_OS
Exercice 05

a) Sans utiliser d’éditeur Python et pour chaque programme :


• Créer un tableau ou apparaissent la valeur des variables à chaque ligne du programme en
précisant le type de donnée obtenu (entier, flottant, chaîne de caractère ou liste).
• Quel est la sortie affichée dans la console après exécution du programme dans la zone de script ?

1) Programme (zone de script) 2) Programme (zone de script)

x=10 x=10
x=2*x x=eval(x)
x=eval(x) x=2.0*x
x=2*x x=str(x)
print(x) x=3*x
print(x)

3) Programme (zone de script)

x = "3"
y= eval(x)
L=[ ]
z="2**"+x+"="+str(2**y)
L.append(z)
y=y+1
z="2**"+str(y)+"="+str(2**y)
L.append(z)
print(L)

4) Programme (zone de script)

a=5
D ="("+str(a)+"+X)"+chr(0x00B2)+"="+str(a**2)+"+"+str(2*a)+"X+X"+chr(0x00B2)
print(D)

b) Ecrire un programme en Python 3 pour obtenir le développement de (a + X)(a − X)


où a est un nombre entier saisi par l'utilisateur.

c) Utiliser un éditeur Python pour écrire les programmes du point a) dans la zone de script
et obtenir la sortie dans la console. Insérer la commande print(var,type(var)) aux endroits
appropriés de vos programmes, pour obtenir la valeur et le type des variables var.
Nom du fichier : Exercice_donnees_05.py

________________________________________________________________________________
P.S. 2020-2021 17 Intro_Algo_Progra_Python 3_AM_OS
Exercice 06
Une année-lumière est une unité de distance couramment utilisée en astronomie, définie comme
la distance parcourue par la lumière en une année (365,25 jours). La vitesse de la lumière étant
environ égale à 299’792 km par seconde.

Écrire un programme en Python 3 convertissant un nombre d'années-lumière en kilomètres.

Indication : Programme Python (zone de script)

a = eval(input(…………….))
k = ………………………….
print(…………………….….)

Nom du fichier : Exercice_donnees_06.py

Exercice 07
a) Si n est une variable contenant un nombre à 2 chiffres non nuls, écrire un programme
en Python 3 permettant d’afficher une variable p contenant le nombre n écrit « à l'envers » .
Exemple : si n = 12 alors p = 21

b) Même question avec un nombre à (exactement) 3 chiffres.


Exemple : si n = 342 alors p = 243

Indications : i) Utiliser le quotient // et le reste % de la division euclidienne (entière).


ii) n = x ⋅ 101 + y ⋅ 100 ou n = x ⋅ 10 2 + y ⋅ 101 + z ⋅ 100
iii) Programme Python (zone de script)

# Partie a)
n= eval(input(……………..…….))
x=…………………………………..
y=…………………………………..
p=…………………………………..
print(………………………..……..)

# Partie b)
n= eval(input(…………..……….))
x=…………………………………..
y=…………………………………..
y=…………………………………..
p=…………………………………..
print(……………………..………..)

Nom du fichier : Exercice_donnees_07.py

________________________________________________________________________________
P.S. 2020-2021 18 Intro_Algo_Progra_Python 3_AM_OS
Exercice 08
Un magasin de bricolage propose une application pour calculer le nombre n de pots de peinture
nécessaires à repeindre les 4 murs d'une pièce dont on connaît les dimensions l, p et h exprimées
en mètres.

a) Exprimer la surface S des 4 murs latéraux de la pièce.

b) Ecrire un programme en Python 3 qui, connaissant les dimensions de la pièce, calcule le


nombre n de pots de peinture nécessaires, sachant que sur le pot de peinture, on peut lire :

Indications : i) Utiliser le quotient // de la division euclidienne (entière).


ii) Programme Python (zone de script)

h = eval(input(…………..……….))
l = eval(input(…………..……….))
p = eval(input(…………..……….))
S = …………………………………..
n = …………………………………..
print(…………………………………..)

Nom du fichier : Exercice_donnees_08.py

________________________________________________________________________________
P.S. 2020-2021 19 Intro_Algo_Progra_Python 3_AM_OS
1.3.5 Instructions conditionnelles

Dans un algorithme ou un programme on peut effectuer des instructions selon certaines conditions
en utilisant ce que l’on appelle des instructions conditionnelles.

Exemple 01 Nom du fichier : Exemple_Test_01.py

# Est-ce que a est plus petit que b ?

Programme Python (zone de script)

a=eval(input("Entrez un nombre a : "))


b=eval(input("Entrez un nombre b : "))

print("a=",a)
print("b=",b)

if a < b :
print(a,"est plus petit que",b)
else:
print(b,"est plus petit ou égal à",a)

# Est-ce que a est plus petit ou égal à b ?

Programme Python (zone de script)

# Version 01 # Version 02
a=eval(input("Entrez un nombre a : ")) a=eval(input("Entrez un nombre a : "))
b=eval(input("Entrez un nombre b : ")) b=eval(input("Entrez un nombre b : "))
print("a=",a) print("a=",a)
print("b=",b) print("b=",b)

if a < b : if a < b :
print(a,"est plus petit que",b) print(a,"est plus petit que",b)
else: elif a == b:
if a == b : print(a,"est égal à",b)
print(a,"est égal à",b) else:
else: print(b,"est plus petit que",a)
print(b,"est plus petit que",a)

Entrée et/ou Sortie Python (console)

>>> >>> >>>


a= 45 a= 76 a= 345
b= 56 b= 54 b= 345
45 est plus petit que 56 54 est plus petit que 76 345 est égal à 345

________________________________________________________________________________
P.S. 2020-2021 20 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_Test_02.py

# Est-ce que c appartient à l’intervalle [a ;b] ?

Programme Python (zone de script)

# Version 01

a=eval(input("Entrez un nombre a : "))


b=eval(input("Entrez un nombre b : "))
c=eval(input("Entrez un nombre c : "))

if a <= c <= b :
print(c,"appartient à l'intervalle [",a,";",b,"]")
else:
print(c,"n'appartient pas à l'intervalle [",a,";",b,"]")

# Version 02

a=eval(input("Entrez un nombre a : "))


b=eval(input("Entrez un nombre b : "))
c=eval(input("Entrez un nombre c : "))

if a <= c and c <= b :


print(c,"appartient à l'intervalle [",a,";",b,"]")
else:
print(c,"n'appartient pas à l'intervalle [",a,";",b,"]")

Entrée et/ou Sortie Python (console)

>>>
40 appartient à l'intervalle [ 9 ; 90 ]
>>>
100 n'appartient pas à l'intervalle [ 9 ; 90 ]

________________________________________________________________________________
P.S. 2020-2021 21 Intro_Algo_Progra_Python 3_AM_OS
Exemple 03 Nom du fichier : Exemple_Test_03.py

# Arrondir un nombre positif à la demi près

Programme Python (zone de script)

n=eval(input("Entrez un nombre positif n : "))

y=int(100*n)
z=y%100
if 0 <= z <= 24 :
t=y//100
elif 25 <= z <= 74 :
t=(y//100)+0.5
else:
t=(y//100)+1

print("Arrondi a la 1/2, le nombre",n,"est",t)

Entrée et/ou Sortie Python (console)

Entrez un nombre positif n : 3.249


>>>
Arrondi a la 1/2, le nombre 3.249 est 3

Entrez un nombre positif n : 3.250


>>>
Arrondi a la 1/2, le nombre 3.25 est 3.5

Entrez un nombre positif n : 3.749


>>>
Arrondi a la 1/2, le nombre 3.749 est 3.5

Entrez un nombre positif n : 3.750


>>>
Arrondi a la 1/2, le nombre 3.75 est 4

Entrez un nombre positif n : 4.135


>>>
Arrondi a la 1/2, le nombre 4.135 est 4

Rappel : a % b : reste entier de la division euclidienne de a par b.


a // b : quotient entier de la division euclidienne de a par b.

________________________________________________________________________________
P.S. 2020-2021 22 Intro_Algo_Progra_Python 3_AM_OS
Définition

Un booléen est un type de donnée qui ne peut prendre que deux valeurs : vrai (V) ou faux (F).
En Python, ces deux valeurs sont notées True et False.

Opérateurs de comparaisons

• a = = b renvoie True si les valeurs de a et b sont égales.


• a = = b renvoie False si les valeurs de a et b ne sont pas égales.

• a != b renvoie True si les valeurs de a et b ne sont pas égales.


• a != b renvoie False si les valeurs de a et b sont égales.

• a > b renvoie True si a est strictement plus grand que b.


• a > b renvoie False si a n’est pas strictement plus grand que b.

• a >= b renvoie True si a est plus grand ou égal à b.


• a >= b renvoie False si a n’est pas plus grand ou égal à b.

• a < b renvoie True si a est strictement plus petit que b.


• a < b renvoie False si a n’est pas strictement plus petit que b.

• a <= b renvoie True si a est plus petit ou égal à b.


• a <= b renvoie False si a n’est pas plus petit ou égal à b.

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

a=5
b=7
print( a == b ) >>> False

print( a != b ) >>> True

print( a > b ) >>> False

print( a >= b ) >>> False

print( a < b ) >>> True

print( a <= b ) >>> True

Remarque
Il ne faut pas confondre l’opérateur de comparaison = = avec l’opérateur d’affectation = .
x = 5 signifie que l’on affecte à x la valeur 5 alors que x = = 5 renvoie True (Vrai)
si x est égal à 5 et False (Faux) sinon.

________________________________________________________________________________
P.S. 2020-2021 23 Intro_Algo_Progra_Python 3_AM_OS
Remarques sur les instructions conditionnelles

En Python Résultat après exécution

if <condition> : Si <condition> est vraie (True) alors


<instructions> <instructions>.

if <condition> : Si <condition> est vraie (True) alors


<instructions 1> <instructions 1>
else : sinon
<instructions 2> <instructions 2>

if <condition 1> : Si <condition 1> est vraie (True) alors


<instructions 1> <instructions 1>
elif <condition 2> : sinon si <condition 2> est vraie (True) alors
<instructions 2> <instructions 2>
else : sinon
<instructions 3> <instructions 3>

Le test "Si" va en Python se traduire par l'instruction "if ".


Lorsque Python rencontre une instruction "if ", il effectue l'ensemble des <instructions>
indentées (c'est à dire décalées) qui suivent lorsque la <condition> est vraie (True).
L'indentation (décalage du texte) peut être obtenue à l'aide de la touche (TAB)
ou en utilisant des espaces.
Le "alors" n'apparaît pas en Python, mais est remplacé par deux points ":".
Le "sinon" va en Python se traduire par l'instruction " else : "
Lorsque Python rencontre une instruction "else : ", il effectue l'ensemble des <instructions>
indentées (c'est à dire décalées) qui suivent lorsque la <condition> est fausse (False).

Opérateurs booléens
Il existe des opérations entres les variables booléennes.

C1 C2 C1 and C2 C1 or C2 not C1
condition 1 condition 2 C1 et C2 C1 ou C2 non C1

True True True True False


True False False True False
False True False True True
False False False False True

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

a,b,c = 5,7,10
print( a <= b and b <= c) >>> True
print( b <= a and b <= c) >>> False
print( b <= a or b <= c) >>> True
print( not b <= c) >>> False

________________________________________________________________________________
P.S. 2020-2021 24 Intro_Algo_Progra_Python 3_AM_OS
Exercice 01
Écrire un programme en Python 3 qui indique si le nombre entier positif n entré
par l’utilisateur est un nombre entier pair ou impair.
Indications : i) Utiliser le reste et le quotient de la division euclidienne par 2.
ii) Programme Python (zone de script)
n= eval(input(…………………………….))
if ……………………… :
print(……………………………………..)
else:
print(……………………………………..)

Nom du fichier : Exercice_Test_01.py

Exercice 02
 x si x ≥ 0
Considérons la fonction valeur absolue définie par : f ( x=
) x= 
− x si x < 0
Écrire un programme en Python 3 qui calcule l’image de cette fonction si l’utilisateur
donne comme entrée la préimage x.
Remarque : N’utiliser pas la fonction prédéfinie dans Python : abs(x)
Indications : Programme Python (zone de script)

x= eval(input(…………………………….))
if ……………………… :
print(……………………………………..)
else:
print(……………………………………..)

Nom du fichier : Exercice_ Test_02.py

Exercice 03
Écrire un programme en Python 3 qui indique si le nombre n entré par l’utilisateur
est plus grand, plus petit ou égal à 10.
Indications : Programme Python (zone de script)

n= eval(input(…………………………….))
if ……………………………. :
print(…………………………….)
else:
if ……………………………. :
print(…………………………….)
else:
print(…………………………….)

Nom du fichier : Exercice_ Test_03.py

________________________________________________________________________________
P.S. 2020-2021 25 Intro_Algo_Progra_Python 3_AM_OS
Exercice 04
Écrire un programme en Python 3 qui permet de résoudre une équation polynomiale du
1e degré de la forme : ax + b =0 si l’utilisateur donne comme entrée, les coefficients a et b.

Indication : Programme Python (zone de script)

a= eval(input(…………………………….))
b= eval(input(…………………………….))
if ……………………… :
if ……………………… :
print(………………………)
else:
print(………………………)
else:
print(………………………)

Nom du fichier : Exercice_ Test_04.py

Exercice 05
Écrire un programme en Python 3 qui permet de résoudre une équation polynomiale
du 2e degré de la forme : ax 2 + bx + c =0 si l’utilisateur donne comme entrée,
les coefficients a, b et c.
Indications : i) Utiliser la formule de Viète :
−b − ∆ −b + ∆
ax 2 + bx + c = 0 ⇒ x1 = et x2 = avec ∆ = b 2 − 4ac
2a 2a
ii) Pour calculer la racine carrée d’un nombre x il faut importer d’abord le module
math en tapant dans le programme la ligne suivante : import math as mt
Ecrire ensuite dans le programme : mt.sqrt(x)
iii) Programme Python (zone de script)

import math as mt
a=………………………
b=………………………
c=………………………
Delta=………………………
if ……………………… :
print(………………………)
elif……………………… :
print(………………………)
else:
print(………………………)

Nom du fichier : Exercice_ Test_05.py

________________________________________________________________________________
P.S. 2020-2021 26 Intro_Algo_Progra_Python 3_AM_OS
1.3.6 Instructions répétitives
Une grande force de la programmation, et l'une des raisons pour lesquelles elle a été inventée, c'est
de pouvoir répéter plusieurs fois la même tâche. Nous allons ajouter des « boucles » à nos
algorithmes et programmes. Nous allons étudier deux types d’instructions répétitives :
i) les boucles bornées de type « for »
ii) les boucles non bornées de type « while ».

Exemple 01 Nom du fichier : Exemple_Boucle_01.py

# Écrire tous les nombres entiers de 3 à 15

Programme Python (zone de script)

# version 01 / boucle : for

for i in range(3,16,1):
print(i)

Entrée et/ou Sortie Python (console)


>>>
3
4
5
6
7
8
9
10
11
12
13
14
15

Programme Python (zone de script)

# version 02 / boucle : for / variable de type : liste

L=[ ]
for i in range(3,16,1):
L.append(i)
print(L)

Entrée et/ou Sortie Python (console)


>>>
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

________________________________________________________________________________
P.S. 2020-2021 27 Intro_Algo_Progra_Python 3_AM_OS
Programme Python (zone de script)

# version 03 / boucle : for / variable de type : liste / etapes

L=[ ]
for i in range(3,16,1):
L.append(i)
print(L)

Entrée et/ou Sortie Python (console)

>>>
[3]
[3, 4]
[3, 4, 5]
[3, 4, 5, 6]
[3, 4, 5, 6, 7]
[3, 4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9, 10]
[3, 4, 5, 6, 7, 8, 9, 10, 11]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

Programme Python (zone de script)

# version 04 / boucle : while / variable de type : liste

L=[ ]
i=3
while i<=15:
L.append(i)
i=i+1
print(L)

Entrée et/ou Sortie Python (console)

>>> [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

Remarques
Dans la version 03 du programme ci-dessus on a indenté la commande print ce qui a eu pour effet
d’afficher les valeurs prise par la variable liste L à chaque étape de la boucle. On peut ainsi mieux
comprendre et suivre les différentes étapes de l’algorithme et ne pas avoir seulement le résultat
final. Cette « astuce » est souvent utile lors de la conception d’un programme complexe.

________________________________________________________________________________
P.S. 2020-2021 28 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_Boucle_02.py

# Écrire tous les nombres entiers de 30 à 4

Programme Python (zone de script)

# version 01 / boucle : for / variable de type : liste


L=[ ]
for i in range(30,3,-1):
L.append(i)
print(L)

# version 02 / boucle : while / variable de type : liste


L=[ ]
i=30
while i>=4:
L.append(i)
i=i-1
print(L)

Entrée et/ou Sortie Python (console)


>>>
[30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4]

Exemple 03 Nom du fichier : Exemple_Boucle_03.py

# Écrire la table de multiplication de 8 pour les entiers de 0 à 10

Programme Python (zone de script)

for k in range(0,11):
print(k,"* 8 =",k*8)

Entrée et/ou Sortie Python (console)


>>>
0*8=0
1*8=8
2 * 8 = 16
3 * 8 = 24
4 * 8 = 32
5 * 8 = 40
6 * 8 = 48
7 * 8 = 56
8 * 8 = 64
9 * 8 = 72
10 * 8 = 80

________________________________________________________________________________
P.S. 2020-2021 29 Intro_Algo_Progra_Python 3_AM_OS
Exemple 04 Nom du fichier : Exemple_Boucle_04.py

# Écrire la somme de tous les nombres entiers compris entre a et b avec 0<a<b
et calculer la somme.

Programme Python (zone de script)

a=eval(input("Entrez le nombre entier a="))


b=eval(input("Entrez le nombre entier b="))

chaine=" "
somme=0
terme=0
for k in range(a,b,1):
chaine=chaine+str(k)+"+"
terme=k
somme=somme+terme
chaine=chaine+str(b)
somme=somme+b

print(chaine,"=",somme)

Entrée et/ou Sortie Python (console)

Entrez le nombre entier a=1


Entrez le nombre entier b=10
>>>
1+2+3+4+5+6+7+8+9+10 = 55

Entrez le nombre entier a=4


Entrez le nombre entier b=13
>>>
4+5+6+7+8+9+10+11+12+13 = 85

________________________________________________________________________________
P.S. 2020-2021 30 Intro_Algo_Progra_Python 3_AM_OS
Remarques sur les instructions répétitives

a) Une boucle bornée est ainsi structurée :

En Python Résultat après exécution

La variable var prend successivement toutes


for var in range (debut,fin,pas) : les valeurs entières de l’entier debut à l’entier
<instructions> fin avec un pas entier de pas, et pour chacune
d’elle, exécution des <instructions>.

La variable var est appelée compteur de la boucle.


Les paramètres debut et pas sont optionnels. Cela permet de réaliser une boucle en faisant
parcourir à la variable var tous les entiers :
• de l'intervalle [0; fin[ si un seul paramètre est renseigné.
• de l'intervalle si 2 paramètres [ debut; fin[ sont renseignés.
• dans l'intervalle [ debut; fin[ mais en réalisant une suite arithmétique de raison pas
si les 3 paramètres sont renseignés.
Le "pour" va en Python se traduire par l'instruction " for ".
Les <instructions> sont indentées par rapport au for .
L'indentation (décalage du texte) peut être obtenue à l'aide de la touche (TAB)
ou en utilisant des espaces.
On utilise en général la boucle " for "quand on connaît à l’avance le nombre de fois que l’on
souhaite répéter une instruction.

b) Une boucle non bornée est ainsi structurée :

En Python Résultat après exécution

while <condition> : Tant que la <condition> est vraie (True) alors


<instructions> effectuer les <instructions>.

Le "tant que" va en Python se traduire par l'instruction " while ".


Lorsque Python rencontre une instruction " while ", il effectue l'ensemble des <instructions>
indentées (c'est à dire décalées) qui suivent lorsque la <condition> est vraie (True).
On utilise en général la boucle "while " quand on ne connaît pas à l’avance le nombre de fois
que l’on souhaite répéter une instruction.
La boucle "while " peut s’avérer utile si on veut qu’une variable prenne successivement toutes
les valeurs de debut à fin avec un pas de pas, sans que ses 3 derniers paramètres soient entiers.

________________________________________________________________________________
P.S. 2020-2021 31 Intro_Algo_Progra_Python 3_AM_OS
Exercice 01

a) Écrire un programme en Python 3 qui affiche tous les nombres pairs entre
2254 et 2288 dans une liste.
b) Écrire un programme en Python 3 qui affiche tous les nombres impairs entre
131 et 255 dans une liste.
Remarque : Proposer deux versions, une avec la boucle while et l’autre avec for .
Indication : Programme Python (zone de script)

# Version / boucle : for # Version / boucle : while


L=…………………….. L=…………………….
for …………………….. : i=……………………..
L.append(…………….) while …………………….. :
print(……………………..) L.append(…………….)
i=……………………..
print(……………………..)

Nom du fichier : Exercice_Boucle_01.py

Exercice 02

a) Ecrire un programme en Python 3 qui affiche la somme : 20 + 21 + 2 2 + ....... + 2 n


et calcule cette somme. Le nombre n est un entier positif entré par l’utilisateur.
Indication : Programme Python (zone de script)

n=eval(input(………………………))
Chaine=…………………………….
Somme=……………………………
Terme=……………………………..
for ……………………..:
Chaine=………………………
Terme=……………………….
Somme=……………………..
Chaine=…………………….
Somme=……………………
print(………………………..)

Nom du fichier : Exercice_Boucle_02.py

________________________________________________________________________________
P.S. 2020-2021 32 Intro_Algo_Progra_Python 3_AM_OS
Exercice 03
Écrire un programme en Python 3 qui affiche tous les livrets de 1 à 10.
Exemple
Livret de 1 Livret de 2 Livret de 3 …..

1*1=1 2*1=2 3*1=3 …..


1*2=2 2*2=4 3*2=6
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12
1*5=5 2*5=10 3*5=15
1*6=6 2*6=12 3*6=18
1*7=7 2*7=14 3*7=21
1*8=8 2*8=16 3*8=24
1*9=9 2*9=18 3*9=27
1*10=10 2*10=20 3*10=30

Indications : i) Placer une boucle à l'intérieur d'une autre boucle.


ii) Programme Python (zone de script)

for ……………………. :
print(…………………….)
print(…………………….)
for ……………………. :
print(…………………….)

Nom du fichier : Exercice_Boucle_03.py

Exercice 04
Décrire en français et à l’aide de dessins, sans exécuter le programme dans un éditeur, l’entrée et la
sortie du programme Python 3 écrit ci-dessous.

Programme Python (zone de script)

n=eval(input("Entrez un entier positif n="))


print(n*" "+"*")
for i in range(1,n,1):
print((n-i)*" "+"*"+(2*i-1)*" "+"*")

Nom du fichier : Exercice_Boucle_04.py

________________________________________________________________________________
P.S. 2020-2021 33 Intro_Algo_Progra_Python 3_AM_OS
1.3.7 Fonctions
Nous allons définir des fonctions dans nos programmes.
Travailler avec des fonctions permet souvent de découper les problèmes et de simplifier la
lisibilité et la compréhension de nos programmes.

Exemple 01 Nom du fichier : Exemple_Fonctions_01.py

# Tableau des valeurs d’une fonction réelle f

Programme Python (zone de script)

# Definition de la fonction f # Affichage du tableau des valeurs de f

def f(x): a,b,n=-3,3,6


return x**2+1
print(repr("x").ljust(8),\
# Tableau des valeurs de f repr("f(x)").ljust(8))
print("")
def tab_val(y,a,b,n): for k in range(n+1):
X=[ ] print(repr(tab_val(f,a,b,n)[0][k]).ljust(8),\
Y=[ ] repr(tab_val(f,a,b,n)[1][k]).ljust(8))
x=a
pas=(b-a)/n
for k in range(n+1):
X.append(x)
Y.append(y(x))
x=x+pas
return X, Y

On a défini une fonction qui porte le nom f et qui à comme « entrée » x et comme « sortie » x**2+1.
On a défini une autre fonction qui porte le nom tab_val et qui donne en sortie le tableau des
valeurs de la fonction y de a à b avec un pas de (b-a)/n .

Entrée et/ou Sortie Python (console)

f(10) tab_val(f,-3,3,6) >>>


>>>101 >>> ([-3, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0], 'x' 'f(x)'
[10, 5.0, 2.0, 1.0, 2.0, 5.0, 10.0])
-3 10
f(100) -2.0 5.0
>>>10001 -1.0 2.0
0.0 1.0
f(-3) 1.0 2.0
>>> 10 2.0 5.0
3.0 10.0

________________________________________________________________________________
P.S. 2020-2021 34 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_Fonctions_02.py

# Fonction factorielle

Définition

Soit n un entier positif ou nul. On appelle n factorielle, noté n! , le produit des nombres
entiers de 1 à n.
1 si n = 0
n! = 
 1 ⋅ 2 ⋅ 3 ⋅ .... ⋅ n si n > 0

Exemples
= ⋅ 2 ⋅ 3 ⋅ 4 ⋅ 5 = 120
5!   1 = ⋅ 2 ⋅ 3 ⋅ 4 ⋅ 5 ⋅ 6 ⋅7 = 5040
7 !   1
69! =   1 ⋅ 2 ⋅ 3 ⋅ ....... ⋅ 68 ⋅ 69  ≅ 1,71 ⋅ 10 98 0!  = 1
70 !  = .......   dépasse les capacités des calculatrices courantes !

Programme Python (zone de script)

# Version 01

def factorielle(n):
if n==0:
return 1
produit = 1
for i in range(1,n+1):
produit=produit*i
return produit

import math as mt
n=eval(input("Entrez un nombre entier naturel n : "))
while n!=mt.floor(n) or n<0 :
n=eval(input("Entrez un nombre entier naturel n : "))
print(n,"factorielle vaut ",factorielle(n))

Entrée et/ou Sortie Python (console)

factorielle(5)
>>> 120

Entrez un nombre entier naturel n : 5


>>> 5 factorielle vaut : 120

________________________________________________________________________________
P.S. 2020-2021 35 Intro_Algo_Progra_Python 3_AM_OS
Programme Python (zone de script)

# Version 02 (algorithme recursif)

def factorielleR(n):
if n==0:
return 1
if n==1:
return 1
else:
return n*factorielleR(n-1)

Entrée et/ou Sortie Python (console)


>>> factorielleR(5)
120

Remarque (version récursive)


n factorielleR(n)
5 5*factorielleR(4)
4 4*factorielleR(3)
3 3*factorielleR(2)
2 2*factorielleR(1)
1 factorielleR(1) = 1

# Relation entre la fonction factorielle et les permutations d’un ensemble E

Définition Considérons une fonction f de A vers B. f est une bijection de A vers B


si et seulement si pour tout y ∈ B il existe un unique x ∈ A tel que f ( x ) = y .

Exemples A= B= E= {a,b,c}
A B A B
f g
a •a a •a
b •b b •b
c •c c •c

f est une bijection de A vers B. g n’est pas une bijection de A vers B.

Définition Une permutation d’un ensemble E est une bijection de E vers E.


Exemple La fonction f de l’exemple précédent est une permutation de E = {a,b,c}
−1
Remarque Toute permutation f de E admet une permutation « réciproque » de E notée f
=
tel que f −1  f i =et f  f −1 i (i=identité)
E E E
f f -1
a •a •a
b b •b
c c •c

________________________________________________________________________________
P.S. 2020-2021 36 Intro_Algo_Progra_Python 3_AM_OS
Proposition Le nombre de permutations d’un ensemble E possédant n éléments est n! .
Exemple E = {a,b,c} =
n #=
E 3
Le nombre de permutations de E est n! = 3! = 1 ⋅ 2 ⋅ 3 = 6

Explication Chaque « chemin » de cet arbre représente une permutation de E.

a b c 3 possibilités

b c a c a b 2 possibilités

c b c a b a 1 possibilité
Il y a 6 = 3 ⋅ 2 ⋅ 1 = 3! « chemin » (permutations) dans cet arbre.

Programme Python (zone de script)

import itertools as iter

L = list(iter.permutations(["a","b"]))
print (L)
print("Nombre de permutations:",len(L))

L = list(iter.permutations(["a","b","c"]))
print (L)
print("Nombre de permutations:",len(L))

L = list(iter.permutations(["a","b","c","d"]))
print (L)
print("Nombre de permutations:",len(L))

Entrée et/ou Sortie Python (console)


>>>
[('a', 'b'), ('b', 'a')]
Nombre de permutations: 2

>>>
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
Nombre de permutations: 6

>>>
[('a', 'b', 'c', 'd'), ('a', 'b', 'd', 'c'), ('a', 'c', 'b', 'd'), ('a', 'c', 'd', 'b'), ('a', 'd', 'b', 'c'),
('a', 'd', 'c', 'b'), ('b', 'a', 'c', 'd'), ('b', 'a', 'd', 'c'), ('b', 'c', 'a', 'd'), ('b', 'c', 'd', 'a'),
('b', 'd', 'a', 'c'), ('b', 'd', 'c', 'a'), ('c', 'a', 'b', 'd'), ('c', 'a', 'd', 'b'), ('c', 'b', 'a', 'd'),
('c', 'b', 'd', 'a'), ('c', 'd', 'a', 'b'), ('c', 'd', 'b', 'a'), ('d', 'a', 'b', 'c'), ('d', 'a', 'c', 'b'),
('d', 'b', 'a', 'c'), ('d', 'b', 'c', 'a'), ('d', 'c', 'a', 'b'), ('d', 'c', 'b', 'a')]
Nombre de permutations: 24

________________________________________________________________________________
P.S. 2020-2021 37 Intro_Algo_Progra_Python 3_AM_OS
Exemple 03 Nom du fichier : Exemple_Fonctions_03.py

# Calcul du volume d’un cylindre droit

Programme Python (zone de script)

import math as mt

def volume_cylindre(h,r):
return mt.pi*r**2*h

h=eval(input("Entrez la hauteur du cylindre h : "))


r=eval(input("Entrez le rayon du cylindre r : "))

print("Le volume du cylindre droit de hauteur h=",h,\


"et de rayon r=",r,"vaut :",volume_cylindre(h,r))

Entrée et/ou Sortie Python (console)

Entrez la hauteur du cylindre h : 3


Entrez le rayon du cylindre r : 4
>>>
Le volume du cylindre droit de hauteur h= 3 et de rayon r= 4 vaut :
150.79644737231007

Remarques sur les fonctions Nom du fichier : Remarques_fonctions.py

a) La déclaration d'une fonction est ainsi structurée :

En Python Résultat après exécution

def nom_fct (paramètres) : On a défini une fonction nom_fct qui


<instructions> à des paramètres (entrées) et qui renvoie
return données des données (sorties).

Le nom de la fonction peut comporter plusieurs lettres suivies éventuellement de chiffres.

Les <instructions> et le return sont indentées par rapport au def.

Une fonction peut dépendre de plusieurs paramètres. Il suffit de les lister en les séparant par
une virgule.

________________________________________________________________________________
P.S. 2020-2021 38 Intro_Algo_Progra_Python 3_AM_OS
b) Une fonction peut à son tour en appeler une autre. L’exemple suivant propose une fonction
qui calcule le pgcd de deux entiers à l’aide de l’algorithme d’Euclide. Cette fonction est à son
tour utilisée pour simplifier une fraction.

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

def PGCD(a,b):
while b!=0: PGCD(12,15)
a,b = b,a%b >>> 3
return a

def SimplFrac(num,den): SimplFrac(12,15)


d=PGCD(num,den) >>> (4, 5)
return num//d , den//d

Entrez le numérateur:12
num=eval(input("Entrez le numérateur :"))
Entrez le dénominateur:15
den=eval(input("Entrez le dénominateur :"))
>>> 12 / 15 = 4 / 5
print(num,'/',den,"=",\
SimplFrac(num,den)[0],'/',SimplFrac(num,den)[1])

Une fonction peut aussi renvoyer plusieurs données, il suffit de les séparer par une virgule
au moment du return. L’exemple précédant montre comment récupérer ces valeurs.

c) Variables locales et globales

Programme Python (zone de script)

a, b, c= 6, 8, 10 # a, b et c sont des variables globales

def TEST(c):
a=3 # a : variable locale à la fonction TEST
b=4*c # b : variable locale à la fonction TEST
c=a+b # c : variable locale à la fonction TEST
return a,b,c

print(TEST(c))

print (a,b,c)

Entrée et/ou Sortie Python (console)

>>> (3, 40, 43)


>>> 6 8 10

Les variables utilisées à l’intérieur d’une fonction (variables locales) n’interfèrent pas avec
d’autres variables du programme (variables globales) qui pourraient porter le même nom.

________________________________________________________________________________
P.S. 2020-2021 39 Intro_Algo_Progra_Python 3_AM_OS
Exercice 01

x + 1 si x ≥ 1
Soit f ( x ) =  et g ( x ) = sin ( x ) deux fonctions réelles.
− x si x < 1
2

a) Ecrire un programme en Python 3 qui calcule l’image de x pour les fonctions :


f , g , f  g ( la composition de f avec g ) et g  f ( la composition de g avec f )
Déclarer des fonctions et notez-les en Python : f(x) , g(x) , f_o_g(x) et g_o_f(x)

b) Ecrire un programme en Python 3 qui affiche simultanément le tableau des valeurs


des fonctions : f , g , f  g et g  f sur l’intervalle [ −1,3] avec un pas de 0.5 .

Indications : Pour calculer le sinus d’un nombre x il faut importer d’abord le module math
en tapant dans le programme la ligne suivante : import math as mt ; écrire ensuite
dans le programme : mt.sin(x)

Nom du fichier : Exercice_Fonctions_01.py

Exercice 02

a) Ecrire un programme en Python 3 qui calcule tous les diviseurs d’un nombre entier
positif n et les affiche dans une liste.
Déclarer une fonction et notez-la en Python : diviseurs(n)

Exemple : diviseur( 60 ) devra retourner [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60].

Indications : i) Utiliser le reste % de la division euclidienne.


ii) Programme Python (zone de script)

def diviseurs(n):
L=……………………
for …………………… :
if ……………………
L.append(………)
return ……………………

b) Parmi les nombres entiers suivants (appelés nombre de Mersenne), lesquels sont premiers ?
1) 217 − 1 2) 218 − 1 3) 219 − 1 4) 2 31 − 1 5) 2 80 − 1

Nom du fichier : Exercice_Fonctions_02.py

________________________________________________________________________________
P.S. 2020-2021 40 Intro_Algo_Progra_Python 3_AM_OS
Exercice 03

Ecrire un programme en Python 3 qui à un nombre positif n renvoie un nombre qui


correspond au nombre n arrondi au dixième.
Déclarer une fonction et notez-la en Python : ARRONDI_1_10(n)

Exemples : ARRONDI_1_10( 4.546 ) devra retourner 4.5.


ARRONDI_1_10( 4.557 ) devra retourner 4.6.

Indications : i) Utiliser le quotient // et le reste % de la division euclidienne.


ii) Programme Python (zone de script)

def ARRONDI_1_10(n):
y=………………..
z=……………….
if ……………….. :
t=………………..
else :
t=…………….…..
return ……………...

Nom du fichier : Exercice_Fonctions_03.py

Exercice 04

Définition Les nombres de Fibonacci forment une suite de nombres que l'on appelle
suite de Fibonacci. Un nombre de la suite s'obtient en ajoutant les deux nombres
précédents de la suite : Si on note Fn le nième nombre de Fibonacci, =
Fn Fn −1 + Fn − 2

Les premiers nombres de la suite sont :


indice n 1 2 3 4 5 6 7 8 9 10 11 ... ...
Fn 1 1 2 3 5 8 13 21 34 55 89 ... ...

Ecrire un programme en Python 3 qui à un nombre positif n renvoie le nième nombre de Fibonacci.
Déclarer une fonction et notez-la en Python : fib(n)
Indications : i) Proposer une version non-récursive et une récursive.
ii) Programme Python (zone de script)

# Version / non recursive # Version / recursive

def fib(n) : def fibR(n) :


a,b = …………………… if …………………… :
for …………………… : return ……………………
a,b = …………………… return ……………………
return ……………………

Nom du fichier : Exercice_Fonctions_04.py

________________________________________________________________________________
P.S. 2020-2021 41 Intro_Algo_Progra_Python 3_AM_OS
Exercice 05

a) Ecrire un programme en Python 3 qui calcule la somme :


S = x + ( x + r ) + ( x + 2r ) + ( x + 3r ) + .... + ( x + nr ) avec n ∈ 

Déclarer une fonction et notez-la en Python : SommeA(x,r,n)

Remarque : La somme S est appelée somme partielle d’une suite arithmétique


Un terme de cette somme est égale au terme précédant augmenté de r.

b) Ecrire un programme en Python 3 qui calcule la somme :


S = x + qx + q 2 x + q 3 x + .... + q n x avec n ∈ 
Déclarer une fonction et notez-la en Python : SommeG(x,q,n)

Remarque : La somme S est appelée somme partielle d’une suite géométrique.


Un terme de cette somme est égale au terme précédant multiplié par q.

Indication : Programme Python (zone de script)

def SommeA(x,r,n) : def SommeG(x,q,n) :


somme=………….. somme=…………..
terme=………….. terme=…………..
if ………….. : if ………….. :
return ………….. return …………..
else: else:
for ………….. : for ………….. :
terme=………….. terme=…………..
somme=………….. somme=…………..
return ………….. return …………..

c) Utiliser les programmes a) ou b) pour calculer les sommes suivantes :

1) 1 + 3 + 5 + 7 + 9 + ....... + 17 2) 5 + 10 + 15 + 20 + 25 + ....... + 100


1 1 1 1 1
3) 20 + 21 + 2 2 + 2 3 + 2 4 + 2 5 + ....... + 210 4) + + + + ....... +
2 4 8 16 1024

Nom du fichier : Exercice_Fonctions_05.py

________________________________________________________________________________
P.S. 2020-2021 42 Intro_Algo_Progra_Python 3_AM_OS
Exercice 06

Résolution d’une équation par la méthode du « balayage »


y f
Théorème de Bolzano
f(b) •
Si f est continue sur [ a;b ] et f ( a ) et f ( b )
sont de signes contraires ( f ( a ) ⋅ f ( b ) < 0 ) f(a+2ε) •
[ • ] x
alors il existe au moins un nombre c ∈ [ a;b ] 0 a a+ε c a+2ε
b
tel que f ( c ) = 0 . f(a+ε) •

f(a) •

Pour déterminer un nombre c, zéro de f (ou solution de l’équation f ( c ) = 0 ) :

1) On calcule f ( a ) .

2) Si f ( a ) < 0 alors on calcule l’image f ( a + ε ) , ensuite f ( a + 2ε ) , etc.


On arrête les calculs dès qu’une image est supérieure à 0 ; par exemple f ( a + 2 ⋅ ε ) > 0
Dans ce cas on a un « encadrement » du nombre c car : a + ε ≤ c ≤ a + 2 ⋅ ε
3) Si f ( a ) > 0 alors on calcule l’image f ( a + ε ) , ensuite f ( a + 2ε ) ,etc.
On arrête les calculs dès qu’une image est supérieure à 0 ; par exemple f ( a + 2 ⋅ ε ) < 0
Dans ce cas on a un « encadrement » du nombre c car : a + ε ≤ c ≤ a + 2 ⋅ ε

a) Ecrire un programme en Python 3 qui donne un encadrement d’un nombre c,


zéro de f à l’aide de la méthode du « balayage ».
Déclarer une fonction et notez-la en Python : balayage(a,epsilon)
) x 2 − 2 continue sur [1;2] et
Exemple : f ( x= f ( 1) ⋅ f ( 2 ) < 0
balayage(1,10**-3) devra retourner (1.4139999999999544, 1.4149999999999543)

Indications : Programme Python (zone de script)

def f(x):
return ……………….
def balayage(a,epsilon):
if ……………….:
while ……………….:
a=……………….
else :
while ……………….:
a=……………….
return ……………….

b) En utilisant votre programme, déterminer un encadrement de la racine carrée de 3


avec epsilon = 10 −5 .

Nom du fichier : Exercice_Fonctions_06.py

________________________________________________________________________________
P.S. 2020-2021 43 Intro_Algo_Progra_Python 3_AM_OS
1.3.8 Modules

Fonctions et modules
Lorsque l'on regroupe des fonctions dans un fichier on crée un ensemble de fonctions que l'on
nomme en Python : module.

Création d’un module


Nous allons créer un fichier nommé arithm.py qui va contenir 3 fonctions étudiées précédemment :
diviseur(n), PGCD(a,b) et SimplFrac(num,den) .
Un tel fichier est appelé un module et il va pouvoir être importé dans un autre fichier, et en
particulier dans le fichier qui contient le programme principal.

Module Python dans la zone de script ( nom du fichier : arithm.py )

def diviseurs(n):
" " " Renvoie l'ensemble des diviseurs positifs du nombre entier n " " "
L=[ ]
for i in range(1,n+1,1):
if n%i==0:
L.append(i)
return L

def PGCD(a,b):
" " " Calcule le plus grand diviseur commun des nombres a et b " " "
while b!=0:
a,b = b,a%b
return a

def SimplFrac(num,den):
" " " Renvoie une fraction irreductible de la fraction num/den " " "
d=PGCD(num,den)
return num//d , den//d

Remarque
Si on place en dessous du nom de la fonction et de ses paramètres, un texte entre des triples
guillemets qui donne par exemple une description de la fonction, cet information apparaitra plus
tard lorsqu’on se renseigne sur le contenu du module. Ce texte appelé docstring et est facultatif.

________________________________________________________________________________
P.S. 2020-2021 44 Intro_Algo_Progra_Python 3_AM_OS
Importation d’un module
Il est maintenant possible d’utiliser dans un programme « principal » les fonctions qui ont été
définies dans le module arithm.py .

• Pour cela, on importe le module arithm avec la commande suivante en définissant un alias ar :
import arithm as ar
• Pour connaître le contenu du module importé, ici arithm on tape la commande :
print(help("arithm"))
Le nom de toutes les fonctions présentes dans le module et leurs docstring apparaîtront.
• On peut ensuite utiliser à notre guise toutes les fonctions du module comme « outils »
en écrivant l’alias du module suivit du nom de la fonction.

Programme Python (zone de script)


( nom du fichier : prog_principal.py ) Entrée et/ou Sortie Python (console)

# PROGRAMME PRINCIPAL >>>


Help on module arithm:
import arithm as ar
NAME
print(help("arithm")) arithm

FUNCTIONS
num=12
PGCD(a, b)
den=15
Calcule le plus grand diviseur commun
des nombres a et b
print(ar.diviseurs(num))
SimplFrac(num, den)
print(ar.diviseurs(den)) Renvoie une fraction irreductible de la
fraction num/den
print(ar.PGCD(num,den))
diviseurs(n)
print(ar.SimplFrac(num,den)) Renvoie l'ensemble des diviseurs positifs
du nombre entier n

>>>
[1, 2, 3, 4, 6, 12]

>>>
[1, 3, 5, 15]

>>>
3

>>>
(4, 5)

Remarque
Pour que l’importation du module arithm.py réussisse il doit être situé dans le même répertoire
que le programme « principal » prog_principal.py .

________________________________________________________________________________
P.S. 2020-2021 45 Intro_Algo_Progra_Python 3_AM_OS
Utilité des modules

Les modules sont donc des fichiers qui regroupent des ensembles de fonctions. En effet, il peut être
commode de découper un programme important en plusieurs fichiers de taille modeste pour en
faciliter la maintenance et le travail collectif. Une application Python typique peut alors être
constituée d'un programme principal accompagné d’un ou plusieurs modules contenants chacun
les définitions d'un certain nombre de fonctions accessoires.

Les modules prédéfinis dans Python


Voici une liste non exhaustive de modules de base prédéfinis et disponibles dans Python.

math fonctions utiles pour les opérations mathématiques (cosinus, sinus, exp, etc.)
random fonctions permettant de travailler avec des valeurs aléatoires
sys fonctions systèmes
os fonctions permettant d'interagir avec le système d'exploitation
time fonctions permettant de travailler avec le temps
calendar fonctions de calendrier
urllib2 fonctions permettant de récupérer des informations sur internet

Programme Python (zone de script) Entrée et/ou Sortie Python (console)


>>>
# Module math Help on built-in module math:
NAME
import math as mt math
DESCRIPTION
print(help("math")) This module is always available. It provides
access to the mathematical functions defined
by the C standard.
print(help("math.sqrt"))
FUNCTIONS
acos(...)
acos(x)
print(mt.pi) Return the arc cosine (measured in radians) of x.
………
print(mt.sin(mt.pi/3))
>>>
print(mt.sqrt(2)) Help on built-in function sqrt in math:

math.sqrt = sqrt(...)
sqrt(x)
Return the square root of x.

>>>
3.141592653589793

>>>
0.8660254037844386

>>>
1.4142135623730951

________________________________________________________________________________
P.S. 2020-2021 46 Intro_Algo_Progra_Python 3_AM_OS
Programme Python (zone de script) Entrée et/ou Sortie Python (console)

# Module random >>>


Help on method randint in random:
import random as rd
random.randint = randint(a, b) method of
random.Random instance
print(help("random")) Return random integer in range [a, b],
including both end points.
print(help("random.randint"))
>>>
print(help("random.uniform")) Help on method uniform in random:

L=[ ] random.uniform = uniform(a, b) method of


for k in range(10): random.Random instance
L.append(rd.randint(1,6)) Get a random number in the range [a, b) or
[a, b] depending on rounding.
print(L)
>>>
[6, 2, 1, 4, 1, 1, 1, 6, 4, 6]
M=[ ]
for k in range(10): >>>
M.append(rd.uniform(1,6)) [5.015342231817894, 5.049080497149493,
print(M) 4.894909171221165, 1.085960530832165,
3.9163654326278015, 5.433416207571077,
3.9129757466807407, 4.598884275004628,
2.389192830497234, 2.5428879099985187]

________________________________________________________________________________
P.S. 2020-2021 47 Intro_Algo_Progra_Python 3_AM_OS
1.3.9 Chaînes de caractères

Présentation

Une chaîne de caractères est comme son nom peut le laisser penser, une succession de caractères.
Un caractère pouvant être une lettre, mais aussi un chiffre, <, @, *, §, ... Pour simplifier on peut
considérer qu'un caractère est un symbole. Dans une chaîne de caractères, chaque caractère
est indicé, Python commence la numérotation à 0.

Dans un programme, il faut donc différencier le nom de la variable qui contient une chaîne de son
contenu. Pour cela en Python, pour signifier qu'il s'agit d'une chaîne de caractères (ou d'un
caractère) on met le texte entre guillemets 'ainsi' ou ’’ainsi’’.

Commandes sur les chaînes de caractères

Il existe de très nombreuses commandes pour travailler sur les chaînes de caractères, nous n'en
donnerons que quelques-unes :

Commande Python Effet

len(ch) Renvoie la longueur de la chaîne ch.

Renvoie le caractère situé au rang i dans la chaîne ch.


ch[i]
Attention : la 1ere lettre est au rang 0.
Renvoie la partie de chaîne ch comprise entre le caractère
ch[i : j]
à la position i (inclus) et celui à la position j (exclu).

Colle deux chaînes ch1 et ch2.


ch1+ch2
Le verbe utilisé est «concaténer».

nb*ch Recopie nb fois la chaîne ch.

Crée une boucle dans laquelle la variable L


for L in ch :
va prendre tour à tour chaque caractère de la chaîne ch.
Renvoie une chaîne de caractère contenant l’écriture
str ( nb )
décimale du nombre nb.

eval ( ch ) Transforme la chaîne ch en valeur numérique.

________________________________________________________________________________
P.S. 2020-2021 48 Intro_Algo_Progra_Python 3_AM_OS
Exemple 01 Nom du fichier : Exemple_chaînes_01.py

# Tests des commandes sur une chaîne de caractère

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

ch="Le ciel." >>>


Le ciel.
print(ch)
>>>
print(len(ch)) 8

print(ch[3]) >>>
c
print(ch[1:5])
>>>
for L in ch: e ci
print(L)
>>>
#--------------# L
e
mot1='Prénom'
mot2='Nom' c
i
print(mot1+mot2+mot1) e
l
print(5*mot2) .

#--------------# >>>
PrénomNomPrénom
ch1="température="
nb=15.4 >>>
NomNomNomNomNom
print(ch1+str(nb))
>>>
#-------------# température=15.4

ch2="3+4" >>>
3+4
print(ch2)
>>>
print(eval(ch2)) 7

#-------------# >>>
1125899906842624
nb=2**50
>>>
print(nb) 16

print(len(str(nb)))

________________________________________________________________________________
P.S. 2020-2021 49 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_chaînes_02.py

# On veut écrire un mot à "l’envers

Programme Python (zone de script)


Version 01 Version 02

def INVERSION_1(mot): def INVERSION_2(mot):


mot1="" mot1=""
for i in range(len(mot)): for lettre in mot:
mot1=mot[i]+mot1 mot1=lettre+mot1
return mot1 return mot1

Entrée et/ou Sortie Python (console)

INVERSION_1("bonjour") INVERSION_2("bonjour")
>>> ruojnob >>> ruojnob

INVERSION_1("kayak") INVERSION_2("kayak ")


>>> kayak >>> kayak

On constate que le mot kayak est un palindrome.

Remarque sur les chaînes de caractères


Nom du fichier : Remarque_chaînes.py

Les caractères d'une chaîne de caractères ne peuvent pas être modifiés. La commande ch[ i ]
permet donc de connaître (lecture) la lettre d'indice i du mot, mais pas de la modifier (écriture).

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

mot="bonjour" >>>
bonjour
print(mot)
>>>
print(mot[2]) n

mot[2]="j" >>>
Traceback (most recent call last):
print(mot) File "<string>", line 301, in runcode
File "<editor selection>", line 4, in
<module>
TypeError: 'str' object does not support
item assignment

________________________________________________________________________________
P.S. 2020-2021 50 Intro_Algo_Progra_Python 3_AM_OS
Exemple 03 Nom du fichier : Exemple_chaînes_03.py

# Code ASCII

En informatique, chaque caractère est associé


à un nombre appelé code ASCII (pour American
Standard Code for Information Interchange).
Les 128 premiers codes sont les mêmes pour
toutes les machines.
Par exemple le caractère 32 est l'espace, le 65 le A, ...
Les caractères de 0 à 31 sont des caractères spéciaux,
déplacements / retour chariot, saut de colonne, etc.

Actuellement on utilise le code ASCII étendu et comporte 256 caractères (voir tableau sur internet)

Avec Python, on peut obtenir le code ASCII d’un caractère avec


la fonction ord et, inversement, passer d’un entier au caractère
correspondant à l’aide de la fonction chr.

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

print(chr(65)) >>>
A
print(ord('A'))
>>>
print(chr(ord('A'))) 65

print(ord(chr(65))) >>>
A
mot="ciel"
for lettre in mot: >>>
print(ord(lettre)) 65

alphabetMAJ=" " >>>


for i in range(65,91): 99
alphabetMAJ=alphabetMAJ+chr(i) 105
print(alphabetMAJ) 101
108
alphabetMIN=" "
for i in range(97,123): >>>
alphabetMIN=alphabetMIN+chr(i) ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(alphabetMIN)
>>>
abcdefghijklmnopqrstuvwxyz

________________________________________________________________________________
P.S. 2020-2021 51 Intro_Algo_Progra_Python 3_AM_OS
Exercice 01

Un palindrome est un mot qui peut se lire aussi bien à l'endroit qu'à l'envers comme "kayak".
Ecrire un programme en Python dans lequel on définit la fonction TEST_PALIN(mot) qui à
une chaîne de caractère mot (mot en français) retourne la variable booléenne True si le mot
est un palindrome et False sinon.
Par exemple : TEST_PALIN( ‘kayak’) devra retourner : True.
TEST_PALIN( ‘ciel’) devra retourner : False.

Indications : i) Ecrire le mot à l’endroit et à l’envers et comparer.


ii) Programme Python (zone de script)

def TEST_PALIN(mot) :
mot1 = ""
for …………………… :
mot1 = ……………………
if …………………… :
return ……………………
else:
return ……………………

Nom du fichier : Exercice_chaînes_01.py

Exercice 02
Ecrire un programme en Python 3 dans lequel on définit la fonction COMPTEUR( txt )
qui à une chaîne de caractère txt contenant une phrase simple (pas de mots composés,
d'apostrophes, etc.) retourne le nombre de mots dans la phrase.

Exemple : COMPTEUR( "Il fait beau demain." ) devra retourner : 4

Indications : i) Chaque espace entre les mots est associé à un mot.


Le point à la fin d’une phrase est aussi associé à un mot.
ii) Programme Python (zone de script)

def COMPTEUR(txt) :
i=……………………
for …………………… :
if …………………… :
i=……………………
return ……………………

Nom du fichier : Exercice_chaînes_02.py

________________________________________________________________________________
P.S. 2020-2021 52 Intro_Algo_Progra_Python 3_AM_OS
Exercice 03

Ecrire un programme en Python 3 dans lequel on définit la fonction INITIALES( txt )


qui à une chaîne de caractère txt contenant le prénom et le nom d'une personne retourne
une chaîne de caractère composés uniquement des initiales.
Exemple : INITIALES( "Eric Dupont" ) devra retourner "ED".

Indications : i) Utiliser le code ASCII : Toutes les lettres majuscules on comme adresse un nombre
compris entre 65 et 90 .
ii) Programme Python (zone de script)

def INITIALES(txt) :
initiales = ……………………
for …………………… :
if …………………… :
initiales = ……………………
return ……………………

Nom du fichier : Exercice_chaînes_03.py

Exercice 04

Ecrire un programme en Python 3 dans lequel on définit la fonction MAJ_MIN( txt )


qui à une chaîne de caractère txt contenant le prénom et le nom d'une personne retourne
une chaîne de caractère qui inverse les majuscules et minuscules.
Exemple : MAJ_MIN( "Eric Dupont" ) devra retourner "eRIC dUPONT".

Indications : i) Utiliser le code ASCII.


ii) Programme Python (zone de script)

def MAJ_MIN(txt) :
inverse = ……………………
for ……………………:
a = ……………………
if …… <= a <= …… :
a = ……………………
elif …… <= a <= …… :
a = ……………………
inverse = ……………………
return ……………………

Nom du fichier : Exercice_chaînes_04.py

________________________________________________________________________________
P.S. 2020-2021 53 Intro_Algo_Progra_Python 3_AM_OS
1.3.10 Listes

Présentation
Nous allons introduire et étudier un nouveau type de donnée : la liste. Il s'agit d'un regroupement de
données délimitées par des crochets. Par exemple, [1.9,46 ," Anne",−24 ] est une liste de quatre
éléments : le flottant 1.9, puis l'entier 46, puis la chaîne de caractères "Anne", et enfin l'entier -24.
Comme pour les chaînes de caractères, dans une liste, le premier élément a pour indice 0.

Commandes sur les listes

Voici quelques actions que l'on peut réaliser sur les listes.

Création d’une liste (commande Python) Effet

L=[] Crée une liste L vide.


Crée une liste L qui contient les éléments
L = [ e0 , e1 , e2,…]
e0 , e1 , e2,…

Manipulation des éléments d’une liste


Effet
(commande Python)
Renvoie l’élément d’indice i de la liste L .
L [i]
(indice 0 pour le premier)
len( L ) Renvoie le nombre d’éléments de la liste L.

Crée une boucle dans laquelle la variable e


for e in L va prendre tour à tour les valeurs des éléments
de la liste L .

Opérations qui agissent en modifiant


Effet
une liste (commande Python)

L [i]= elem Stocke elem dans la liste L au rang i.

L.append( e ) Ajoute l’élément e à la fin de la liste L.

L.insert( j , e ) Insère l’élément e au rang j de la liste L.

L.pop( i ) Supprime l’élément au rang i de la liste L.


Supprime la première occurrence de l’élément
L.remove( e )
e dans la liste L.
Fonctions qui agissent sur les listes
Effet
sans les modifier (commande Python)
Renvoie le plus petit (le plus grand) élément
min( L ) , max( L )
de la liste L.

________________________________________________________________________________
P.S. 2020-2021 54 Intro_Algo_Progra_Python 3_AM_OS
Exemple 01 Nom du fichier : Exemple_listes_01.py

# Tests des commandes sur les listes

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

# Créations de listes
>>>
L=[10**3,4.5,"A",-3] L= [1000, 4.5, 'A', -3]
print("L=",L)
>>>
M=[2*k for k in range(5)] M= [0, 2, 4, 6, 8]
print("M=",M)
>>>
M=[ ] M= [0, 2, 4, 6, 8]
for k in range(5):
M.append(2*k) >>>
print("M=",M) J= ['jour:1', 'jour:2', 'jour:3', 'jour:4',
'jour:5', 'jour:6', 'jour:7']
J=["jour:"+str(k) for k in range(1,8)]
print("J=",J) >>>
P= [[2, 4, 4.5, 6], [1.5, 6, 6, 3]]
L1=[2,4,4.5,6]
L2=[1.5,6,6,3]
P=[L1,L2]

print("P=",P)

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

# Manipulation des éléments d une liste >>>


9
L=[8,9,10]
>>>
print(L[1]) 3

print(len(L)) >>>
8
for nombre in L: 9
print(nombre) 10

for k in range(len(L)): >>>


print("Element "+str(k)+" de L:",L[k]) Element 0 de L: 8
Element 1 de L: 9
Element 2 de L: 10
L1=[2,4,4.5,6]
L2=[1.5,6,6,3] >>>
P=[L1,L2] 4.5

print(P[0][2]) >>>
print(P[1][0]) 1.5

________________________________________________________________________________
P.S. 2020-2021 55 Intro_Algo_Progra_Python 3_AM_OS
Programme Python (zone de script) Entrée et/ou Sortie Python (console)

# Opérations qui agissent en modifiant


une liste

L=[8,9,10,11]
L[2]=3
>>>
print("L=",L)
L= [8, 9, 3, 11]
M=[8,9,10,11]
>>>
M.append(3)
M= [8, 9, 10, 11, 3]
print("M=",M)
>>>
N=[8,9,10,11]
N= [8, 9, 3, 10, 11]
N.insert(2,3)
print("N=",N)
>>>
Q= [8, 9, 11]
Q=[8,9,10,11]
Q.pop(2)
>>>
print("Q=",Q)
R= [8, 10, 11]
R=[8,9,10,11]
R.remove(9)
print("R=",R)

Remarque
Les commandes append, insert, pop, et remove modifient la longueur de la liste.

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

# Fonctions qui agissent sur les listes


# sans les modifier
>>>
minL= -1
L=[2.7,9,5.5,8,-1]
>>>
print("minL=",min(L))
maxL= 9
print("maxL=",max(L))
>>>
Traceback (most recent call last):
File "<string>", line 301, in runcode
M=["c",4,"A",8,1]
File "<editor selection>", line 8, in
<module>
print("minM=",min(M))
TypeError: unorderable types: int() < str()
print("maxM=",max(M))

Remarque
Les commandes max et min ne fonctionnent pas si dans la liste il y des objets sur lesquels il n’y
a pas de relation d’ordre comme par exemple entre des chaînes de caractères.

________________________________________________________________________________
P.S. 2020-2021 56 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_listes_02.py

# Conversion : listes <-> chaines de caractères


# Transformations : listes

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

def CONV_CL(ch):
"""Conversion : chaine de caracteres ch -> liste L"""
L=[ ]
for lettre in ch:
L.append(lettre)
return L

def SUB(L,symbole1,symbole2):
"""Substitution : symbole1 par le symbole2"""
for j in range(len(L)):
if L[ j ]==symbole1:
L[ j ]=symbole2
return L

def INV(L1):
"""Inversion des éléments de la liste L1"""
L2=[ ]
k=len((L1))
for i in range(k):
L2.append(L1[k-(i+1)])
return L2

def CONV_LC(L):
"""Conversion : liste L -> chaine de caracteres ch """
ch=""
for e in L:
ch=ch+str(e)
return ch

#---------------------------------------------

ch1="bleu ciel"
print("ch1=",ch1)
print("")
>>>
L1=CONV_CL(ch1) ch1= bleu ciel
print("L1=",L1)
print("")
>>>
L2=SUB(L1,"e","*") L1= ['b', 'l', 'e', 'u', ' ', 'c', 'i', 'e', 'l']
print("L2=",L2)
print("") >>>
L2= ['b', 'l', 'y', 'u', ' ', 'c', 'i', 'y', 'l']
L3=SUB(L2," ","p")
print("L3=",L3)
print("") >>>
L3= ['b', 'l', 'y', 'u', 'p', 'c', 'i', 'y', 'l']
L4=INV(L3)
print("L4=",L4) >>>
print("")
L4= ['l', 'y', 'i', 'c', 'p', 'u', 'y', 'l', 'b']
ch5=CONV_LC(L4)
print("ch5=",ch5) >>>
print("") ch5= lyicpuylb

________________________________________________________________________________
P.S. 2020-2021 57 Intro_Algo_Progra_Python 3_AM_OS
Remarques sur les listes Nom du fichier : Remarque_listes.py

# Copie d’une liste

Programme Python (zone de script) Entrée et/ou Sortie Python (console)

# -----variables listes-----#

A=[1,2,3,4,5,6]
B=A
>>>
print("A=",A) A= [1, 2, 3, 4, 5, 6]
print("B=",B) B= [1, 2, 3, 4, 5, 6]

A.append(100) >>>
A= [1, 2, 3, 4, 5, 6, 100]
print("A=",A) B= [1, 2, 3, 4, 5, 6, 100]
print("B=",B)
>>>
B.pop(0) A= [2, 3, 4, 5, 6, 100]
B= [2, 3, 4, 5, 6, 100]
print("A=",A)
print("B=",B)

# -----variables nombres-----#
a=34
b=a
>>>
print("a=",a) a= 34
print("b=",b) b= 34
a=a+3
>>>
print("a=",a) a= 37
print("b=",b) b= 34
b=3*b
>>>
print("a=",a) a= 37
print("b=",b) b= 102

Si on copie une liste A dans une liste B avec une assignation (B=A), la modification d’une
des listes entraine la modification de l’autre, ce qui n’est pas forcément souhaitable.
Ce phénomène ne se produit pas en Python 3 sur les variables nombres.
Pour obtenir une liste B, qui est la copie conforme et « indépendante » de la liste A, on peut utiliser
la fonction suivante :

def COPIE(A):
B=[ ]
for e in A:
B.append(e)
return B

________________________________________________________________________________
P.S. 2020-2021 58 Intro_Algo_Progra_Python 3_AM_OS
Exercice 01

Un élève obtient dans un cours Mathématiques au Collège les notes suivantes :


3 ; 5 ; 4.5 ; 2 ; 2 ; 6 ; 2.5 ; 4.5

Ecrire un programme en Python 3 dans lequel on définit la fonction SUPPR_MIN( L )


qui à une liste L de notes (nombres) retourne une liste dans laquelle on a supprimé le plus
mauvais (petit) des résultats.
Par exemple : SUPPR_MIN([3,5,4.5,2,2,6,2.5,4.5]) devra retourner [3, 5, 4.5, 2, 6, 2.5, 4.5] .

Indications : Programme Python (zone de script)

def SUPPR_MIN(L) :
for …………………… :
if …………………… :
imin=……………………
L.pop(……………………)
return ……………………

Nom du fichier : Exercice_listes_01.py

Exercice 02

Un élève obtient dans un cours Mathématiques au Collège les notes suivantes :


3 ; 5 ; 4.5 ; 2 ; 2 ; 6 ; 2.5 ; 4.5

Ecrire un programme en Python 3 dans lequel on définit la fonction MOY_1_10( L )


qui à une liste L de notes (nombres) retourne un nombre qui est la moyenne arithmétique
des notes (nombres) de la liste L et ensuite, arrondie au 1/10e.

Par exemple : MOY_1_10([3,5,4.5,2,2,6,2.5,4.5])


devra retourner (3.9285714285714284, 3.9) .

Indications i) Utiliser la fonction ARRONDI_1_10(n) étudiée précédemment dans ce cours.


ii) Programme Python (zone de script)

def MOY_1_10 (L) :


somme=…………….
for …………………… :
somme=……………….
moy=…………………..
return …………………….

Nom du fichier : Exercice_listes_02.py

________________________________________________________________________________
P.S. 2020-2021 59 Intro_Algo_Progra_Python 3_AM_OS
Exercice 03
Sur une plage, vous avez trouvé une vielle bouteille échouée contenant le message suivant :
" sd?ip!sov!suos!ros?rt!nu!a!y!li "
Ce message vous parait chiffré et donc incompréhensible. Il s’agit peut-être d’un message
écrit par le pirate Barberousse et renferme peut-être des indications sur l’emplacement d’un trésor.

a) En vous aidant des fonctions Python définies dans le fichier : Exemple_listes_02.py


déchiffrer le message.

b) Quel est « la clef de déchiffrement » autrement dit quels sont les règles utilisées pour déchiffrer
ce message ?

c) Quel est « la clef de chiffrement » autrement dit quels sont les règles utilisées pour chiffrer
un message ?

Nom du fichier : Exercice_listes_03.py

________________________________________________________________________________
P.S. 2020-2021 60 Intro_Algo_Progra_Python 3_AM_OS
1.3.11 Graphismes

Nous allons tracer/afficher : 1) des graphiques de fonctions f à une variable réelle.


2) des diagrammes en bâtons de données à deux dimensions.

Exemple 01 Nom du fichier : Exemple_Graphismes_01.py

# Afficher une lettre M majuscule

Programme Python (zone de script)

print(help("matplotlib.pyplot.plot"))

import matplotlib.pyplot as plt

X = [1, 1, 2, 3, 3]
Y = [1, 4, 2, 4, 1]

plt.figure(figsize=(8,8),dpi=100)
plt.plot(X, Y, "k - - o")
plt.axis([0, 4, 0, 5])
plt.show()

Entrée et/ou Sortie Python (console ou dans une fenêtre séparée)

Remarque
Avec la fonction plot du package matplotlib.pyplot nous venons de tracer une ligne brisée
passant par les points ( X [0 ] ;Y [0 ]) , ( X [1] ;Y [1]) , ( X [ 2 ] ;Y [ 2 ]) , ( X [ 3] ;Y [ 3]) , ( X [ 4 ] ;Y [ 4 ]) .

________________________________________________________________________________
P.S. 2020-2021 61 Intro_Algo_Progra_Python 3_AM_OS
Exemple 02 Nom du fichier : Exemple_Graphismes_02.py

# Afficher le graphique d’une fonction réelle f et son tableau des valeurs

Programme Python (zone de script)

# Definition de la fonction f # Affichage du graphique de f


def f(x):
return x**2+1 import matplotlib.pyplot as plt

# Tableau des valeurs de f plt.plot(tab_val(f,a,b,n)[0],tab_val(f,a,b,n)[1], \


def tab_val(y,a,b,n): 'k-o',linewidth=3,label="f(x)=x**2+1")
X=[ ]
Y=[ ] plt.axis([-3.2,3.2,0,10.2])
x=a plt.title("Graphique de f")
pas=(b-a)/n plt.xlabel("x")
for k in range(n+1): plt.ylabel("y")
X.append(x) plt.legend(fontsize=12)
Y.append(y(x)) plt.grid(True)
x=x+pas plt.xticks(range(-3, 4, 1), fontsize=12)
return X, Y plt.yticks(range(0, 11, 1), fontsize=12)

# Affichage du tableau des valeurs de f plt.show( )


a,b,n=-3,3,12
print(repr("x").ljust(8),repr("f(x)").ljust(8))
print("")
for k in range(n+1):
print(repr(tab_val(f,a,b,n)[0][k]).ljust(8), \
repr(tab_val(f,a,b,n)[1][k]).ljust(8))

Entrée et/ou Sortie Python (console ou dans une fenêtre séparée)

'x' 'f(x)'

-3 10
-2.5 7.25
-2.0 5.0
-1.5 3.25
-1.0 2.0
-0.5 1.25
0.0 1.0
0.5 1.25
1.0 2.0
1.5 3.25
2.0 5.0
2.5 7.25
3.0 10.0

________________________________________________________________________________
P.S. 2020-2021 62 Intro_Algo_Progra_Python 3_AM_OS
Exemple 03 Nom du fichier : Exemple_Graphismes_03.py

# Afficher un diagramme en bâtons de données à deux dimensions

Programme Python (zone de script)

import matplotlib.pyplot as plt

X=[0,1,2,3]
Y=[0.2,0.5,0.15,0.15]
labels=['A','B','C','D']

for k in range(len(X)):
plt.plot([X[k],X[k]],[0,Y[k]], 'k-', linewidth=20)

plt.axis([-0.5,3.5,0,1])
plt.xlabel("Lettres")
plt.ylabel("Fréquences")
plt.xticks(X,labels)

plt.show( )

Entrée et/ou Sortie Python (console ou dans une fenêtre séparée)

Remarque
Chaque bâton est une ligne brisée passant par ( X [ k ] ;0 ) et ( X [ k ] ;Y [ k ]) .
Elles sont toutes disjointes deux à deux.

________________________________________________________________________________
P.S. 2020-2021 63 Intro_Algo_Progra_Python 3_AM_OS
Remarques sur les graphismes

Pour dessiner avec Python 3 on utilise le module matplotlib. Ce module comporte


beaucoup de fonctions et options permettant de représenter des graphiques élaborés en 2D.
Voici une description succincte des principales fonctions :

• plot (X, Y, options) permet :


i) de placer un point de coordonnées (X, Y) si X et Y sont des nombres.
ii) de tracer la courbe (ligne brisée) passant par les points (Xi, Yi) lorsque X et Y sont
des listes de même taille contenant respectivement les valeurs Xi et Yi.
La liste X vaut par défaut [1,2, ... n] si elle n'est pas renseignée.
Les options sont multiples, nous n'en présentons
qu'une ici : il s'agit d'une chaîne composée de 3
caractères, le premier représentant la couleur,
le second le style de trait :

• axis permet de régler les axes du repère de différentes manières.


Par défaut, les axes s'adaptent aux tracés réalisés en prenant les extrémums des coordonnées des
points tracés. On peut forcer les changements :

Fonctions (commandes Python) Effet

Modifie les limites de la fenêtre de tracé. L est


axis(L)
une liste de la forme [ x min , x max , y min , y max ].
Force le repère à être orthonormal (c'est mieux
axis ( 'equal' )
surtout si on trace des cercles !)

Attention, la fonction axis doit être appelée après les plot et avant le show().

• On peut ajouter un titre au graphique et aux axes pour préciser les quantités représentées et
donner du sens.

Fonctions (commandes Python) Effet


xlabel(txt) Permet d’ajouter le titre txt à l’axe des abscisses
ylabel(txt) (respectivement celui des ordonnées).

title(txt) Permet de donner le titre txt au graphique.

• On finit toujours le programme par la fonction show( ) .


• Vous pouvez obtenir des informations supplémentaires à l’adresse suivante :
https://matplotlib.org/

________________________________________________________________________________
P.S. 2020-2021 64 Intro_Algo_Progra_Python 3_AM_OS
Exercice 01

Considérons les fonctions définies par :


 x si x ≥ 0
f ( x) =x=
 sin ( x ) ; h ( x ) =x ; j ( x ) =
; g ( x) = f ( x + 2) ; k ( x) =
3 ⋅ g (2 ⋅ x)
− x si x < 0
Ecrire un programme en Python qui affiche sur l’intervalle [ −5;5 ] et dans le même
repère, le graphique de chacune des fonctions définies ci-dessus.

Indications : i) Choisir une couleur différente pour chaque graphique.


ii) Sortie Python (console)

Nom du fichier : Exercice_Graphismes_01.py

Exercice 02

Considérons les listes suivantes qui représentent les mesures de la température en fonction du temps
dans un lieu donné à une date donnée.

t = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] (temps)

T1 = [20,18,16,14,12,10,10,11,12,13,14,16,18,20,22,24,26,28,28,26,24,22,21,20] (température été)

T2 = [5,3,3,2,1,0,-4,-2,-2,-1,0,2,4,6,8,7,10,8,7,7,6,6,5,4] (température hiver)

Ecrire un programme en Python qui affiche


dans le même repère, les diagrammes en bâton
des relations entre le temps et la température.
On utilisera la couleur bleue pour les données
en hiver et le rouge pour celles en été.

Nom du fichier : Exercice_Graphismes_02.py

________________________________________________________________________________
P.S. 2020-2021 65 Intro_Algo_Progra_Python 3_AM_OS
________________________________________________________________________________
P.S. 2020-2021 66 Intro_Algo_Progra_Python 3_AM_OS
1.4 Corrections des activités et exercices

Corrections des activités et exercices


1.3.4 Types de données : stockage et affichage

Correction activité : Exemple 2


a)

Instructions a Type b Type

a=2 2 entier

b=3.5 2 entier 3.5 flottant

a=a+1 3 entier 3.5 flottant

b=a*b 3 entier 10.5 flottant

b=a 3 entier 3 entier

a=a**3 27 entier 3 entier

b) Entrée et/ou Sortie Python (console)

>>>
a= 27
>>>
b= 3

________________________________________________________________________________
P.S. 2020-2021 67 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 01

Calculs Résultat Type de donnée


1) 7 // 2 3 entier
2) 4%2 0 entier
3) 3.0 ** 3 27.0 flottant
4) – 5 // 2 -3 entier
5) 5 ** 0 + 7 8 entier
6) 2 ** -2 0.25 flottant
7) -2 ** 10 -1024 entier
8) 1–5*2 -9 entier
9) 5–3/–2 6.5 flottant
10) – 13 % 3 2 entier
11) 1345 % 10 5 entier
12) 1345 // 10 % 10 4 entier
13) 1345 // 100 % 10 3 entier
14) 1345 // 1000 % 10 1 entier

Correction Exercice 02 (à la main sans Python)

n +1 • • Le chiffre des unités de n

n %10 • • Le chiffre des dizaines de n

n / /10 %10 • • L’entier précédant n

n / /100%10 • • Le double de n

n** 2 • • L’entier consécutif à n

n−1 • • Le chiffre des centaines de n

n* 2 • • Le carré de n

________________________________________________________________________________
P.S. 2020-2021 68 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 03

a)
Instructions a Type b Type
# Programme 1)
a,b=6,5 6 entier 5 entier
a=a-b 1 entier 5 entier
b,a=a+1,2*b 10 entier 2 entier
b=b%3 10 entier 2 entier
a=a-b//2+0.5 9.5 flottant 2 entier

Le programme Python affiche en sortie dans la console : a=9.5


b=2

Instructions x Type y Type z Type


# Programme 2)
x,y,z=1,2,3 1 entier 2 entier 3 entier
x,y=y,z 2 entier 3 entier 3 entier
y,z=z,x 2 entier 3 entier 2 entier
y=1/4*z 2 entier 0.5 flottant 2 entier
z=x+y+z 2 entier 0.5 flottant 4.5 flottant

Le programme Python affiche en sortie dans la console : x=2


y =0.5
z =4.5

Instructions e Type
# Programme 3)
e=2 2 entier
e=2**e 4 entier
e=2**e 16 entier
e=float(e) 16.0 flottant

Le programme Python affiche en sortie dans la console : e=16.0

Instructions res Type


# Programme 4)
res=5.0 5.0 flottant
res=(res-1)/res 0.8 flottant
res=10/res 12.5 flottant
int(res) 12 entier

Le programme Python affiche en sortie dans la console : res=12

________________________________________________________________________________
P.S. 2020-2021 69 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
b) Nom du fichier : Exercice_donnees_03.py

Programme 3) Python (zone de script) Entrée et/ou Sortie Python (console)

ee=2 >>>
print(e,type(e)) 2 <class 'int'>
e=2**e >>>
print(e,type(e)) 4 <class 'int'>
e=2**e >>>
16 <class 'int'>
print(e,type(e)) >>>
e=float(e) 16.0 <class 'float'>
print(e,type(e)) >>>
print("e=",e) e= 16.0

Correction Exercice_Données_04

Calculs Résultat Type de donnée


1) 11 + 2 * 3 17 entier
2) "11" + 2 * "3" "1133" chaîne
3) str(11) + "2 * 3" "112 * 3" chaîne
4) "11 + 2 * 3" "11 + 2 * 3" chaîne
5) eval("11 + 2 * 3") + 3/2 18.5 flottant
6) str(11) + str(2*3) "116" chaîne
7) ["11","2",2 * 3] ["11", "2", 6] liste
8) "11" + 2 * 3 TypeError
9) 3 * str(str(11)+"2") "112112112" chaîne
10) eval("a+3") NameError
11) str(11 + 2 * 3) "17" chaîne
12) 11 + "2" * [3] TypeError
13) eval("11" + "2") ** 3 1404928 entier
14) eval("11**3") / 2 665.5 flottant
15) eval("11**3") // 2 665 entier
16) "11**3" / 2 TypeError
17) eval("11**3") % 2 [1] liste
18) str(11)+str(3)+ "/"+"2" "113/2" chaîne
19) str(a)+str(a)+ "/"+"2" NameError
20) "a+b" + "/" + "2" "a+b/2" chaîne

________________________________________________________________________________
P.S. 2020-2021 70 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 05

a)
Instructions x type
# Programme 1)
x= "10" "10" chaîne
x=2*x "1010" chaîne
x=eval(x) 1010 entier
x=2*x 2020 entier

Le programme affiche en sortie l’entier : 2020

Instructions x type
# Programme 2)
x= "10" "10" chaîne
x=eval(x) 10 entier
x=2.0*x 20.0 flottant
x=str(x) "20.0" chaîne
x=3*x "20.020.020.0" chaîne

Le programme affiche en sortie la chaîne de caractère : 20.020.020.0

Instructions x y z L type
# Programme 3)
x = "3" "3" chaîne
y= eval(x) "3" 3 entier
L=[ ] "3" 3 [] liste
z="2**"+x+"="+str(2**y) "3" 3 "2**3=8" chaîne
L.append(z) "3" 3 "2**3=8" ["2**3=8" ] liste
y=y+1 "3" 4 "2**3=8" ["2**3=8" ] entier
z="2**"+str(y)+"="+str(2**y) "3" 4 "2**4=16" ["2**3=8" ] chaîne
L.append(z) "3" 4 "2**4=16" ["2**3=8", "2**4=16"] liste

Le programme affiche en sortie la liste : ["2**3=8", "2**4=16"]

Instructions a D type
# Programme 4)
a=5 5 5 entier

D ="("+str(a)+"+X)"+chr(0x00B2)+"="+str(a**2)+"+"+str(2*a)+"X+X"+chr(0x00B2) " (5+X)²=25+10X+X² " chaîne

Le programme affiche en sortie la chaîne de caractère : (5+X)²=25+10X+X²

________________________________________________________________________________
P.S. 2020-2021 71 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
b) Programme Python (zone de script)

a=int(input("Saisir un nombre : "))


F ="("+str(a)+"+X)("+str(a)+"-X)="+str(a**2)+"-X"+chr(0x00B2)
print(F)

Nom du fichier : Exercice_donnees_05.py

Entrée et/ou Sortie Python (zone de script)

Saisir un nombre : 3
>>>
(3+X)(3-X)=9-X²

c) Nom du fichier : Exercice_donnees_05.py

Correction Exercice 06

Remarque

Programme Python (zone de script)

a = eval(input("Nombre d'annees-lumiere = "))


k = 365.25*24*60*60*299792 * a
print(a, "annees-lumieres représentent", k, "kilometres.")

Nom du fichier : Exercice_donnees_06.py

Entrée et/ou Sortie Python (console)

Nombre d'annees-lumiere = 3
>>>
3 annees-lumieres representent 28382148057600.0 kilometres.

________________________________________________________________________________
P.S. 2020-2021 72 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 07

Programme Python (zone de script)

# Partie a)

n=eval(input("Entrer un nombre n à deux chiffres : "))

x=n%10
y=n//10%10
p=x*10**1+y*10**0

print("Si n=",n,"alors p=",p)

# Partie b)

n=eval(input("Entrer un nombre n à trois chiffres : "))

x=n%10
y=n//10%10
z=n//100%10
p=x*10**2+y*10**1+z*10**0

print("Si n=",n,"alors p=",p)

Nom du fichier : Exercice_donnees_06.py

Entrée et/ou Sortie Python (console)

Entrer un nombre n a deux chiffres : 23


>>>
Si n= 23 alors p= 32

Entrer un nombre n a trois chiffres : 367


>>>
Si n= 367 alors p= 763

________________________________________________________________________________
P.S. 2020-2021 73 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 08

Programme Python (zone de script)

h = eval(input("Entrer la hauteur en m = "))


l = eval(input("Entrer la longueur en m = "))
p = eval(input("Entrer la profondeur en m = "))

S = 2 * (l + p) * h
n = S // 25 + 1

print("Pour une hauteur de",h,"m, une longueur de"\


,l,"m et une profondeur de",p,"m")
print(",il faut prevoir", n, "pots pour cette surface de"\
,S, "metres carres.")

Nom du fichier : Exercice_donnees_08.py

Entrée et/ou Sortie Python (console)

Entrer la hauteur en m = 7
Entrer la longueur en m = 8
Entrer la profondeur en m = 9

>>>
Pour une hauteur de 7 m, une longueur de 8 m et une profondeur de 9 m
,il faut prevoir 10 pots pour cette surface de 238 metres carres.

________________________________________________________________________________
P.S. 2020-2021 74 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Corrections des activités et exercices
1.3.5 Instructions conditionnelles

Correction Exercice 01

Programme Python (zone de script)

# Version 01
n=eval(input("Entrez un nombre entier positif : "))
if n%2==0:
print(n,"est pair")
else:
print(n,"est impair")

# Version 02
n=eval(input("Entrez un nombre entier positif : "))
q=n//2
if n%2==0:
print(n,"est pair car ",n,"=2*",q,"+0")
else:
print(n,"est impair car ",n,"=2*",q,"+1")

Nom du fichier : Exercice_Test_01.py

Entrée et/ou Sortie Python (console)

Entrez un nombre entier positif : 45


>>>
45 est impair

Entrez un nombre entier positif : 44


>>>
44 est pair

Entrez un nombre entier positif : 45


>>>
45 est impair car 45 =2* 22 +1

Entrez un nombre entier positif : 46


>>>
46 est pair car 46 =2* 23 + 0

________________________________________________________________________________
P.S. 2020-2021 75 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 02

Programme Python (zone de script)

x=eval(input("Entrez la préimage x="))


if x>=0:
print("La valeur absolue de x=",x,"vaut",x,".")
else:
print("La valeur absolue de x=",x,"vaut",-x,".")

Nom du fichier : Exercice_Test_02.py

Entrée et/ou Sortie Python (console)

Entrez la préimage x=45


>>>
La valeur absolue de x= 45 vaut 45 .

Entrez la préimage x=-45


>>>
La valeur absolue de x= -45 vaut 45 .

________________________________________________________________________________
P.S. 2020-2021 76 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 03

Programme Python (zone de script)

# Version 01

n=eval(input("Entrez un nombre : "))


if n==10:
print(n,"est égal à 10")
else:
if n<10 :
print(n,"est plus petit que 10")
else:
print(n,"est plus grand que 10")

# Version 02

n=eval(input("Entrez un nombre : "))


if n==10:
print(n,"est égal à 10")
elif n<10:
print(n,"est plus petit que 10")
else:
print(n,"est plus grand que 10")

Nom du fichier : Exercice_Test_03.py

Entrée et/ou Sortie Python (console)

Entrez un nombre : 123


>>>
123 est plus grand que 10

Entrez un nombre : 10
>>>
10 est égal à 10

Entrez un nombre : 3
>>>
3 est plus petit que 10

________________________________________________________________________________
P.S. 2020-2021 77 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 04

Programme Python (zone de script)

# Version 01
a=eval(input("Entrez le coefficient a : "))
b=eval(input("Entrez le coefficient b : "))
if a==0:
if b==0:
print("L' équation ",a,"*x+",b,"=0 a une infinité de solutions dans les réels.")
else:
print("L' équation ",a,"*x+",b,"=0 n'a pas de solution dans les réels.")
else:
print("L' équation ",a,"*x+",b,"=0 a une solution dans les réels qui est ",-b/a)

# Version 02
a=eval(input("Entrez le coefficient a : "))
b=eval(input("Entrez le coefficient b : "))
if a==0 and b==0 :
print("L' équation ",a,"*x+",b,"=0 a une infinité de solutions dans les réels.")
elif a==0 and b!=0 :
print("L' équation ",a,"*x+",b,"=0 n'a pas de solution dans les réels.")
else:
print("L' équation ",a,"*x+",b,"=0 a une solution dans les réels qui est x=",-b/a)

Nom du fichier : Exercice_Test_04.py

Entrée et/ou Sortie Python (console)

Entrez le coefficient a : 3
Entrez le coefficient b : 4
>>>
L' équation 3 *x+ 4 =0 a une solution dans les réels qui est -1.3333333333333333

Entrez le coefficient a : 0
Entrez le coefficient b : 0
>>>
L' équation 0 *x+ 0 =0 a une infinité de solutions dans les réels.

Entrez le coefficient a : 0
Entrez le coefficient b : 6
>>>
L' équation 0 *x+ 6 =0 n'a pas de solution dans les réels.

________________________________________________________________________________
P.S. 2020-2021 78 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 05

Programme Python (zone de script)

import math as mt
a=eval(input("Entrez le coefficient a : "))
b=eval(input("Entrez le coefficient b : "))
c=eval(input("Entrez le coefficient c : "))
Delta=b**2-4*a*c
if Delta>0:
print("L'équation",a,"x^2+",b,"x+",c,"=0 \
a deux solutions dans les réels qui sont x1=",\
(-b-mt.sqrt(Delta))/(2*a)," et x2=",(-b+mt.sqrt(Delta))/(2*a))
elif Delta==0:
print("L'équation ",a,"x^2+",b,"x+",c," =0\
a une solution dans les réels qui est x=",(-b)/(2*a))
else:
print("L'équation ",a,"x^2+",b,"x+",c," =0\
n'a pas de solution dans les réels.")

Nom du fichier : Exercice_Test_05.py

Entrée et/ou Sortie Python (console)

Entrez le coefficient a : 1
Entrez le coefficient b : 2
Entrez le coefficient c : 1
>>>
L'équation 1 x^2+ 2 x+ 1 =0 a une solution dans les réels qui est x = -1.0

Entrez le coefficient a : 1
Entrez le coefficient b : 1
Entrez le coefficient c : 1
>>>
L'équation 1 x^2+ 1 x+ 1 =0 n'a pas de solution dans les réels.

Entrez le coefficient a : 1
Entrez le coefficient b : 0
Entrez le coefficient c : -2
>>>
L'équation 1 x^2+ 0 x+ -2 =0 a deux solutions dans les réels qui sont
x1 = -1.4142135623730951 et x2 = 1.4142135623730951

________________________________________________________________________________
P.S. 2020-2021 79 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Corrections des activités et exercices
1.3.6 Instructions répétitives

Correction Exercice 01

Programme Python (zone de script)

# a) version 01 / boucle : for # b) version 01 / boucle : for

L=[ ] L=[ ]
for i in range(2254,2289,2): for i in range(131,256,2):
L.append(i) L.append(i)
print(L) print(L)

# a) version 02 / boucle : while # b) version 02 / boucle : while

L=[ ] L=[ ]
i=2254 i=131
while i<=2288: while i<=255:
L.append(i) L.append(i)
i=i+2 i=i+2
print(L) print(L)

Nom du fichier : Exercice_Boucle_01.py

Entrée et/ou Sortie Python (console)

>>>
[2254, 2256, 2258, 2260, 2262, 2264, 2266, 2268, 2270, 2272, 2274, 2276, 2278,
2280, 2282, 2284, 2286, 2288]

>>>
[131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163,
165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197,
199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231,
233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255]

________________________________________________________________________________
P.S. 2020-2021 80 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 02

Programme Python ( zone de script)

n=eval(input("Entrez le nombre entier n="))

Chaine=""
Somme=0
Terme=0
for k in range(0,n,1):
Chaine=Chaine+"2^"+str(k)+"+"
Terme=2**k
Somme=Somme+Terme
Chaine=Chaine+"2^"+str(n)
Somme=Somme+2**n
print(Chaine,"=",Somme)

Nom du fichier : Exercice_Boucle_02.py

Entrée et/ou Sortie Python (console)

Entrez le nombre entier n=5


>>>
2^0+2^1+2^2+2^3+2^4+2^5 = 63

Entrez le nombre entier n=10


>>>
2^0+2^1+2^2+2^3+2^4+2^5+2^6+2^7+2^8+2^9+2^10 = 2047

________________________________________________________________________________
P.S. 2020-2021 81 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 03

Programme Python (zone de script)

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

Nom du fichier : Exercice_Boucle_03.py

Entrée et/ou Sortie Python (console)


>>>

Livret de 1
1*1=1
1*2=2
1*3=3
1*4=4
1*5=5
1*6=6
1*7=7
1*8=8
1*9=9
1 * 10 = 10

Livret de 2
2*1=2
2*2=4
2*3=6
2*4=8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
2 * 10 = 20
…..

Correction Exercice 04
Entrée et/ou Sortie Python (console)

Entrée : n (entier) Sortie : chaîne de caractère

________________________________________________________________________________
P.S. 2020-2021 82 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Corrections des activités et exercices
1.3.7 Fonctions

Correction Exercice 01

Programme Python (zone de script)

import math as mt

# a) Fonctions f , g , fog et gof

def f(x):
if x>=1:
return x+1
else:
return -x**2
def g(x):
return mt.sin(x)
def f_o_g(x):
return f(g(x))
def g_o_f(x):
return g(f(x))

# b) Tableau des valeurs des fonctions f , g , fog et gof

def tab_val(y,a,b,n):
X=[ ]
Y=[ ]
x=a
pas=(b-a)/n
for k in range(n+1):
X.append(x)
Y.append(y(x))
x=x+pas
return X, Y

a,b,n = -1,3,8
print(repr("x").ljust(10),\
repr("f(x)").ljust(10),\
repr("g(x)").ljust(25),\
repr("fog(x)").ljust(25),\
repr("gof(x)").ljust(25))
print("")
for k in range(n+1):
print(repr(tab_val(f,a,b,n)[0][k]).ljust(10),\
repr(tab_val(f,a,b,n)[1][k]).ljust(10),\
repr(tab_val(g,a,b,n)[1][k]).ljust(25),\
repr(tab_val(f_o_g,a,b,n)[1][k]).ljust(25),\
repr(tab_val(g_o_f,a,b,n)[1][k]).ljust(25))

Nom du fichier : Exercice_fonctions_01.py

________________________________________________________________________________
P.S. 2020-2021 83 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Entrée et/ou Sortie Python (console)

>>>
'x' 'f(x)' 'g(x)' 'fog(x)' 'gof(x)'

-1 -1 -0.8414709848078965 -0.7080734182735712 -0.8414709848078965


-0.5 -0.25 -0.479425538604203 -0.22984884706593015 -0.24740395925452294
0.0 -0.0 0.0 -0.0 -0.0
0.5 -0.25 0.479425538604203 -0.22984884706593015 -0.24740395925452294
1.0 2.0 0.8414709848078965 -0.7080734182735712 0.9092974268256817
1.5 2.5 0.9974949866040544 -0.9949962483002227 0.5984721441039564
2.0 3.0 0.9092974268256817 -0.826821810431806 0.1411200080598672
2.5 3.5 0.5984721441039564 -0.3581689072683868 -0.35078322768961984
3.0 4.0 0.1411200080598672 -0.01991485667481699 -0.7568024953079282

________________________________________________________________________________
P.S. 2020-2021 84 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 02

Programme Python (zone de script)

# Calcul des diviseurs d un nombre entier positif n

def diviseurs(n):
L=[ ]
for i in range(1,n+1,1):
if n%i==0:
L.append(i)
return L

# -----------------------------

import math as mt

n=eval(input("Entrez le nombre entier positif dont\


vous souhaitez connaître les diviseurs : "))

while n != mt.floor(n) or n<0 :


n=eval(input("Entrez le nombre entier positif dont \
vous souhaitez connaître les diviseurs :"))

print("L'ensemble des diviseurs de",n," : ",diviseurs(n))

Nom du fichier : Exercice_fonctions_02.py

Entrée et/ou Sortie Python (console)


diviseurs(60)
>>>
[1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60]

Entrez le nombre entier positif dont vous souhaitez connaître les diviseurs : 60
>>>
L'ensemble des diviseurs de 60 : [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60]

diviseurs(2**17-1)
>>>
[1, 131071]

diviseurs(2**18-1)
>>>
[1, 3,7,9,19,21,27,57,63,73,133,171,189,219,399,511,513,657,1197,1387,1533,1971,3591,
4161,4599,9709,12483,13797,29127,37449,87381,262143]

________________________________________________________________________________
P.S. 2020-2021 85 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 03

Programme Python (zone de script)

def ARRONDI_1_10(n):
y=int(1000*n)
z=y%100
if z>=50:
t=((y//100)+1)/10
else:
t=(y//100)/10
return t

Nom du fichier : Exercice_fonctions_03.py

Entrée et/ou Sortie Python (console)

ARRONDI_1_10(4.546)
>>> 4.5

ARRONDI_1_10(4.557)
>>> 4.6

Correction Exercice 04

Programme Python (zone de script)

# Version 01 / Fonction Fibonacci non recursive

def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a

# Version 02 / Fonction Fibonacci recursive

def fibR(n):
if n==1 or n==2:
return 1
return fibR(n-1)+fibR(n-2)

Nom du fichier : Exercice_fonctions_04.py

Entrée et/ou Sortie Python (console)

>>> fib(11) >>> fibR(11)


89 89

________________________________________________________________________________
P.S. 2020-2021 86 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 05

Programme Python (zone de script)

# a) Somme partielle d'une suite arithmétique

def SommeA(x,r,n):
somme=x
terme=x
if n==0:
return somme
else:
for k in range(1,n+1):
terme=terme+r
somme=somme+terme
return somme

# b) Somme partielle d'une suite geométrique

def SommeG(x,q,n):
somme=x
terme=x
if n==0:
return somme
else:
for k in range(1,n+1):
terme=terme*q
somme=somme+terme
return somme

Nom du fichier : Exercice_fonctions_05.py

c) Entrée et/ou Sortie Python (console)

SommeA(1,2,8) SommeG(1,2,10)
>>> 81 >>> 2047

SommeA(5,5,19) SommeG(1/2,1/2,9)
>>> 1050 >>> 0.9990234375

________________________________________________________________________________
P.S. 2020-2021 87 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 06

a) Programme Python (zone de script)

def f(x):
return x**2-2

def balayage(a,epsilon):
if f(a)<0:
while f(a)<0:
a=a+epsilon
else :
while f(a)>0:
a=a+epsilon
return a-epsilon, a

Nom du fichier : Exercice_fonctions_06.py

b) Entrée et/ou Sortie Python (console)


) x 2 − 3 continue sur [1;2] et
f ( x= f ( 1) ⋅ f ( 2 ) < 0

balayage(1,10**-5)
>>> (1.7320500000047958, 1.7320600000047959)

________________________________________________________________________________
P.S. 2020-2021 88 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Corrections des activités et exercices
1.3.9 Chaînes de caractères

Correction Exercice 01

Programme Python (zone de script)

# Version 01

def TEST_PALIN_1(mot):
mot1 = ""
for i in range(len(mot)):
mot1 = mot[i] + mot1
if mot1 == mot:
return True
else:
return False

# Version 02

def TEST_PALIN_2(mot):
mot1 = ""
for lettre in mot:
mot1 = lettre + mot1
if mot1 == mot:
return True
else:
return False

Nom du fichier : Exercice_chaînes_01.py

Entrée et Sortie Python (console)

TEST_PALIN_1("ciel")
>>> False

TEST_PALIN_1("kayak")
>>> True

TEST_PALIN_1("bonjour")
>>> False

TEST_PALIN_1("ressasser")
>>> True

________________________________________________________________________________
P.S. 2020-2021 89 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 02

Programme Python (zone de script)

def COMPTEUR(txt):
i=0
for lettre in txt :
if lettre == ' 'or lettre == '.':
i=i+1
return i

Nom du fichier : Exercice_chaînes_02.py

Entrée et/ou Sortie Python (console)

COMPTEUR("Il fait beau demain.")


>>> 4

Correction Exercice 03

Programme Python (zone de script)

def INITIALES(txt):
initiales = ""
for lettre in txt:
if 65 <= ord(lettre) <=90:
initiales = initiales + lettre
return initiales

Nom du fichier : Exercice_chaînes_03.py

Entrée et/ou Sortie Python (console)

INITIALES("Eric Dupont")
>>> 'ED'

________________________________________________________________________________
P.S. 2020-2021 90 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 04

Programme Python (zone de script)

def MAJ_MIN(txt):
inverse = ""
for lettre in txt:
a = ord(lettre)
if 65 <= a <= 90: # C'est une majuscule
a = a + 32
elif 97 <= a <= 122: # C'est une minuscule
a = a - 32
inverse = inverse + chr(a)
return inverse

Nom du fichier : Exercice_chaînes_04.py

Entrée et/ou Sortie Python (console)

MAJ_MIN("Eric Dupont")
>>> "eRIC dUPONT"

________________________________________________________________________________
P.S. 2020-2021 91 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Corrections des activités et exercices
1.3.10 Listes

Correction Exercice 01

Programme Python (zone de script)

def SUPPR_MIN(L):
for i in range(len(L)):
if min(L)==L[i]:
imin=i
L.pop(imin)
return L

Nom du fichier : Exercice_listes_01.py

Entrée et/ou Sortie Python (console)

SUPPR_MIN([3, 5, 4.5, 2, 2, 6, 2.5, 4.5])


>>> [3, 5, 4.5, 2, 6, 2.5, 4.5]

SUPPR_MIN([3, 5, 4.5, 5, 5, 6, 5.5, 4.5])


>>> [5, 4.5, 5, 5, 6, 5.5, 4.5]

________________________________________________________________________________
P.S. 2020-2021 92 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 02

Programme Python (zone de script)

def ARRONDI_1_10(n):
y=int(1000*n)
z=y%100
if z>=50:
t=((y//100)+1)/10
else:
t=(y//100)/10
return t

def MOY_1_10(L):
somme=0
for e in L:
somme=somme+e
moy=somme/len(L)
return moy, ARRONDI_1_10(moy)

Nom du fichier : Exercice_listes_02.py

Entrée et/ou Sortie Python (console)

MOY_1_10([3,5,4.5,2,6,2.5,4.5])
>>> (3.9285714285714284, 3.9)

MOY_1_10([2,2,3,3,4,4,5])
>>> (3.2857142857142856, 3.3)

________________________________________________________________________________
P.S. 2020-2021 93 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 03

Programme Python (zone de script)

#---Dechiffrement message--------# #---Chiffrement message--------#

ch1="sd?ip!sov!suos!ros?rt!nu!a!y!li" ch1="il y a un tresor sous vos pieds"


print("ch1=",ch1) print("ch1=",ch1)
print("") print("")

L1=CONV_CL(ch1) L1=CONV_CL(ch1)
print("L1=",L1) print("L1=",L1)
print("") print("")

L2=SUB(L1,"?","e") L2=SUB(L1,"e","?")
print("L2=",L2) print("L2=",L2)
print("") print("")

L3=SUB(L2,"!"," ") L3=SUB(L2," ","!")


print("L3=",L3) print("L3=",L3)
print("") print("")

L4=INV(L3) L4=INV(L3)
print("L4=",L4) print("L4=",L4)
print("") print("")

ch5=CONV_LC(L4) ch5=CONV_LC(L4)
print("ch5=",ch5) print("ch5=",ch5)
print("") print("")

Nom du fichier : Exercice_listes_03.py

Entrée et/ou Sortie Python (console)

ch1= sd?ip!sov!suos!ros?rt!nu!a!y!li ch1= il y a un tresor sous vos pieds

L1= ['s', 'd', '?', 'i', 'p', '!', 's', 'o', 'v', '!', 's', 'u', 'o', 's', '!', 'r', 'o', L1= ['i', 'l', ' ', 'y', ' ', 'a', ' ', 'u', 'n', ' ', 't', 'r', 'e', 's', 'o', 'r', ' ',
's', '?', 'r', 't', '!', 'n', 'u', '!', 'a', '!', 'y', '!', 'l', 'i'] 's', 'o', 'u', 's', ' ', 'v', 'o', 's', ' ', 'p', 'i', 'e', 'd', 's']

L2= ['s', 'd', 'e', 'i', 'p', '!', 's', 'o', 'v', '!', 's', 'u', 'o', 's', '!', 'r', 'o', L2= ['i', 'l', ' ', 'y', ' ', 'a', ' ', 'u', 'n', ' ', 't', 'r', '?', 's', 'o', 'r', ' ',
's', 'e', 'r', 't', '!', 'n', 'u', '!', 'a', '!', 'y', '!', 'l', 'i'] 's', 'o', 'u', 's', ' ', 'v', 'o', 's', ' ', 'p', 'i', '?', 'd', 's']

L3= ['s', 'd', 'e', 'i', 'p', ' ', 's', 'o', 'v', ' ', 's', 'u', 'o', 's', ' ', 'r', 'o', L3= ['i', 'l', '!', 'y', '!', 'a', '!', 'u', 'n', '!', 't', 'r', '?', 's', 'o', 'r', '!',
's', 'e', 'r', 't', ' ', 'n', 'u', ' ', 'a', ' ', 'y', ' ', 'l', 'i'] 's', 'o', 'u', 's', '!', 'v', 'o', 's', '!', 'p', 'i', '?', 'd', 's']

L4= ['i', 'l', ' ', 'y', ' ', 'a', ' ', 'u', 'n', ' ', 't', 'r', 'e', 's', 'o', 'r', ' ', L4= ['s', 'd', '?', 'i', 'p', '!', 's', 'o', 'v', '!', 's', 'u', 'o', 's', '!', 'r', 'o',
's', 'o', 'u', 's', ' ', 'v', 'o', 's', ' ', 'p', 'i', 'e', 'd', 's'] 's', '?', 'r', 't', '!', 'n', 'u', '!', 'a', '!', 'y', '!', 'l', 'i']

ch5= il y a un tresor sous vos pieds ch5= sd?ip!sov!suos!ros?rt!nu!a!y!li

________________________________________________________________________________
P.S. 2020-2021 94 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Corrections des activités et exercices
1.3.11 Graphismes

Correction Exercice 01

Programme Python (zone de script)

# Fonction f, g , h , j , k import matplotlib.pyplot as plt

import math as mt a,b,n=-5,5,100


def f(x):
if x>=0: plt.plot(tab_val(f,a,b,n)[0],tab_val(f,a,b,n)[1],\
return x 'g-',linewidth=3,label="f")
else: plt.plot(tab_val(g,a,b,n)[0],tab_val(g,a,b,n)[1],\
return -x 'k--',linewidth=3,label="g")
def g(x): plt.plot(tab_val(h,0,b,n)[0],tab_val(h,0,b,n)[1],\
return mt.sin(x) 'b-.',linewidth=3,label="h")
def h(x):
plt.plot(tab_val(j,a,b,n)[0],tab_val(j,a,b,n)[1],\
return mt.sqrt(x)
def j(x): 'r-',linewidth=3,label="j")
return f(x+2) plt.plot(tab_val(k,a,b,n)[0],tab_val(k,a,b,n)[1],\
def k(x): 'm-',linewidth=3,label="k")
return 3*g(2*x)
plt.axis([-5,7,-4,5])
# Affichage du graphique de plt.xlabel("x", fontsize=15)
# f, g, h, j, k dans le même repère
plt.ylabel("y", fontsize=15)
def tab_val(y,a,b,n): plt.legend(fontsize=15)
X=[ ] plt.grid(True)
Y=[ ] plt.xticks(range(-5,6,1))
x=a plt.yticks(range(-4,6,1))
pas=(b-a)/n
for k in range(n+1):
plt.show()
X.append(x)
Y.append(y(x))
x=x+pas
return X, Y
Nom du fichier : Exercice_Graphismes_01.py

Entrée et/ou Sortie Python (console ou dans une fenêtre séparée)

________________________________________________________________________________
P.S. 2020-2021 95 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Correction Exercice 02

Programme Python (zone de script)

import matplotlib.pyplot as plt

t=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]

T1=[20,18,16,14,12,10,10,11,12,13,14,16,18,20,22,24,26,28,28,26,24,22,21,20]

T2=[5,3,3,2,1,0,-4,-2,-2,-1,0,2,4,6,8,7,10,8,7,7,6,6,5,4]

plt.figure(figsize=(8,6),dpi=100)

for k in range(len(t)):
p1, = plt.plot([t[k]-0.2,t[k]-0.2], [0, T1[k]], 'r-', linewidth=10)
p2, = plt.plot([t[k]+0.2,t[k]+0.2], [0, T2[k]], 'b-', linewidth=10)

plt.xlabel("temps")
plt.ylabel("Temperatures")
plt.xticks(range(0, 24, 1), fontsize=12)
plt.yticks(range(-6, 31, 2), fontsize=12)
plt.legend([p1,p2],['Temperatures en ete (rouge)','Temperatures en hiver (bleu)'])

plt.show()

Nom du fichier : Exercice_Graphismes_03.py

Entrée et/ou Sortie Python (console ou dans une fenêtre séparée)

________________________________________________________________________________
P.S. 2020-2021 96 Corrections_Intro_Algo_Progra_Python 3 / AM_OS
Notes personnelles

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________
Notes personnelles

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

Vous aimerez peut-être aussi