Vous êtes sur la page 1sur 18

Cours de Python – 1 : L’ordinateur

1) Un ordinateur est une machine / un ordinateur est un outil

Un ordinateur est un système de traitement de l'information programmable tel que défini par Turing et qui
fonctionne par la lecture séquentielle d'un ensemble d'instructions, organisées en programmes, qui lui font exécuter
des opérations logiques et arithmétiques.

Sa structure physique actuelle fait que toutes les opérations reposent sur la logique binaire et sur des nombres formés
à partir de chiffres binaires.

Dès sa mise sous tension, un ordinateur exécute, l'une après l'autre, des instructions qui lui font lire, manipuler, puis
réécrire un ensemble de données déterminées par une mémoire morte d'amorçage (Boot ROM, BIOS, UEFI, etc.).

Les données à manipuler sont obtenues, soit par la lecture de mémoires, soit par la lecture d'information en
provenance de périphériques internes ou externes (déplacement d'une souris, touche appuyée sur un clavier,
température, vitesse, compression…).

Une fois utilisés, ou manipulés, les résultats sont écrits, soit dans des mémoires, soit dans des composants qui peuvent
transformer une valeur binaire en une action physique (écriture sur une imprimante ou sur un moniteur, accélération
ou freinage d'un véhicule, changement de température d'un four…).

2) La carte mère
La carte mère est le cœur de tout ordinateur compatible PC. Elle est essentiellement composée de circuits
imprimés et de ports de connexion qui assurent la liaison de tous les composants et périphériques propres
à un micro-ordinateur (disques durs, mémoire vive, microprocesseur, cartes filles, etc.) afin qu'ils puissent
être reconnus et configurés par le microprocesseur grâce au programme contenu dans le BIOS, au
travers de la carte, afin d'assurer la configuration et le démarrage correct de tous les équipements.

3) Le microprocesseur
Le processeur est connu comme étant le cerveau de l’ordinateur, il exécute les instructions et traite les
données des programmes. Il est mesuré en Hertz. Lorsque ce dernier est élevé, le signal de l’exécution
devient de plus en plus rapide.
Un microprocesseur est un processeur dont tous les composants ont été suffisamment miniaturisés pour être
regroupés dans un unique boitier.
La complexité de son architecture se mesure par le nombre de transistors qu’il contient.
La puissance du microprocesseur qui s’exprime en « millions d'instructions par seconde » (MIPS).
La vitesse de l’horloge : le rôle de l’horloge est de cadencer le rythme du travail du microprocesseur. Plus la
vitesse de l’horloge augmente, plus le microprocesseur effectue d'instructions en une seconde.

ARM60 Intel Core 2 Duo

4) Les mémoires d’un ordinateur :

La mémoire vive d’un ordinateur : les cartes mémoire

Lorsque l’ordinateur est sous tension, le disque dur, qui stocke durablement les données, se lance et vient
charger dans cette mémoire vive le système d’exploitation (Windows, OS X, Linux), puis les différentes
applications que vous ouvrez (par exemple, un navigateur internet, ou un nouveau document). Et lorsque vous
travaillez sur votre document, tant qu’il n’est pas enregistré sur le disque dur, c’est sur cette mémoire vive que
la sauvegarde est effectuée.

Les cartes mémoires se présentent sous 2 formats aux appellations singulières : DIMM pour les ordinateurs
de bureau et SO-DIMM pour les portables.

1 million de fois plus rapide qu’un disque dur

L’avantage de cette mémoire vive, par rapport au disque dur, c’est qu’elle est très rapide. Elle réagit au
quart de tour pour transmettre des données à traiter au processeur et les exploiter. Elle peut faire transiter des
données à plus de 10 Go/s, alors qu’un disque plafonne autour de 200 Mo/s en pratique. De même, le temps
d’accès aux données, autrement dit son temps de réaction, se compte en nanosecondes, alors que pour un
disque dur on parle de millisecondes.

8 Go pour ne pas avoir à sortir les rames

En revanche, contrairement au disque dur dont la capacité de stockage est colossale et peut atteindre plusieurs
Téraoctets (1000 Gigaoctets), la mémoire vive se limite à 2, 4, 8, voire 16 Gigaoctets. 4 Go est une quantité
toutefois suffisante pour des travaux de bureautique, mais il faut retenir que plus il y a de capacité et moins
cette mémoire vive est engorgée. Dès qu’elle l’est, l’ordinateur va générer de la fausse mémoire vive sur le
disque dur. Pour le coup, c’est à partir de ce moment que l’on peut dire que « ça rame » ! C’est pourquoi,
lorsque l’on est fan de jeux ou d’arts graphiques, 8 Go présentent le strict minimum et 16 Go offrent plus de
fluidité pour des jeux 3D de plus en plus gourmands en mémoire.

 Rapidité d'accès, essentielle pour fournir rapidement les données au processeur ;


 Volatilité, qui entraîne une perte de toutes les données en mémoire dès que l'ordinateur cesse
d'être alimenté en électricité.

Le disque dur d’un ordinateur : la mémoire morte

L’ordinateur doit être muni d’un disque dur pour pouvoir stocker vos données. A la différence de la mémoire
vie, le disque dur peut conserver toutes vos données le plus longtemps possible. Toutefois, s’il se détériore,
les données seront perdues et vous perdrez tout ce que vous avez enregistré dans le disque dur. Il est préférable
dans de cas d’avoir un stockage amovible pour conserver la copie de vos données.
5) Le BIOS
Lors du démarrage, la carte mère a besoin de savoir quels périphériques lui sont connectés.
Pour effectuer cette tâche, elle dispose d'un firmware initialement appelé BIOS (de l'anglais Basic Input
Output System « signifiant système d'entrée/sortie de base ») ou sur les ordinateurs plus récent de son
équivalent l'UEFI. L'un et l'autre sont contenus dans une puce de « mémoire morte » soudée à même la
carte mère. Le microprocesseur lance ce code automatiquement lorsque la carte est mise sous tension —
autrement dit, lorsque l'utilisateur allume son ordinateur.

Le BIOS
Le microprocesseur utilise le code contenu dans le BIOS pour configurer chaque périphérique connecté
à la carte mère (mémoire vive, disques durs, cartes d'extension, etc.). Si le microprocesseur ne peut
pas afficher un message d'erreur, ni lancer le « configurateur du BIOS », la carte émet une série de
bips qui permettent d'informer l'utilisateur du problème empêchant de continuer (entre autres si l'écran,
le clavier ou la souris n'ont pas été détectés) — ces signaux sont propre à chaque carte. La signification
de l'erreur liée à cette série de bips est précisée dans le manuel de la carte mère.
Lorsque tous les périphériques ont été configurés, le microprocesseur exécute les instructions
contenues dans le Master Boot Record trouvé sur le périphérique identifié comme celui contenant le
premier système disponible contenu dans un des périphériques de stockage de masse (CDROM, disque
dur, SSD, clé USB, etc.).
L'UEFI
L'UEFI est le nouveau type de BIOS lié aux évolutions technologiques depuis les années 2000. Un
consortium de constructeurs a mis au point un nouveau standard de firmware (micrologiciel
intermédiaire entre les éléments composants de la carte mère et le système d'exploitation). L'UEFI (de
l'anglais Unified Extensible Firmware Interface) offre quelques avantages sur le BIOS : fonctionnalités
réseau en standard, interface graphique haute résolution, gestion intégrée d'installations multiples de
systèmes d’exploitation et affranchissement de la limite des disques à 2,2 To. L'UEFI est écrit en
langage C

6) Le code binaire, le bit, l’octet

Le système binaire est utile pour représenter le fonctionnement de l'électronique numérique utilisée dans les
ordinateurs. Il est donc utilisé par les langages de programmation de bas niveau.

Le système binaire le plus courant est la base deux mathématique, permettant de représenter des nombres à
l'aide de la numération de position avec seulement deux chiffres : le 0 et le 1.

Dans ce type de codage, chaque nombre est représenté de façon unique par une suite ordonnée de chiffres.

Ex : 110  1 20  12  210  1 21  0  20  102

 310  1 21  1 20  112  410  1 22  0  21  0  20  100 2

 510  1 22  0  21  1 20  1012  610  1 22  1 21  0  20  1102


A l’origine, il s’agissait de diodes qui s’allumaient ou s’éteignaient dans un style de morse numérique.
Dans la théorie de l'information, un bit est la quantité minimale d'information transmise par un message,
et constitue à ce titre l'unité de mesure de base de l'information en informatique
Un bit est l’élément de base avec lequel travaille l’ordinateur : sa valeur est 1 ou 0.
 on peut comparer ça à : on/off ; vrai/faux ; marche/arrêt ; …

Valeur
Valeur binaire
décimale
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
… 8 bits = 28 = 256
255 11111111
16 bits = 216 = 65 536
Je me suis arrêté sur la valeur 255 qui correspond à 8 bits
(vous voyez en face du 255 il y a 8 chiffres 1).
Ces 8 bits correspondent à ce que l’on appelle un octet
(venant de octal : 8). Pour votre culture …

Ainsi 1010112  1 27  0  26  1 25  0  24  1 23  0  22  1 21  1 20  128  32  8  2  1  17110


 23410  2 102  3101  4 100

Un octet (ou byte) est un multiple de 8 bits codant une information : ex : 11101011 .
En fait l’ordinateur ne calcule jamais sur 1 bit à la fois, mais sur un ou plusieurs octets (ce qui fait 8 bits ou
plus, mais toujours des multiples de 8 bits).
Les premiers ordinateurs personnels étaient 8 bits (ils ne comptaient que sur 1 octet à la fois)
 un octet permet de représenter 28 nombres, soit 256 valeurs différentes.
 un octet permet de coder des valeurs numériques ou jusqu'à 256 caractères différents.

Les systèmes d’exploitation ont évolué pour passer de 8 bits à 16 bits (la série des windows 1 à Windows
3.xx), à 32 bits (Windows 95 à Windows 7 32 bits) et enfin à 64 bits (Windows XP 64 bits à Windows 8).

Les nouveaux ordinateurs sont 64 bits (c’est à dire qu’ils calculent sur 8 octets à la fois (8 octets x 8 bits = 64
bits)). Les éléments qui composent l’ordinateur (Processeur, bus de données, etc) sont en 64 bits. Ils peuvent
donc ainsi adresser plus d’informations en une seule fois (2 fois plus qu’en 32 bits).

L’octet est couramment utilisé pour indiquer la capacité de mémorisation des mémoires.

 
Le plus grand entier naturel que l’on puisse coder sur 8 bits est :  11...1   255
 8 un 
 2
 
Le plus grand entier naturel que l’on puisse coder sur 16 bits est :  11...1   65 536
 16 un 
 2
 
Le plus grand entier naturel que l’on puisse coder sur 64 bits est :  11...1   264  1
 64 un 
 2
     
 11...1   1  10...0   1 2  256 donc  11...1   255
8
Démonstrations :
 8 un  2  8 un  2  8 un  2
     
 11...1  1   10...0   2 donc  11...1   264  1
64
 64 un 
 64 un  2  64 un  2  2
Ordre de grandeur du résultat :
   
6 6
210  1024  103 donc 264  210  24  103 16  1,6 1019
264  18446744073709551614  1,84  1019

7) Le système hexadécimal

Le code binaire génère des messages souvent beaucoup trop longs à exploiter, ce qui sature les mémoires et
ralentit le fonctionnement de la machine.
On utilise le langage hexadécimal pour alléger les écritures, en base 16 alphanumérique, avec 16 symboles :
les dix premiers chiffres et les lettres A à F pour les six suivants.

L’hexadécimal est une écriture compacte du binaire.


L’hexadécimal est très utilisé en informatique car il facilite les conversions en binaire.
Un nombre écrit en hexadécimal permet de représenter 4 bits, autrement dit un nibble.

Base
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
décimale
Base
0 1 2 3 4 5 6 7 8 9 A B C D E F
hexadécimale
Base binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Convertir de la base 2 à la base 16 : on fait des groupements de 4 :


0001 1011  1B
1001 1100 0111 0101  9C75

 0010 1010 1101 01012   2AD516


Convertir de la base 16 à la base 2 :
A95D7  1010 1001 0101 1101 0111

Convertir de la base 10 en système hexadécimal :


 2710  110112
 en base 16 :  27 10  1161  11160  1B16
 6210  3 161  14 160  3E 16
Convertir du système hexadécimal en base 10 :
3D816  3 162  13 161  8 160  768  208  8  984 10
 FB316  F 162  B 161  3160  15  256  1116  31   4019 10
4D516  4 162  D 161  5 160  4  256  13 16  5 1  1 23710
15AACF716  1166  5 165  A 164  A 163  C 162  F 161  7 160  22 719 73510

8) Le code ASCII

La mémoire de l'ordinateur conserve toutes les données sous forme numérique. Il n'existe pas de méthode pour
stocker directement les caractères. Chaque caractère possède donc son équivalent en code numérique :
c'est le code ASCII (American Standard Code for Information Interchange - traduisez « Code Americain
Standard pour l'Echange d'Informations »). Le code ASCII de base représentait les caractères sur 7 bits (c'est-
à-dire 128 caractères possibles, de 0 à 127).

 Les codes 0 à 31 ne sont pas des caractères. On les appelle caractères de contrôle car ils permettent
de faire des actions telles que :
o retour à la ligne (CR)
o Bip sonore (BEL)
 Les codes 65 à 90 représentent les majuscules
 Les codes 97 à 122 représentent les minuscules

Pour le dire autrement, l’ordinateur gère tous les caractères comme des nombres en base 16.
Cours de Python – 2 : Pourquoi Python ?

Python est un langage de programmation, dont la première version est sortie en 1991.

Créé par Guido van Rossum, il a voyagé du Macintosh de son créateur, qui travaillait
à cette époque au Centrum voor Wiskunde en Informatica aux Pays-Bas, jusqu'à se
voir associer une organisation à but non lucratif particulièrement dévouée, la Python
Software Foundation, créée en 2001.

Ce langage a été baptisé ainsi en hommage à la troupe de comiques les « Monty


Python ».

1) Le langage machine

Le langage machine est le seul langage qu'un processeur puisse exécuter.


Le langage binaire est uniquement constitué de 0 et de 1.
« 01000010011011110110111001101010011011110111010101110010 », par exemple, signifie « Bonjour ».
  010000102  1 26  1 21  64  2   6610 et dans la table ASCII :  66 10 correspond à « B ».
  011011112  1 26  1 25  1 23  1 22  1 21  1 20  64  32  8  4  2  1  11110 soit « o ».
Bref, autant vous dire que discuter en binaire avec un ordinateur peut être long (surtout pour vous).
en hexadécimal, « Bonjour » devient : 42 6F 6E 6A 6F 75 72, assez ardu à maîtriser en programmation

2) Les langages interprétés : Langages interprétés et langages compilés

Python est un langage de programmation interprété, c’est-à-dire que les instructions que vous lui envoyez
sont « transcrites » en langage machine au fur et à mesure de leur lecture.
D'autres langages (comme le C / C++) sont appelés « langages compilés » car, avant de pouvoir les exécuter,
un logiciel spécialisé se charge de transformer le code du programme en langage machine. On appelle cette
étape la « compilation ». À chaque modification du code, il faut rappeler une étape de compilation.

Les avantages d'un langage interprété sont la simplicité (on ne passe pas par une étape de compilation avant
d’exécuter son programme) et la portabilité (un langage tel que Python est censé fonctionner aussi bien sous
Windows que sous Linux ou Mac OS, et on ne devrait avoir à effectuer aucun changement dans le code pour
le passer d'un système à l'autre). Cela ne veut pas dire que les langages compilés ne sont pas portables, loin de
là ! Mais on doit utiliser des compilateurs différents et, d'un système à l'autre, certaines instructions ne sont
pas compatibles, voire se comportent différemment.

En contrepartie, un langage compilé se révélera bien plus rapide qu'un langage interprété (la traduction
à la volée de votre programme ralentit l’exécution), bien que cette différence tende à se faire de moins en
moins sentir au fil des améliorations. De plus, il faudra installer Python sur le système d’exploitation que
vous utilisez pour que l'ordinateur puisse comprendre votre code.

Langages assembleurs :
Assembleur, Fortran (1954), Lisp (1958), Cobol (1960) (applications gestions),
Basic (1964), C (1970), SQL (1978) (langage de requêtes),
C++ (1985), Python (1990), Java (1995), JavaScript (1995), PHP (1995), C♯ (2000), Swift (2014)
(applications IOS).
Dans l’ordre de popularité : Java, C, C++, Python
Le classement TIOBE 2017 sur l’utilisation des langages
3) À quoi peut servir Python ?

Python est un langage interprété :


les lignes sont interprétées les unes après les autres
pas de compilation : une seule étape
moindre performance que les langages compilés
Python est polyvalent sur multi-plateforme (linux, windows, mac os, android, …)
Python est libre, gratuit, open source
Python possède de nombreuses bibliothèques comprenant beaucoup d’applications, les bibliothèques par
défaut sont relativement complètes
Sa syntaxe est légère et épurée, ce qui rend le code assez lisible, véritable langage de programmation
relativement simple (pas de gestion de la mémoire, contrairement au C...)
Les messages d’erreurs sont simples et compréhensibles
Il est utilisé dans l’industrie, utilisé par la communauté scientifique, utilisé dans l’éducation nationale pour
l’apprentissage de l’algorithmique depuis quelques années
Simplicité de mise en œuvre, un simple éditeur de texte suffit
Débogage facilité par l’interpréteur, avec des messages compréhensibles
Python est orienté objet : il s’agit de définir des briques logicielles appelées objets et de définir les interactions
et les communications entre ces objets.
Edupython au lycée, Pyzo en Prépa
A la différence d’Algobox, Python permet d’interpréter des chaines de caractère.
Python est un langage puissant, à la fois facile à apprendre et riche en possibilités. Dès l'instant où vous
l'installez sur votre ordinateur, vous disposez de nombreuses fonctionnalités intégrées au langage que nous
allons découvrir tout au long de ce livre.

Il est, en outre, très facile d'étendre les fonctionnalités existantes, comme nous allons le voir. Ainsi, il existe
ce qu'on appelle des bibliothèques qui aident le développeur à travailler sur des projets particuliers. Plusieurs
bibliothèques peuvent ainsi être installées pour, par exemple, développer des interfaces graphiques en Python.

Concrètement, voilà ce qu'on peut faire avec Python :

 de petits programmes très simples, appelés scripts, chargés d'une mission très précise sur votre
ordinateur ;
 des programmes complets, comme des jeux, des suites bureautiques, des logiciels multimédias, des
clients de messagerie…
 des projets très complexes, comme des progiciels (ensemble de plusieurs logiciels pouvant fonctionner
ensemble, principalement utilisés dans le monde professionnel).

Voici quelques-unes des fonctionnalités offertes par Python et ses bibliothèques :

 créer des interfaces graphiques ;


 faire circuler des informations au travers d'un réseau ;
 dialoguer d'une façon avancée avec votre système d’exploitation ;
 … et j’en passe…
Python : Cours n° 3 : Les chaînes de caractères
La calculatrice ne gère pas de variables contenant des chaînes de caractères
Attention : Python distingue les majuscules des minuscules
Les exemples seront construits à partir du programme suivant :
exemple=input("saisir un mot de 10 lettres")
print(exemple)
exemple2=input("saisir un mot de 10 lettres")
print(exemple2)
exemple = abcdefghij
 exemple2 = uvwx

Longueur d’une chaîne : len(chaine) Représente la longueur de la chaine.


Ex : len(exemple) 10
len(‘aventure’) 8

Caractères d’une chaîne : chaine[i] Représente la lettre à la position i dans la chaine


Attention la 1ère lettre est à la position 0 !
ord(caractère) Renvoie la valeur ascii du caractère.
chr(nombre) Renvoie le caractère dont la valeur ascii est nombre
Ex : exemple[5] f exemple[0] a
ord('a') 97
chr(97) a

Extraire une sous-chaîne d’une chaîne de caractères : chaine[debut:fin]


Renvoie la partie de chaine comprise entre le caractère à la positon début (inclus)
et celui à la position fin (exclu)
Ex : exemple[1:7] 'bcdefg'

Transformer une chaîne de caractères :


chaine1+chaine2 Revoie une chaîne composée des deux chaînes juxtaposées (concaténées).
chaine.upper() Ne renvoie rien, mais transforme la chaine en majuscules
chaine.lower() Ne renvoie rien, mais transforme la chaine en minuscules
str(nb) Renvoie une chaîne de caractères contenant l’écriture décimale du nombre nb
Ex : print(exemple+exemple2)  abcdefghijuvwx
exemple+exemple2  ‘abcdefghijuvwx’
‘bon’ + ‘jour’ ‘bonjour’
‘bien’ + ‘ ’ ‘bien ’
exemple.upper()  'ABCDEFGHIJ'
exemple.lower()  'abcdefghij'
str(exemple) 'abcdefghij'

Rechercher dans une chaîne de caractères :


chaine.count(texte) Renvoie le nombre de fois où texte est présent dans chaine
chaine.replace(texte1,texte2) Remplace par texte2 chaque fois qu’il trouve texte1 dans chaine
chaine.find(texte) Renvoie la position dans chaine où se trouve texte
(et renvoie 1 si texte n’apparait pas dans chaine)
Ex : exemple.count(‘bcd’)  1
exemple.replace(‘bcd’,’BIG’)  'aBIGefghij'
exemple.find(‘fg’) 5 car le premier rang est le rang 0
Python : Cours n° 4 : les nombres
Nombres décimaux :
Les décimaux sont appelés des flottants (float) :
2  5  10
8 / 2  4.0
8 / /2  4 et 8// 3  2 division entière (quotient de la division euclidienne)
9%2  1 reste de la division euclidienne

Puissances : des calculs simples


4 3  4  64
3

pas de taille max pour les entiers, cela dépend de la mémoire physique de l’ordinateur
 : rappeler la dernière instruction
2.01023 : 8.98846567431158e+307
2.01024 : saturation overflow error  21024 existe
taille max : environ 10307
En base 2 : stockage de 52 chiffres possible après la virgule

Tests et booléens :
Test : 3*2  6 réponse TRUE
2*0.1  0.2 réponse TRUE
3*0.1  0.3 réponse FALSE
Explications !!! En base 10 : En base 16 :
1 3 1 5
10 0,33… 10 16 0,33…
10 10 16
1 1
Ainsi   0,333...10 et   0,333...16
3 5
1
Or 3   00112 donc   0, 001100110011...2
5
Or seules 52 décimales sont stockées en mémoire, on perd les dernières décimales, ce qui induira une erreur.
dans les tests, demander si la différence est inférieure à 1015
L’arithmétique sur les flottants est très compliquée
1  2**  52  1 réponse FALSE  1, 0...1
52 bits

1  2**  53  1 réponse TRUE  1, 0...01


52 bits
Bibliothèques :
Sqrt(25) ERROR
 il faut appeler d’abord la bibliothèque math :
From math import * (en début de programme, s’il n’y a qu’une seule bibliothèque)
math.sqrt(25) 5.0
math.cos(math.pi) -1.0
NB : help(math.sqrt) infos sur l’option math
NB : dir(math) liste des objets de math

From math import floor, ceil arrondis inférieur et supérieur


Floor(43.5) 43
Ceil(43.5) 44
Premières instructions avec Python

Exercice 1 : Afficher un message


Prenom=input("quel est ton prénom ?") Prenom est une chaîne de caractères
Message="Bonjour "+ Prenom+", comment vas-tu ?"
print(Message) on affiche la chaine de caractères Message

Exercice 2 : Calculer l’aire d’un disque


from math import * on importe le module math pour utiliser la constante Pi
R=float(input("R=")) l’utilisateur saisit un nombre (float)
S=pi*R**2
print("S=",S)

Exercice 3 : Afficher le plus grand des deux nombres x 2 et x3


x=float(input("x=")) l’utilisateur saisit un nombre (float)
y=x**2
z=x**3
if y>=z:
print("le nombre le plus grand est ",y)
else:
print("le nombre le plus grand est ",z)

Exercice 4 : Simuler un lancer de dés


from random import *
x=randint(1,6) renvoie un nombre entier aléatoire entre 1 et 6
if x==6: on teste la valeur 6
print(x," C'est gagné")
else:
print(x," C'est perdu")

Exercice 5 : Calculer une moyenne de valeurs dans un tableau


L=[-4,8,9] la variable L est une liste de trois nombres
M=(L[0]+L[1]+L[2])/3 les éléments successifs de la liste sont L[0], L[1] et L[2]
print ("La moyenne est égale à :",M)

Exercice 6 : Calculer la moyenne de trois nombres


x=float(input("x="))
y=float(input("y="))
z=float(input("z="))
M=(x+y+z)/3
print ("La moyenne est égale à :",M)

Exercice 7 : Somme des carrés des inverses


n=int(input("n="))
S=0
for k in range(1,n+1):
S=S+1/k**2
print ("La somme est :",S)
Notre Dame de La Merci
Cours n° 6 : les boucles IF

La commande IF permet d’initier un test de vérité.


→si le test est vrai : une série d’instructions s’enchaînent
→sinon on continue dans le programme sans effectuer les instructions liées la condition.
La présence de deux points « : » en fin de ligne permet de générer une indentation, un décalage sur la ligne
suivante qui indique que toutes les instructions qui seront dans ce décalage seront exécutées si le test de vérité
est vérifié.

• si (IF) la condition est vraie, alors le bloc d’instructions qui suit est exécuté,
• sinon si (ELIF) : si le premier test a échoué, on peut effectuer un deuxième test,
• sinon (ELSE), c’est-à-dire si la (ou les) condition est fausse, alors c’est ce bloc d’instructions qui est
exécuté.

Le couple if, elif et else agissent finalement comme un aiguillage.


Attention cependant, lesinstructions elif et else ne sont pas toujours indispensables.
→dans ce cas, si la condition est fausse, rien n’est exécuté.

Comparaison de nombres
Vous aurez souvent à comparer des nombres. Voici une liste des opérateurs que vous pourrez utiliser.
• x == y est vrai quand x est égal à y,
• x != y est vrai quand x est différent de y,
• x > y est vrai quand x est strictement supérieur à y,
• x < y est vrai quand x est strictement inférieur à y,
• x >= y est vrai quand x est supérieur ou égal à y, et
• x <= y est vrai quand x est inférieur ou égal à y.

Exercice 1 :
nb = float(input("Entrer un nombre plus petit que 100 :"))
if nb < 100:
print("Ce nombre convient.")
else:
print("Ce nombre est trop grand.")

IF : le test commence :
• si (IF) la condition (nb < 100) est vraie, alors le bloc d’instructions qui suit (ici une seule instruction)
est exécuté,
• sinon (ELSE), c’est-à-dire si la condition (nb < 100) est fausse, alors c’est l’autre bloc d’instructions
qui est exécuté.

ELIF : « sinon si »

Exercice 2 : lancer d’un dé :


from random import randint
nb = randint(1,6)
if nb == 6:
print(nb,"C'est gagné !")
elif nb == 5 or nb == 4:
print(nb,"Vous y étiez presque !")
else:
print(nb,"dommage, testez à nouveau votre chance")
ANALYSE :
Avec Python3, la fonction input() renvoie systématiquement une chaîne de caractères. Donc si c’est un
nombre que l’on veut manipuler, il faudra utiliser la fonction int() s’il s’agit d’un entier, float() s’il s’agit d’un
décimal ou eval() s’il s’agit d’un réel. Par exemple :
chaine = input()
nb = float(chaine)
ou bien directement
nb = float(input())
Exercices sur Python avec la condition IF :
Exercice 1 :
Demander à la machine de choisir aléatoirement pile ou face, puis l’utilisateur propose ‘pile’ ou ‘face’.
 s’il gagne, affichez « BRAVO, vous avez gagné »
 sinon afficher « DESOLE, veuillez rejouer et tenter à nouveau votre chance ».
Exercice 2 :
Demander à la machine de choisir aléatoirement un numéro entier entre 1 et 20.
Vous choisissez un nombre et le programme vous répond si votre nombre est trop petit, trop grand ou égal à
celui trouvé par le programme.
Exercice 3 : Triangle équilatéral - isocèle - condition IF ELSE ELIF AND OR
1. Écrire un programme en Python qui demande à l'utilisateur les longueurs des côtés d'un triangle (ces
longueurs étant entières) et qui indique si ce triangle est équilatéral ou pas.
2. Modifier votre programme pour qu'il indique si le triangle est isocèle ou pas.
3. Modifier votre programme pour qu'il indique si le triangle est équilatéral et s'il ne l'est pas s'il est
isocèle ou pas.
Exercice 4 : Triangle rectangle
L'objectif de cet exercice est d'écrire un programme en Python qui demande à l'utilisateur les longueurs des
côtés d'un triangle (ces longueurs étant entières) et qui indique si ce triangle est rectangle ou pas.
1. Écrire un programme lorsque l'utilisateur rentre les longueurs par ordre croissant.
2. Modifier votre programme pour que l'utilisateur puisse rentrer les longueurs dans un ordre quelconque.
Exercice 5 : Conditions d'existence d'un triangle - Inégalité triangulaire
Écrire un programme en Python qui demande à l'utilisateur les longueurs de 3 segments et qui indique si on
peut construire un triangle avec ces 3 segments.
Exercice 6 : Nature d'un triangle
Écrire un programme en Python qui demande à l'utilisateur les longueurs de 3 segments et qui indique si ce
triangle existe et dans ce cas, s'il est équilatéral, isocèle, rectangle ou quelconque.
Exercice 7 :
Définir un nombre aléatoire entier entre 1 et 10.
L’utilisateur saisit un nombre entre 1 et 10 :
- Si ce nombre est égal à celui trouvé par l’ordinateur
Afficher (« C’est gagné ! »)
- Sinon si ce nombre est supérieur
Afficher (« Votre nombre est trop grand)
L’utilisateur peut alors saisir un nouveau nombre
- Sinon
Afficher (« Votre nombre est trop petit)
L’utilisateur peut alors saisir un nouveau nombre
Si la valeur saisie par l’utilisateur est égale au nombre recherché :
Afficher (« Réussi au 2ème essai ! »)
Exercice 8 : Que fait ce programme ?
Cours n° 7 - Les Boucles itératives (instructions FOR et WHILE)

Boucle Pour : FOR


Lorsque l’on souhaite répéter un nombre donné de fois la même instruction ou le même bloc d’instructions,
la commande for … in range(1ère valeur, dernière valeur +1) est la plus appropriée.
Admettons que l’on veuille afficher 5 fois le mot bonjour. Voici ce que l’on peut faire.
for i in range(5): # pour i allant de 0 à 4
print("bonjour")
 bonjour
bonjour
bonjour
bonjour
bonjour
Par défaut : for i in range(5): est équivalent à : for i in range(0,5): et la boucle tournera 5 fois
 i est un paramètre qui va prendre successivement les valeurs : 0;1;2;3;4 , soit i  0;4
avec l’instruction for i in range(1,6): , la boucle tournera aussi 5 fois avec i  1;5

Subtilité : supposons que l’on veuille que variable i prenne successivement les valeurs 4,7,10,… jusqu’à 31 :
on saisit : for i in range(4,32,3): le troisième paramètre définit le pas de variation
par défaut, le pas vaut 1
le pas doit être un nombre entier
Si on veut afficher les carrés des entiers de 1 à 7 :
for i in range(1, 8): # pour i allant de 1 à 7
print(i**2)
 1
4
9
16
25
36
49
Puis terminons sur un exemple classique qui est le calcul de la somme des premiers entiers. Disons ici que
30
l’on s’arrête à 30. Autrement dit, on veut calculer 1  2  3  ...  30 que l’on note aussi 
i 1
i:

S=0 # on initialise la somme à 0


for i in range(1, 31): # pour i allant de 1 à 30
S=S+i # à chaque boucle FOR, on ajoute i à S
print( " Somme = " ,S)
 Somme = 465
i S
Pour décrire le fonctionnement d’un programme, on utilise 0
souvent un tableau décrivant l’évolution de chaque variable :
1 1
2 3
3 6
… …
30 465
Boucle Tant que : WHILE
Le principe de la boucle while, c’est d’exécuter un bloc d’instructions tant qu’une condition donnée est vraie.
On l’utilise lorsque l’on ne connait pas le nombre exact de boucles à réaliser.
Avec while, la variable n’augmente pas toute seule, il faut gérer sa progression après l’avoir initialisée.

Ex : i = 1
while i <= 3: # tant que i reste inférieur ou égal à 3, on reste dans la boucle
print(i)
i=i+1  1
2
3
Ici tant que (while) la condition  i  3 est vraie, le bloc d’instructions (il y en a deux dans notre cas) est
exécuté.
Regardons ce code pas à pas pour bien comprendre ce qu’il se passe.
1 i=1
2 while i <= 3:
3 print(i)
4 i=i+1
La deuxième instruction i = i + 1 est primordiale car elle assure que l’on va sortir de la boucle. En effet, ce
qu’il faut éviter avec les boucles tant que, c’est de construire une boucle sans fin. C’est ce qui peut se produire
si la condition du while n’est jamais vérifiée.
Pour savoir combien de fois la boucle while est exécutée, il peut être utile d’utiliser une variable qui servira
de compteur, c’est-à-dire une variable (qu’il ne faut pas oublier d’initialiser) et incrémentée de 1 dans le bloc
d’instructions.

L’ordre des écritures est primordial à l’intérieur de la boucle.


Comparons les écritures suivantes si l’on décide de calculer la somme des carrés des entiers successifs afin
de trouver le plus petit entier pour lequel la somme des carrés dépasse 50 :
S=0 S=0
i=0 i=1
while S <= 50 : while S <= 50 :
i += 1 S += i**2
S += i**2 i += 1
print(i,S) print(i,S)

 5 55  6 55
La bonne réponse est 5 car : 1  2  3  4  5  1  4  9  16  25  55
2 2 2 2 2

 seul le programme de gauche marche


 sur celui de droite, la variable indique le rang suivant, il faudrait dans ce cas écrire :
print(i-1,S)

Boucle infinie : pour arrêter un programme qui tourne sans fin et consomme toute la mémoire :
Control K control KILL
Notre Dame de La Merci
Exercices sur Python avec les boucles :
Exercice 1 :
Écrire un programme qui demande un nombre flottant puis calcule le plus grand entier dont le carré est plus
petit que ce nombre.

Exercice 2 :
Saisir un nombre puis calculer la somme des n premiers carrés : 12  22  32  ...  n2

Exercice 3 :
1 1 1 1
Saisir un nombre puis calculer la somme des n premiers inverses :    ... 
1 2 3 n

Exercice 4 :
1 1 1 1
Saisir un nombre puis calculer la somme des n premiers inverses : 2  2  2  ...  2 .
1 2 3 n
2
Pour de grandes valeurs de n, comparer le résultat obtenu avec .
6

Exercice 5 : lancer de deux dés


Simuler un grand nombre de lancement de deux dés équilibrés à 6 faces, calculer la somme des nombres
obtenus, puis établir la probabilité d’obtenir 12 pour des grands tirages.

Exercice 6 :
Demander à la machine de choisir aléatoirement un numéro entier entre 1 et 20.
Le joueur rejoue jusqu’à ce qu’il trouve le nombre secret :
le programme vous répond si votre nombre est trop petit, trop grand ou égal à celui trouvé par le programme.
le programme affiche le nombre d’essais ayant mené au bon résultat.

Exercice 7 :
Lors de la construction d’un barrage, on a créé un lac artificiel contenant initialement 80 millions de m3 d’eau.
Chaque année, on estime qu’on prélève 10 % du volume du lac pour produire de l’électricité. Ce lac est par
ailleurs alimenté par une rivière qui lui apporte 6 millions de m3 d’eau par an. Écrire un programme qui
calcule, année après année la capacité du lac.

Exercice 8 : (D'après le concours Kangourou junior 2002)


On choisit deux nombres distincts a et b dans l'ensemble des entiers 1, 2, ..., 26 tels que leur produit est égal à
la somme des 24 autres valeurs restantes. Que peuvent valoir ces nombres ?

Exercice 9 :
Saisir un nombre puis afficher tous les nombres premiers inférieurs à ce nombre.

Vous aimerez peut-être aussi