2 Python
2 Python
1 Présentation
1 1 Pourquoi un tel nom ?
Il existe plusieurs logiciels qui utilisent le langage Python. Cependant, EduPython pos-
sède des avantages non négligeables pour démarrer la programmation avec un nouveau
langage :
? une interface traduite en français pour une plus grande convivialité.
? une bibliothèque lycee qui regroupe les bibliothèques les plus courantes ainsi que
de nouvelles fonctions pouvant servir au lycée.
? Une documentation en français contenant des exemples simples et plus complexes
de programmes.
Si vous utilisez une version portable de Python, votre ordinateur ne saura pas
ouvrir lui-même les programmes Python (.py)
Remarque.
Nous ne détaillerons pas davantage ici la barre d’outils très riche qui nous semble relati-
vement intuitive à utiliser. Enfin, pour utiliser la bibliothèque « lycee », un programme
Python devra commencer par from lycee import *(Pas d’accent à lycee et un espace
après import). Enfin, la première exécution peut parfois prendre du temps.
3
2 Les instructions de base
Remarque. Afin que le programme fonctionne, nous avons attribué à a et b des valeurs
arbitraires. Il est évidemment plus intéressant de demander des valeurs à l’utilisateur.
résultat de la console
Il y a une unique solution
3.0
2 2 Majuscule ou minuscule ?
Les instructions Python s’écrivent en minuscules. On peut utiliser des majuscules
dans les noms de variables. Par contre, il faudra l’écrire exactement de la même façon
dans la suite du programme, en recopiant bien minuscules et majuscules.
1 C o e ff i ci e n t D i r e c t e u r = 2
2 ord onneeAlOrigi ne = 6
3 print ( " y = " , CoefficientDirecteur , " x + " , ordon neeAlOrigine )
résultat de la console
y = 2x + 6
2 3 Commentaires
Le symbole # (se lit « croisillon », « hash » en anglais , symbole proche du « dièse »)
permet de faire figurer d ans l e c orps d u p rogramme u n c ommentaire q ui n e sera
pas pris en compte lors de son exécution. # porte sur le reste de la ligne.
1 a=2
2 b=6
3 if a != 0 : # cas où a est différent de zéro
4 print ( " Il y a une unique solution : " )
5 print ( b / a )
4
2 4 Le rôle du symbole =
Le symbole = n’est pas celui de l’égalité mathématique. Il s’agit d’affecter une valeur
à une variable : on stocke une valeur numérique ou du texte dans une mémoire. La
syntaxe est NomDeLaVariable = valeur.
1 a = 2 # a vaut 2
2 b = 3 # b vaut 3
3 s = b + 3 # s vaut 6
4 e = " bonjour " # e vaut " bonjour " ( chaine de caractères )
5 f = " prêt à faire des mathématiques ? "
6 # f vaut " prêt à faire des mathématiques ?" ( chaine de
caractères )
Remarque.
Évidemment si vous exécutez ce programme rien de visible ne se passe puisqu’aucun
affichage n’est demandé.
résultat de la console
Bonjour,
ce programme calcule 2+3=5
et 3(-2)= -6
5
Remarques.
? Quand on veut afficher plusieurs choses à la suite qui ne sont pas dans la même
ligne de programme, on indique de ne pas passer à la ligne suivante après l’affi-
chage en finissant par ,end = "".
? Quand un programme ne produit pas le résultat attendu, il est important de
penser à ajouter l’affichage des valeurs prises par les variables à chaque étape.
Cela permet de comprendre ce que fait réellement le programme, et facilite la
recherche d’erreurs, quitte ensuite à supprimer cette ligne ou la transformer en
commentaire.
? Pour un produit, le symbole ∗ est indispensable, même s’il y a des parenthèses.
3 2 Les variables
Les noms de variables commencent par une lettre, puis on peut se faire succéder les
caractères que l’on veut, minuscules, majuscules, chiffres, etc. sans espace. Il est toujours
commode d’employer des noms de variables explicites.
1 from lycee import *
2 nb6 = 0
3 for i in range ( 10 ) :
4 if randint (1 , 6 ) == 6 :
5 nb6 = nb6 + 1
6 print ( " Sur les 10 lancers , on a obtenu " , nb6 , ' fois le
numéro " 6 ". ')
résultat de la console
Sur les 10 lancers, on a obtenu 3 fois le numéro "6".
résultat de la console
l’opposé de -8 est 8
Remarque.
Même si on veut demander l’entrée d’un nombre par l’utilisateur, il est conseillé d’écrire
d’abord un code en affectant des valeurs bien choisies dans le corps du programme.
Calcul de l’IMC d’un individu :
1 from lycee import *
2 m = demande ( " masse en kilo : " )
3 t = demande ( " taille en mètre : " )
4 IMC = m /( t * t )
5 print ( " L ' IMC est de : " , IMC )
On peut demander aux élèves de se renseigner sur les valeurs conseillées de l’IMC et
connaissant sa taille, donner l’intervalle dans lequel le poids « idéal devrait être » .
6
3 4 Demande d’un texte
chaine=input(question)
Affiche une fenêtre où figure le texte question et un cadre blanc dans lequel on entrera
la réponse, qui sera considérée comme une chaine de caractères. Cette valeur est ensuite
affectée à la variable chaine.
1 from lycee import *
2 nb = demande ( " Entrez 3 + 2 " )
3 tex = input ( " Pourriez - vous répéter , svp ? " )
4 print ( nb )
5 print ( tex )
6 print ( nb + 1 )
7 print ( tex + " 1 " )
résultat de la console
5
3+2
6
3+21
Remarques.
? nb + 1 est une addition alors que tex + ”1” est une concaténation.
? input renvoie une chaîne de caractère. Si vous effectuez des opérations : soustrac-
tion, division, l’erreur sera repérée, mais pas pour une addition (concaténation)
ni une multiplication par un entier.
? Essayez de remplacer "demande" par "input" dans le programme opposé (3 pro-
grammes avant) et demandez l’opposé de -8.
4 Test et conditions
4 1 Si. . . alors
if test :
effectue (une fois) les instructions indentées qui suivent lorsque le test est vérifié.
Le ”alors” n’apparaît pas en Python, c’est l’indentation qui délimite le bloc à
exécuter.
On peut imbriquer les boucles, à la manière d’un arbre qui se dessinerait avec les
indentations.
7
1 a = demande ( " Entrez a de l ' équation ax + b = 0 " )
2 b = demande ( " Entrez maintenant b de l ' équation ax + b = 0 " )
3 if a != 0 :
4 print ( " Il y a une unique solution : " , end = " " )
5 print ( - b / a )
6 else :
7 if b == 0 :
8 print ( " Il y a une infinité de solutions . " )
9 print ( " Tous les réels sont solutions . " )
10 else :
11 print ( " Il n 'y a aucune solution . " )
4 3 Comparateurs
1. Le symbole ==
Ce symbole désigne l’égalité dans un test.
Recherche d’un triplet pythagoricien d’entiers consécutifs :
1 for i in range ( 100000 ) :
2 a = i * i +( i + 1 ) *( i + 1 )
3 r =( i + 2 ) *( i + 2 )
4 if r == a :
5 print ( " les nombres " ,i , " ," ,i +1 , " et " ,i +2 , "
forment un triplet pythagoricien " )
résultat de la console
les nombres 3 , 4 et 5 forment un triplet pythagoricien
2. < et >
Ces symboles désignent les inégalités strictes habituelles.
1 from lycee import *
2 xA = demande ( " Entrez l ' abscisse du point A " )
3 xB = demande ( " Entrez l ' abscisse du point B " )
4 if xA > xB :
5 dist = xA - xB
6 else :
7 dist = xB - xA
8 print ( " La distance AB est " , dist )
3. <= et >=
Ces combinaisons de symboles désignent les inégalités larges ≤ et ≥ habituelles.
On s’intéresse au volume d’eau contenu dans une cuve parallélépipédique de base rec-
tangulaire (2m par 3m) et de 80 cm de hauteur.
8
1 from lycee import *
2 h = demande ( " valeur de h en décimètres ? " )
3 if 0 > h :
4 print ( " h est impossible " )
5 if h >= 0 and h <= 8 :
6 V = 600 * h
7 print ( " le volume contenu dans la cuve est " ,V , " litres pour h
= " ,h )
8 if h > 8 :
9 print ( " la cuve déborde !!! " )
résultat de la console
le volume contenu dans la cuve est 3600 litres pour h=6
4. Le symbole !=
Cette combinaison de symboles signifie « différent de ».
1 from lycee import *
2 a = randint (1 , 100 )
3 n = demande ( ' Proposer une valeur ')
4 if n != a :
5 print ( " vous avez perdu , le nombre mystère n ' est pas
" ,n )
6 else :
7 print ( ' gagné , vous devriez jouer au LOTO ! ')
4 4 Opérateurs logiques
1. and
Permet d’effectuer une instruction si deux tests sont vérifiés simultanément.
1 from lycee import *
2 n = demande ( ' Proposer une valeur ')
3 if reste (n , 3 ) == 0 and reste (n , 2 ) == 0 :
4 print ( " n divisible par 6 " )
5 else :
6 print ( " n non divisible par 6 " )
2. or
Permet d’effectuer une instruction si au moins un test sur deux est vérifié.
1 from lycee import *
2 x = demande ( ' Proposer une valeur ')
3 if x >= 0 or x <= - 10 :
4 print ( 2 * x )
5 else :
6 print ( 5 * x )
5 Les boucles
Comme dans la plupart des langages, il existe en Python principalement deux manières
de réaliser une boucle, c’est à dire une répétition d’un bloc d’instructions. Comme pour
9
la commande si, la partie à répéter sera indentée vers la droite, ce qui permet en plus
une bonne visibilité de l’algorithme.
2. range(debut,fin,pas)
(Les paramètres debut et pas sont optionnels.) Génère une liste d’entiers :
? Dans l’intervalle [0 ; fin[ si un seul paramètre est renseigné.
? Dans l’intervalle [debut ; fin[ si 2 paramètres 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.
Voici un programme qui permet de calculer la somme des n premiers entiers naturels :
1 from lycee import *
2 n = demande ( ' Proposer une valeur ')
3 S=0
4 for I in range (1 , n + 1 ) :
5 S=S+I
6 print ( S )
5 2 Boucle conditionnelle
Dans la pratique, on ne connaît que rarement le nombre d’itérations pour arriver au
résultat (d’où l’intérêt d’un programme). On peut alors utiliser des boucles de type
TANT QUE . . . FAIRE . . .
while condition :
Exécute une instruction ou un bloc d’instructions tant que la condition est vérifiée. (La
boucle peut donc ne jamais être exécutée si, d’entrée la condition n’est pas remplie).
L’exemple classique est l’algorithme d’Euclide pour calculer le plus grand commun
diviseur PGCD de 2 entiers naturels :
1 from lycee import *
2 a , b = demande ( " Entrez deux entiers strictement positifs . " )
3 print ( " PGCD ( " ,a , " ," ,b , " ) = " , end = " " )
4 while b != 0 :
5 a , b = b , reste (a , b )
6 print ( a )
résultat de la console
PGCD(35,25)=5
10
1 from lycee import *
2 n = demande ( ' Proposer une valeur ')
3 print ( puissance (2 , n ) )
6 3 La racine carrée
√
sqrt(x) retourne où x est un nombre positif.
Le mathématicien grec Héron d’Alexandrie (Ier siècle après J.-C.) a trouvé une formule
pour calculer l’aire d’un triangle connaissant la longueur de ces 3 côtés :
A = p(p − a)(p − b)(p − c) où a, b et c représentent les longueurs des 3 côtés de
p
6 4 Les constantes
pi désigne la constante qui vaut une valeur approchée du nombre π.
6 5 Le hasard
Il existe différentes manières de tirer un nombre au hasard selon ce que l’on a besoin de
faire dans un programme. Voici 3 fonctions qui devraient déjà répondre à la majorité
de vos besoins :
1. random()
Cette fonction renvoie un nombre décimal de l’intervalle [0 ; 1[. Cette fonction ne né-
cessite pas d’argument, pensez cependant à ouvrir et fermer les parenthèses. (Comme
pour la fonction ALEA() sur le tableur).
11
2. uniform(min,max)
Cette fonction renvoie un nombre décimal de l’intervalle [min ; max[, choisi selon une
densité uniforme sur cet intervalle.
3. randint(min,max)
Renvoie un nombre entier de l’intervalle [min ; max], avec un tirage équiprobable.
Une fonction est un bloc d’instructions qui a reçu un nom, dont le fonctionnement
dépend d’un certain nombre de paramètres (les arguments de la fonction) et qui
renvoie un résultat (au moyen de l’instruction retourne).
Remarques.
? Les entrées d’une fonction se font en donnant des valeurs aux arguments.
? Une fonction peut n’avoir aucun argument.
? On peut utiliser l’instruction print dans une fonction. Contrairement à l’instruc-
tion retourne, le programme continue après print alors qu’il s’arrête après avoir
rencontré retourne.
? Une fonction peut être appelée dans un programme ou dans une autre fonc-
tion. Ainsi, les fonctions permettent d’éviter des redondances et de structurer les
programmes.
1 def f ( x ) :
2 return ( 3 *x - 1 )
résultat de la console
f (5)
14
12