Introduction à la Programmation Python
Introduction à la Programmation Python
Python est un langage programmation de haut niveau basé sur le langage C. C’est un
langage de programmation interprété, interactif et orienté objet. Il a été créé vers la fin des
années 1980 par Guido van Rossum, aux Pays-Bas et a mis du temps à gagner ses adeptes.
Ces dernières années ont pourtant vu un boom dans le classement de Python, et cela en
grande partie est due grâce à ses possibilités dans le Machine Learning, la science des données,
et dans l’IA (Intelligence Artificielle).
Le nom Python vient d’un hommage à la série télévisée Monty Python’s Flying Circus
dont Guido van Rossum est fan.
Langage polyvalent de haut niveau, Python trouve des utilisations dans la création
d’applications web, l’analyse de données et le développement d’algorithmes. Il possède une
syntaxe facile à utiliser et met l’accent sur la lisibilité et la simplicité du code : cela en fait un
candidat idéal pour les développeurs débutants, en particulier ceux qui souhaitent faire carrière
dans l’IA.
Python a la réputation d’être très fiable et efficace, ce qui le rend populaire tout autant
auprès des grandes entreprises que des start-ups. Plusieurs bibliothèques Python sont à la
disposition des développeurs : ces bibliothèques permettent d’accélérer diverses tâches dans le
domaine de la construction d’algorithmes d’IA et de la liaison aux API. De plus, il peut être
utilisé pour automatiser certaines activités, notamment certaines tâches quotidiennes
chronophages.
Enfin, Python peut également être utilisé pour le développement web. En effet, il est
souvent utilisé pour le web scraping : quelque chose qui pourrait prendre des heures à coder en
PHP ne prendra que quelques minutes avec Python.
Google décrit Python comme son langage dynamique le plus important et a même
développé son propre « Python Style Guide ». Même la NASA utilise Python : sur son site web
[Link], elle répertorie déjà 63 projets développés avec Python.
Idéal pour les fichiers texte et utilise des types intégrés utiles (listes, dictionnaires).
C’est un langage Multi-usager (Web, GUI, Scripting, etc.), fortement typé et typé
dynamiquement, axé sur la lisibilité et la productivité.
Toutes ces caractéristiques font que Python est désormais enseigné dans de nombreuses
formations, depuis l’enseignement secondaire jusqu’à l’enseignement supérieur.
Une fois installé, Python peut être utilisé en deux modes : le mode interactif ou le mode
script.
>>>
Le codage avec le shell est parfait pour l'apprentissage du langage et pour tester les
modules.
Documentation
Un script Python peut être saisie dans un fichier d’extension .py et exécuté avec
l’interpréteur python (Python Shell). Pour ce faire :
print("Hello world!")
Enregistrez votre fichier sous le nom [Link], puis quittez l’éditeur de texte. Pour
exécuter votre script, ouvrez un shell et entrez la commande : python [Link]
IDLE n’est rien d’autre qu’un éditeur de texte avec coloration syntaxique, l'auto
complétion, et l'indentation (pour la création de fichiers python : scripts). C’est aussi un
interpréteur (pour exécuter les scripts) et un débogueur intégré avec avancement par étape,
point d'arrêts persistants et pile d'appels (pour tester les scripts).
Exemple
Nota : A partir du menu File de IDLE Shell, vous pouvez accéder à un éditeur de texte (File +
New File) et saisir les instructions d’un programme et ensuite l’exécuter (Run).
➢ Les commentaires vont du caractère # jusqu’à la fin de la ligne. On peut utiliser les
commentaires en bloc comme en C (/* ... */).
➢ Le code # coding= latin1, permet d’utiliser des accents dans le code Python.
#!/usr/bin/python
# coding= latin1 #
Les modules utilises
import sys, socket #
Le code utilisateur if
(a == 1) :
# sous bloc
# indente (1 ou 4 espaces)
Exemple :
input("Quel âge avez-vous ? ")
print("Je suis fier de vous")
Chapitre 2 : Variables et instructions
2.1. Variables
Une variable est une zone de la mémoire dans laquelle une valeur est stockée. Aux yeux
du programmeur, cette variable est définie par un nom, alors que pour l’ordinateur, il s’agit en
fait d’une adresse (i.e. une zone particulière de la mémoire). En Python, la déclaration d’une
variable et son initialisation (c’est-à-dire la première valeur que l’on va stocker dedans) se font
en même temps. Pour vous en convaincre, testez les instructions suivantes après avoir lancé
l’interpréteur :
>>> x = 5
>>> x
5
Dans cet exemple, nous avons déclaré, puis initialisé la variable x avec la valeur 5.
Notez bien qu’en réalité, il s’est passé plusieurs choses :
➢ Python a deviné que la variable était un entier. On dit que Python est un langage au
typage dynamique.
➢ Python a alloué (i.e. réservé) l’espace en mémoire pour y accueillir un entier (chaque
type de variable prend plus ou moins d’espace en mémoire), et a fait en sorte qu’on
puisse retrouver la variable sous le nom x
➢ Python a assigné la valeur 5 à la variable x.
>>> y = 3.14
>>> y
3.14
>>> a = "Bonjour"
>>> a
'Bonjour'
>>> b = 'Salut chef'
>>> b
'Salut chef'
>>> c = '''Alpha'''
>>> c
'Alpha'
Un bon programmeur doit veiller à ce que ses lignes d’instructions soient faciles à lire.
Sous Python, les noms de variables doivent en outre obéir à quelques règles simples :
En plus de ces règles, il faut encore ajouter que vous ne pouvez pas utiliser comme nom
de variables les 33 « mots réservés » ci-dessous (ils sont utilisés par le langage lui-même) :
and as assert break class continue def
del elif else except False finally for
from global if import in is lambda
None nonlocal not or pass raise return
True try while with yield
Les termes « affecter une valeur » ou « assigner une valeur » à une variable sont
équivalents. Ils désignent l’opération par laquelle on établit un lien entre le nom de la variable
et sa valeur (son contenu).
Les trois noms de variables sont des références, mémorisées dans une zone particulière
de la mémoire que l’on appelle espace de noms, alors que les valeurs correspondantes sont
situées ailleurs, dans des emplacements parfois fort éloignés les uns des autres. Exemple
Nota : Sous Python, il n’est pas nécessaire d’écrire des lignes de programme spécifiques pour
définir le type des variables avant de pouvoir les utiliser.
Affectations multiples
Exemple :
>>> x = y = 7
>>> x
7
>>> y
7
Affectations parallèles
On peut aussi effectuer des affectations parallèles à l’aide d’un seul opérateur :
>>> a, b = 4, 8.33
>>> a
4
>>> b
8.33
Dans cet exemple, les variables a et b prennent simultanément les nouvelles valeurs 4
et 8,33.
Exemple : a, b = 7.3, 12
y = 3*a + b/5
Dans cet exemple, nous commençons par affecter aux variables a et b les valeurs 7,3 et
12. Comme déjà expliqué précédemment, Python assigne automatiquement le type « réel » à la
variable a, et le type « entier » à la variable b.
Python évalue chaque expression qu’on lui soumet, aussi compliquée soit-elle, et le
résultat de cette évaluation est toujours lui-même une valeur. À cette valeur, il attribue
automatiquement un type, lequel dépend de ce qu’il y a dans l’expression.
Dans l’exemple ci-dessus, y sera du type réel, parce que l’expression évaluée pour
déterminer sa valeur contient elle-même au moins un réel.
Les opérateurs Python ne sont pas seulement les quatre opérateurs mathématiques de
base. Il y a l’existence de l’opérateur de division entière //. Il faut encore ajouter l’opérateur **
pour l’exponentiation, ainsi qu’un certain nombre d’opérateurs logiques, des opérateurs
agissant sur les chaînes de caractères, des opérateurs effectuant des tests d’identité ou
d’appartenance, etc.
Les quatre opérations de base se font de manière simple sur les types numériques (nombres
entiers et réels) :
>>> x = 45
>>> x + 2
47
>>> y = 2.5
>>> x + y
47.5
>>> (x * 10) / y
180.0
Remarquez toutefois que si vous mélangez les types entiers et réels, le résultat est renvoyé
comme un réel (car ce type est plus général).
Pour les chaînes de caractères, deux opérations sont possibles, l’addition et la multiplication :
Attention : Vous voyez que les opérateurs + et * se comportent différemment selon qu’il s’agit
d’entiers ou de chaînes de caractères : 2 + 2 est une addition, '2' + '2' est une concaténation. On
appelle ce comportement surcharge des opérateurs.
Nota : Il est possible d’ajouter des variables dans une chaine de caractères. Pour cela, il faut
ajouter les balises suivantes :
➢ « %s » : Pour ajouter un string
➢ « %i » : Pour ajouter un nombre entier
➢ « %.5f » : Pour ajouter un nombre à virgule (ici, 5 correspond au nombre de décimales
voulues)
Exemple
>>>pi=3.145896614
>>>nom="Pi"
>>>sortie="La valeur de %s est de %f mais on peut l’arrondir à %.2f "%(nom, pi, pi)
>>>print(sortie)
c. Opérations illicites
Attention à ne pas faire d’opération illicite car vous obtiendriez un message d’erreur :
>>> 'toto' + 2
Traceback (most recent call last):
File "", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
Notez que Python vous donne le maximum d’information dans son message d’erreur.
Dans l’exemple précédent, il vous indique que vous ne pouvez pas mélanger des objets de type
str (string, donc des chaînes de caractères) avec des objets de type int (donc des entiers), ce qui
est assez logique.
Sous Python, les règles de priorité sont les mêmes que celles qui vous ont été enseignées
au cours de mathématique. Vous pouvez les mémoriser aisément à l’aide d’un « truc »
mnémotechnique, l’acronyme PEMDAS:
➢ P pour parenthèses. Ce sont elles qui ont la plus haute priorité. Elles vous permettent
donc de « forcer » l’évaluation d’une expression dans l’ordre que vous voulez. Ainsi
2*(3-1) = 4 , et (1+1)**(5-2) = 8.
➢ E pour exposants. Les exposants sont évalués ensuite, avant les autres opérations. Ainsi
2**1+1 = 3 (et non 4), et 3*1**10 = 3 (et non 59049 !).
➢ M et D pour multiplication et division, qui ont la même priorité. Elles sont évaluées
avant l’addition A et la soustraction S, lesquelles sont donc effectuées en dernier lieu.
Ainsi 2*3-1 = 5 (plutôt que 4), et 2/3-1 = -0.3333... (plutôt que 1.0).
➢ Si deux opérateurs ont la même priorité, l’évaluation est effectuée de gauche à droite.
Ainsi dans l’expression 59*100//60, la multiplication est effectuée en premier, et la
machine doit donc ensuite effectuer 5900//60, ce qui donne 98. Si la division était
effectuée en premier, le résultat serait 59 (rappelez-vous ici que l’opérateur // effectue
une division entière, et vérifiez en effectuant 59*(100//60).
2.4. Composition
Jusqu’ici nous avons examiné les différents éléments d’un langage de programmation,
à savoir : les variables, les expressions et les instructions, mais sans traiter de la manière dont
nous pouvons les combiner les unes avec les autres.
Or l’une des grandes forces d’un langage de programmation de haut niveau est qu’il
permet de construire des instructions complexes par assemblage de fragments divers. Ainsi par
exemple, si vous savez comment additionner deux nombres et comment afficher une valeur,
vous pouvez combiner ces deux instructions en une seule :
>>> print(17 + 3)
>>> 20
Cela n’a l’air de rien, mais cette fonctionnalité qui paraît si évidente va vous permettre
de programmer des algorithmes complexes de façon claire et concise.
Exemple :
Dans une expression, ce que vous placez à la gauche du signe égale doit toujours être
une variable, et non une expression. Cela provient du fait que le signe égale n’a pas ici la même
signification qu’en mathématique : comme nous l’avons déjà signalé, il s’agit d’un symbole
d’affectation (nous plaçons un certain contenu dans une variable) et non un symbole d’égalité.
Le symbole d’égalité (dans un test conditionnel, par exemple) sera évoqué un peu plus loin.
Par contre, écrire x = x + 1 est inacceptable en mathématique, alors que cette forme
d’écriture est très fréquente en programmation. L’instruction x = x + 1 signifie en l’occurrence
« augmenter la valeur de la variable x d’une unité » (ou encore : « incrémenter x »).
>>> a=2
>>> b=5
>>> a,b=b,a
>>> print(a,b)
(5, 2)
>>> x = 2
>>> type(x)
<class ‘int’>
>>> y = 2.0
>>> type(y)
<class ‘float’>
>>> z = '2'
>>> type(z)
<class ‘str’>
Faites bien attention, car pour Python, la valeur 2 (nombre entier) est différente de 2.0 (nombre
réel), de même que 2 (nombre entier) est différent de '2' (chaîne de caractères). Nous verrons
plus tard ce que signifie le mot class.
2.6. Conversion de types
Dans tout langage de programmation, on est souvent amené à convertir les types, c’està-dire
passer d’un type numérique à une chaîne de caractères ou vice-versa. En Python, rien de plus
simple avec les fonctions int(), float() et str(). Pour vous en convaincre, regardez ces exemples
:
>>> i = 3
>>> str(i)
'3'
>>> i = '456'
>>> int(i)
456
>>> float(i)
456.0
>>> i = '3.1416'
>>> float(i)
3.1416
On verra au chapitre sur les fichiers que ces conversions sont essentielles. En effet, lorsqu’on
lit ou écrit des nombres dans un fichier, ils sont considérés comme du texte. Toute conversion
d’une variable d’un type en un autre est appelé casting en anglais, il se peut que vous croisiez
ce terme si vous allez consulter d’autres ressources.
Bien entendu, on peut toujours essayer d’examiner toutes les situations possibles au sein
du programme et prendre les décisions qui s’imposent. Mais outre le fait que le concepteur du
programme risque d’omettre certaines situations, la démarche peut devenir très vite fastidieuse
et les codes quelque peu complexes. Le programme peut être rendu quasiment illisible si sa
tâche principale est masquée par de nombreuses instructions de traitement de circonstances
exceptionnelles.
Par ailleurs, dans des programmes relativement importants, il est fréquent que le
traitement d’une anomalie ne puisse pas être fait par la méthode l’ayant détectée, mais
seulement par une méthode ayant provoqué son appel. Cette dissociation entre la détection
d’une anomalie et son traitement peut obliger le concepteur à utiliser des valeurs de retour de
méthode servant de "compte rendu". Là encore, le programme peut très vite devenir complexe;
de plus, la démarche ne peut pas s’appliquer à des méthodes sans valeur de retour donc, en
particulier, aux constructeurs.
La situation peut encore empirer lorsque l’on développe des classes réutilisables
destinées à être exploitées par de nombreux programmes.
Le langage Python dispose d’un mécanisme très souple nommé gestion d’exception, qui
permet à la fois :
Exercice 2.3
a+b/ca+
c / b (a + c)
/ba+b/a
+ b (a + b) /
(a + b)
Exercice 2.4
Ecrire un programme Python qui demande un nombre à l’utilisateur, puis qui calcule et
affiche le carré de ce nombre.
Exercice 2.5
Écrire un programme Python qui demande deux nombres entiers et qui fournit leur
somme et leur produit.
Exercice 2.6
Ecrire un programme Python qui demande à l'utilisateur de taper 5 entiers et qui affiche
leur moyenne.
Exercice 2.7
Ecrire un programme Python qui permet d’introduire à l’ordinateur son prénom et nom
son à partir du clavier. Demander ensuite à l’ordinateur de les afficher à l’écran.
Exercice 2.8
Ecrire un programme Python qui permet d’introduire à l’ordinateur les cotes sur 10
obtenues respectivement à l’examen et aux travaux pratiques dans un cours. Demander ensuite
à l’ordinateur de calculer la cote globale obtenue sur 20 points dans ce cours et de l’afficher à
l’écran.
Exercice 2.9
Ecrire un programme Python qui prend une somme en dollars et la décompose en billets
de 10, 5 et 1 dollar.
Exercice 2.11
Ecrire un programme Python qui demande à l'utilisateur de taper le prix prixHT d'un
kilo de tomates, le nombre de kilos de tomates achetés, le taux de tva (Exemple 10%, 16%, ...).
L’algorithme affiche alors le prix total prixTTC des marchandises. Faire en sorte que des
libellés apparaissent clairement.
Exercice 2.12
Exercice 2.13
Exercice 2.14
Exercice 2.15
A la naissance de Donel, son grand-père Yan, lui ouvre un compte bancaire. Ensuite, à
chaque anniversaire, le grand père de Donel verse sur son compte 100 dollars, auxquels il ajoute
le double de l’âge de Donel. Par exemple, lorsqu’elle a deux ans, il lui verse 104 dollars. Ecrire
un programme Python qui permette de déterminer quelle somme aura Donel lors de son nième
anniversaire.
Chapitre 3 : Structures de contrôle
3.1. Opérateurs de comparaison
Python est capable d’effectuer toute une série de comparaisons entre le contenu de deux
variables, telles que :
Opérateur Signification
== égal à
!= différent de
> supérieur à
>= supérieur ou égal à
< inférieur à
<= inférieur ou égal à
Observez l’exemple suivant avec des nombres entiers.
>>> x = 5
>>> x == 5
True
>>> x > 10
False
>>> x < 10
True
Python renvoie la valeur True si la comparaison est vraie et False si elle est fausse. True
et False sont des booléens.
Faites bien attention à ne pas confondre l’opérateur d’affectation = qui affecte une
valeur à une variable et l’opérateur de comparaison == qui compare les valeurs de deux
variables.
Vous pouvez également effectuer des comparaisons sur des chaînes de caractères.
Dans le cas des chaînes de caractères, a priori seuls les tests == et != ont un sens. En
fait, on peut aussi utiliser les opérateurs, <= et >=. Dans ce cas l’ordre alphabétique est pris en
compte, par exemple :
Nota : Il est possible de se servir des opérateurs logiques ci-dessus pour faire la combinaison
des conditions.
if condition:
bloc_instruction1 else
:
bloc_instruction2
Indentation de bloc
➢ Un bloc est défini par une indentation obtenue en décalant le début des instructions vers
la droite grâce à des espaces en début de ligne (habituellement 4 espaces mais ce n’est
pas obligatoire).
➢ Toutes les instructions d’un même bloc doivent être indentées exactement au même
niveau (c’est-à-dire décalées à droite d’un même nombre d’espaces). L’irrespect de
l’indentation génère une erreur.
>>>
Note sur 20 : 15
J'ai la moyenne
Fin du programme
3.2.2. Structure à deux niveaux de test
if condition1:
if condition1_1: bloc_instruction1
else: bloc_instruction2
else:
bloc_instruction3
Exemple : [Link] note =
float(input("Note sur 20 : ")) if
note>=10.0:
if note>=13: print("mention
Bien")
else: print("mention Passable")
else:
print("C'est en dessous de la moyenne")
print("Fin du programme")
>>>
Note sur 20 : 15
Mention Bien
Fin du programme
condition_1:
bloc_instruction_1_1 else :
if condition_2:
bloc_instruction_2_1
else : bloc_instruction_2_2
else:
bloc_instruction _1_2
Exemple : [Link] note =
float(input("Note sur 20 : ")) if
note>20.0 or note<0.0:
print("Note invalide!")
else :
if note>=10.0: print("J'ai la
moyenne")
if note==20.0:
print("C'est même excellent !")
else:
print("C'est en dessous de la moyenne") if
note==0.0:
print(" lamentable !")
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 0 C'est en
dessous de la moyenne
lamentable !
Fin du programme
>>>
Note sur 20 : 30 Note
invalide!
Fin du programme
b. Syntaxe en utilisant elif if
expression 1: bloc
d'instructions 1
elif expression 2: bloc
d'instructions 2
elif expression 3:
bloc d'instructions 3
else:
bloc d'instructions 4
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 0
C'est en dessous de la moyenne ...
lamentable !
Fin du programme
>>>
Note sur 20 : 8
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 15
J'ai la moyenne
Fin du programme
3.4. Exercices
Exercice 3.1
Exercice 3.2
Ecrire un programme Python qui demande un nombre entier à l’utilisateur et qui précise
s’il est ou non compris entre 10 (exclus) et 20 (inclus).
Exercice 3.3
Exercice 3.4
Ecrire un programme Python qui demande trois noms à l’utilisateur et l’informe ensuite
s’ils sont rangés ou non dans l’ordre croissant strict.
Exercice 3.5
Exercice 3.6
Donel va à la fête foraine et joue à un jeu de fléchettes. La cible circulaire a 10 cases
numérotées de 1 à 10. Si elle fait plus de 8 (8 inclus), elle gagne 10 $ sinon elle perd sa mise
de départ de 2 $.
Exercice 3.7
Pour organiser des rencontres sportives, un moniteur doit connaître l'âge des enfants,
puis constituer des équipes homogènes. Parmi les moins de 16 ans et les plus de 6 ans, les
catégories sont : "Poussin" de 6 à 7 ans, "Pupille" de 8 à 9, "Minime" de 10 à 11 et "Cadet"
après 12 ans. Ecrire un programme Python qui classe l'enfant dans la catégorie de son âge.
Peut-on concevoir plusieurs algorithmes équivalents menant à ce résultat ?
Exercice 3.8
Au baccalauréat, la mention associée à une note sur 20 est « très bien » pour les notes
supérieures ou égales à 16, « bien » pour les notes comprises entre 14 inclus et 16 exclu, « assez
bien » pour les notes comprises entre 12 inclus et 14 exclu, « passable » pour les notes
comprises entre 10 inclus et 12 exclu et « insuffisant » pour les notes strictement inférieures à
10.
Exercice 3.9
Écrire un programme Python qui lit un prix hors taxe et qui calcule et affiche le prix
TTC (Toutes Taxes Comprises) correspondant (avec un taux de TVA de 16%). Il établit ensuite
une remise dont le taux est le suivant :
Ecrire un programme Python qui permet de calculer une équation du second degré.
Exercice 3.12
Ecrire un programme Python destiné à prédire l'avenir, et il doit être infaillible. Il lira
au clavier l’heure et les minutes, et il affichera l’heure qu’il sera une minute plus tard. Par
exemple, si l'utilisateur tape 7 puis 14, l'algorithme doit répondre : "Dans une minute, il sera 7
heure(s) 15". On suppose que l'utilisateur entre une heure valide et donc pas besoin donc de la
vérifier.
Exercice 3.13
Un magasin de reprographie facture 0,10 $ les dix premières photocopies, 0,09 $ les
vingt suivantes et 0,08 $ au-delà. Ecrire un algorithme qui demande à l’utilisateur le nombre
de photocopies effectuées et qui affiche la facture correspondante.
Exercice 3.14
Une assurance propose trois tarifs (Vert, Orange et Rouge) selon l’âge et le nombre
d’accidents des automobilistes.
Moins de 25 ans 25 ans et plus
0 accident Orange Vert
1 ou 2 accidents Rouge Orange
3 à 6 accidents Pas assuré Rouge
7 accidents ou plus Pas assuré Pas assuré
Ecrire un programme Python qui affiche le tarif après avoir saisi l’âge et le nombre
d’accidents d’un automobiliste.
Exercice 3.16
Une compagnie d’assurance automobile propose 4 familles de tarifs du moins cher au
plus onéreux : A, B, C et D. Le tarif dépend de la situation du conducteur.
• Un conducteur de moins de 25 ans et titulaire du permis depuis moins de deux ans,
se voit attribuer le tarif D s’il n’a jamais été responsable d’accident. Sinon, la
compagnie refuse de l’assurer.
Par ailleurs, pour encourager la fidélité de ses clients, la compagnie propose un contrat
au tarif immédiatement inférieur s’il est assuré depuis plus d’un an.
Ecrire un programme Python qui propose un tarif d’assurance selon les caractéristiques
d’un client potentiel.
Exercice 3.17
Vous désirez comparer deux offres d’abonnement téléphonique. La facture est calculée
avec un fixe (somme à payer obligatoirement tous les mois) et une partie proportionnelle au
temps passé à téléphoner (indiqué en minutes).
Offre Fixe Prix à la minute
Telecom 1 10 $ 0.50 $
Telecom 2 15 $ 0.42 $
Ecrire un programme Python qui indique l’opérateur le plus intéressant après avoir saisi
la consommation moyenne mensuelle (en minutes).
Exercice 3.18
Dans un hôtel, sur les prix affichés pour deux chambres ayant les mêmes
caractéristiques, on peut lire :
Chambre A : prix fixe de la chambre 150 dollars + 10 dollars de connexion internet par jour ;
Chambre B : prix fixe de la chambre 170 dollars + 5 dollars de connexion internet par jour ;
Exercice 3.19
Les élections législatives d’un pays X obéissent à la règle suivante :
• lorsque l'un des candidats obtient plus de 50% des suffrages, il est élu dès le premier
tour.
• en cas de deuxième tour, peuvent participer uniquement les candidats ayant obtenu au
moins 12,5% des voix au premier tour.
Ecrire un programme Python qui permet de saisir les scores de quatre candidats au
premier tour. Cet algorithme traitera ensuite le candidat numéro 1 (et uniquement lui) : il dira
s'il est élu, battu, s'il se trouve en ballottage favorable (il participe au second tour en étant arrivé
en tête à l'issue du premier tour) ou défavorable (il participe au second tour sans avoir été en
tête au premier tour).
Exercice 3.20
Ecrire un programme Python qui permet de calculer le lendemain d’une date selon les
critères suivants :
• La date est décomposée dans trois variables année, mois et jour.
• Il faut gérer : les changements de mois o le nombre de jours dans le mois o le
• Pour information, une année est bissextile (contient 366 jours) si elle est multiple de 4,
sauf les années de début de siècle (qui se terminent par 00) qui ne sont bissextiles que
si elles sont divisibles par 400.
Exemples :
- 2000 est une année bissextile car elle est divisible par 400
- 2100 et 3000 ne sont pas bissextiles car elles ne sont pas divisibles par 400.
Chapitre 4 : Structures itératives
L’une des tâches que les machines font le mieux est la répétition sans erreur de tâches
identiques. Dès lors, il existe bien des méthodes pour programmer ces tâches répétitives. Pour
ce faire, nous allons commencer par l’une des plus fondamentales : la boucle de répétition
construite autour de l’instruction while.
La boucle de type "while" permet la répétition d’un bloc d’instructions tant que la
condition testée est vérifiée, donc vraie.
Syntaxe
while expression :
bloc instructions
Exemple : [Link]
i = 1 while i
<= 4:
print(i)
i=i+1
>>>
1
2
3
4
Remarquez qu’il est encore une fois nécessaire d’indenter le bloc d’instructions
correspondant au corps de la boucle (ici 2 instructions).
Une boucle while nécessite généralement trois éléments pour fonctionner correctement:
Faites bien attention aux tests et à l’incrémentation que vous utilisez car une erreur mène
souvent à des boucles infinies, c’est-à-dire qui ne s’arrêtent jamais. Vous pouvez néanmoins
toujours stopper l’exécution d’un script Python à l’aide de la combinaison de touches Ctrl-C.
Par exemple :
i = 0 while i
< 10:
print("Le python c'est cool !")
Ici nous avons omis de mettre à jour la variable i, ainsi la boucle ne s’arrêtera jamais
(sauf en pressant Ctrl-C) puisque la condition i < 10 sera toujours vraie. Ruptures de contrôle
➢ continue continue directement à la prochaine itération de la boucle
Exemple 2: [Link]
somme=0 while
True:
n=int(input("Entrez un nombre 0 pour arrêter")) if
n==0:
break
somme=somme+n
print("la somme des nombes est", somme)
>>>
Entrez un nombre 0 pour arrêter 5 Entrez
Dans cet exemple, l'expression True est toujours vraie : on a une boucle sans fin.
L'instruction break est donc le seul moyen de sortir de la boucle.
Exemple 3 : [Link]
i = 1 while i
<= 5: if
i==3:
i=i+1
continue print(i)
i=i+1
>>>
1
2
4
5
La boucle a sauté la valeur 3.
Grâce à la fonction range([début], fin, [pas]) la boucle for peut parcourir un intervalle
de début à fin-1 ou en définissant la borne initiale. Elle peut également parcourir d’autres objets
altérables (listes, chaines, tuples, ensembles, dictionnaires, tableaux…).
Exemple 1 : [Link] for
i in range(5):
print(i)
print("Fin de la boucle")
>>>
0
1
2
3
4
Fin de la boucle
>>>
1*9=9
2 * 9 = 18
3 * 9 = 27
4 * 9 = 36
5 * 9 = 45
Fin de la boucle
>>>
1
9
25
49
Fin de la boucle
Les boucles while et for peuvent posséder une clause else qui ne s’exécute que si la
boucle se termine normalement, c’est-à-dire sans interruption.
Exemple
>>>
Entrez un entier positif : 0
Entrez un entier positif, S.V.P. : 9
3 a pour facteur 9
>>>
Entrez un entier positif : 7 7
est premier.
4.4. Exercices
Exercice 4.1
Écrire un programme qui demande à l’utilisateur de lui fournir un nombre entier positif
et inférieur à 10 et ceci jusqu’à ce que la réponse soit satisfaisante.
Exercice 4.2
Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la
réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus
petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10.
Exercice 4.3
Exercice 4.4
Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les vingt
nombres suivants.
Exercice 4.5
Écrire un algorithme qui demande un nombre et qui calcule la somme des entiers
consécutifs de 1 jusqu'à ce nombre.
Exercice 4.6
Lire deux nombres entiers dans les variables nd et nf et écrire les doubles des nombres
compris entre ces deux limites (incluses).
Exercice 4.7
Écrire un algorithme qui demande un nombre et qui calcule la somme des entiers
inversés consécutifs de 1 jusqu'à ce nombre.
Exercice 4.8
Exercice 4.9
A la naissance de Donel, son grand-père Yan, lui ouvre un compte bancaire. Ensuite, à
chaque anniversaire, le grand père de Donel verse sur son compte 100 dollars, auxquels il ajoute
le double de l’âge de Donel. Par exemple, lorsqu’elle a deux ans, il lui verse 104 dollars. Ecrire
un algorithme qui permette de déterminer quelle somme aura Donel lors de son n ième
anniversaire.
Exercice 4.10
Exercice 4.11
Exercice 4.12
Réécrire l’algorithme précédent, mais cette fois-ci on ne connaît pas d’avance combien
l’utilisateur souhaite saisir de nombres. La saisie des nombres s’arrête lorsque l’utilisateur entre
un zéro.
Exercice 4.13
Pour une promotion donnée, écrire un algorithme qui permet d’introduire le nom de
chaque étudiant et les notes obtenues dans les cinq cours inscrits au programme, calcule la
moyenne et affiche ensuite quel était le meilleur parmi ces étudiants.
Exercice 4.14
Lire la suite des prix (en dollars entiers et terminée par zéro) des achats d’un client.
Calculer la somme qu’il doit, lire la somme qu’il paye, et simuler la remise de la monnaie en
affichant les textes "10 dollars", "5 dollars" et "1 dollar" autant de fois qu’il y a de coupures de
chaque sorte à rendre.
Exercice 4.15
Votre tante fortunée vous envoie désormais un montant chaque mois. A la fin de l'année
vous souhaitez faire un bilan de vos richesses. Ecrire un algorithme qui affiche la somme
mensuelle moyenne reçue, le montant minimal reçu sur l'année et le montant maximal reçu sur
l'année.
Exercice 4.16
Ecrire un algorithme qui demande à l’utilisateur de lui fournir la valeur d’un capital
qu’il souhaite placer, ainsi que le taux (annuel) auquel sera effectué le placement. Il affiche
l’évolution annuelle de ce capital jusqu’à ce qu’il ait atteint ou dépassé le double du capital
initial.
Exercice 4.17
capital obtenu chaque année, un numéro d’année, comme suit : donnez le capital à placer
.....
à l’année 7 : 22106.82
Exercice 4.18
Un institut de sondage veut faire une enquête sur les intentions de vote à un référendum.
Il y a trois intentions possibles :
• voter oui
• voter non
• voter blanc ou s’abstenir
L’institut veut distinguer les intentions de vote des hommes et des femmes.
Exercice 4.19
Yan est un fermier qui dispose d’un couple de shadoks capables de se reproduire à
vitesse phénoménale. Un couple de shadocks met deux mois pour grandir ; à partir du troisième
mois, le couple de shadocks engendre une paire de nouveaux shadocks (qui mettront deux mois
pour grandir et donc trois mois pour engendrer une nouvelle paire, etc.). Et surtout, les shadoks
ne meurent jamais !
D’après cet exercice le nombre de couples de shadoks fn à chaque mois n obéit à la loi:
• f0= 1
• f1= 1
• fn= fn-1+ fn-2 pour tout n > 1
Exercice 4.20
Ecrire un algorithme permettant d’évaluer vos chances de gagner dans l’ordre ou dans
le désordre au tiercé, quarté ou quinté. De manière formelle, le problème est le suivant :
x = n ! / (n - p) ! y = n ! / (p ! * (n – p) !)