Programmation en Python - Lycée Augustin Fresnel - Bernay

Programmation en Python

Instructions

  1. Saisir le code en Python dans la partie gauche ci-dessus.
  2. Cliquer sur le bouton (View the result) pour lancer l’interprétation du code.
  3. Observer les résultats dans la partie droite.

Pour télécharger le code saisi, cliquer sur , puis sur . Vous obtiendrez un fichier zip contenant votre fichier Python.
Plus simplement, vous pouvez aussi effectuer un copier-coller du code.

Les bases du langage Python

Le langage Python

Python est un langage de programmation interprété : le code est envoyé à un serveur sur lequel un programme analyse les lignes une par une avant d’effectuer les opérations demandées. À la fin, le résultat est envoyé au navigateur qui l’affiche dans la zone à droite. Si le code contient des erreurs, celles-ci sont décrites avec plus ou moins de précision dans la partie inférieure.

Cliquez sur les onglets ci-dessus pour obtenir quelques éléments de ce langage.

Commentaires

Les commentaires facilitent la compréhension du code. Ils sont ignorés par l’interpréteur.

Un commentaire commence par un caractère dièse et se poursuit jusqu’à la fin de la ligne.

Exemples :

# Ceci est un commentaire n = n + 1 # On incrémente n

Les commentaires permettent également de désactiver temporairement une ou plusieurs lignes de code sans les supprimer totalement (pour le cas où l’on aurait besoin de les réutiliser). Ceci s’avère particulièrement utile pendant la phase de mise au point du code. Cela permet de voir comment se comporte le code sans les lignes commentées.

Variables

Les variables sont des zones de mémoire dans lesquelles les données sont stockées. Leurs noms ne peuvent pas comporter d’accent ni d’espace.

Exemples de noms de variables :

x # correct perimetre # correct Perimetre # correct périmètre # incorrect (à cause des accents) nbDeRepetitions # correct nb de repetitions # incorrect (à cause des espaces) nb-de-repetitions # incorrect (à cause des traits d’union) # les traits d’union sont interprétés comme des signes moins nb_de_repetitions # correct

Attention ! Python est sensible à la casse. Cela signifie qu’il fait la différence entre majuscules et minuscules. Ainsi, xmin et Xmin désignent deux variables différentes.

Par ailleurs, un certain nombre de mots sont réservés en Python et ne peuvent donc pas être utilisés comme noms de variables. Il s’agit des mots clés suivants :

from, import class, as, is, pass, del if, elif, else, while, for, in, break, continue raise, try, except, finally, with, assert def, return, yield, global, nonlocal, lambda, None False, True, and, or, not

Affectation de valeurs

Affecter une certaine valeur à une variable consiste à enregistrer cette valeur dans la variable dont le nom est indiqué. Pour cela, on utilise le signe égal.

Exemples d’affectations :

n = 123 # Stocke le nombre entier 123 dans la variable n. # Ce code se lit « n prend la valeur 123 »   n=123 # Donne le même résultat que ci-dessus. # Le fait d’ajouter des espaces de chaque côté du signe # égal n’a pas d’influence sur l’interprétation du code, # mais cela peut rendre le code plus lisible.   x = 123.5 # Permet de stocker le nombre décimal 123,5 dans la variable x. # On notera que la virgule est remplacée par un point.   message = "Salut !" # Permet de stocker la chaîne de caractères « Salut ! » # dans la variable message.

Attention !
n = 123 n’est pas une comparaison mais une affectation. Il ne faut donc pas confondre cette expression avec n == 123 qui s’écrit avec deux signes égal et qui compare effectivement la valeur de n avec 123.

Opérations sur les données

Exemples d’opérations algébriques sur les nombres :

x = 1 + 2*y + 3*y**2 # Calcule 1+2y+3y² puis le stocke dans x. z = 2/3 - 1/5 # Effectue le calcul et enregistre le résultat sous forme # décimale arrondie dans z.

On pourra noter que les puissances se notent à l’aide de deux astérisques en Python. y3 s’écrit donc y**3.

Opérations sur les chaînes de caractères :

message = "Bonjour " + nom # Permet de concaténer deux chaînes de caractères. # Si la variable nom contient la chaine de caractères # « Paul », alors la variable message contiendra la # chaîne « Bonjour Paul ».

Affichage des résultats

La fonction print permet d’afficher une ou plusieurs valeurs. Quand il y en a plusieurs, il faut les séparer à l’aide de virgules.

Exemples :

print("Bonjour !") # Affiche le texte Bonjour ! dans la zone des résultats. print(x,y) # Affiche la valeur de x suivie de la valeur de y, # avec une espace entre les deux.   x = 2 y = 3 print("[",x," ;",y,"]") # Ces trois lignes produisent le résultat suivant : [ 2 ; 3 ]

Indentation

L’indentation est utilisée en Python pour délimiter un bloc de code tel que ceux qui suivent un if, un for, un while ou un def.

Cette indentation apparait sous la forme d’un décalage du code vers la droite.
Il s’obtient en appuyant une fois sur la touche de tabulation du clavier (celle avec une double flèche, située à gauche de la touche A). Ne pas utiliser d’espaces à la place !

Un caractère deux points à la fin de la ligne précédente annonce toujours une tabulation.

Dans les exemples de codes, l’indentation est indiquée par des tirets __. En cas de copier-coller des exemples, penser à remplacer ces tirets par des tabulations !

Exemples :

if (x > 0): __print("x est strictement positif")
n = 1 for (i in range(5)): __n = 2*n
n = 1 while (n < 20): __n = 2*n
def f(x): __return 3*x+2

Branchement conditionnel

Pour effectuer des opérations uniquement lorsque certaines conditions sont remplies, on utilise les instructions de test if, elif et else.

Exemple :

if (x < 0): # Est-ce que x est strictement négatif ? __print("x est négatif") # Oui, x est strictement négatif. elif (x > 0): # Non, x n’est pas strictement négatif # Est-il strictement positif ? __print("x est positif") # Oui, x est strictement positif. else: # x n’est ni strictement négatif, ni strictement positif. __print("x est nul") # Par conséquent, x ne peut être que nul.

Les tirets __ placés au début de certaines lignes doivent être remplacés par des indentations.

Attention à ne pas oublier les deux-points qui terminent les lignes du if, du elif et du else. (elif est la contraction de else if.)

Les instructions if et elif sont suivies d’un test. Les tests sont présentés au point suivant.

Comparaisons et tests

Les instructions de test if, elif ou de boucle while sont basées sur des tests. Le résultat d’un test est vrai ou faux, ce qui est codé par True ou False en Python.

Exemples de test :

(a < b) # Est-ce que a est strictement inférieur à b ? (a <= b) # Est-ce que a est inférieur ou égal à b ? (a > b) # Est-ce que a est strictement supérieur à b ? (a >= b) # Est-ce que a est supérieur ou égal à b ? (a == b) # Est-ce que a et b sont égaux ? (a != b) # Est-ce que a est différent de b ? (a <= b) and (b <= a+1) # Est-ce que b est compris dans l’intervalle [a;a+1] ? (b < a) or (a+1 < b) # Est-ce que b est en dehors de l’intervalle [a;a+1] ? print(1 < 2) # Affiche True print(2 < 1) # Affiche False

Les tirets __ placés au début de certaines lignes doivent être remplacés par des indentations.

Boucle for

Pour répéter des opérations un nombre de fois connu à l’avance, on utilise une boucle for.

Exemple 1 :

for i in range(1,6): # On répète 5 fois la ligne qui suit __print(i) # On affiche la valeur de i

Ces deux lignes provoquent l’affichage des chiffres de 1 à 5.

On notera que la boucle fait varier i de 1 à 5 et non pas jusqu’à 6. La dernière valeur d’un range n’est en effet jamais atteinte.

Exemple 2 :

x = 1 for i in range(1,11): # On répète 10 fois les lignes indentées qui suivent __x = 2*x # On double la valeur de x __print(x) # On affiche la valeur de x

Le code précédent calcule les 10 premières puissances de 2 : 21, 22,..., 210.

Les tirets __ placés au début de certaines lignes doivent être remplacés par des indentations.

Boucle while

Pour répéter des opérations jusqu’à ce qu’une condition soit satisfaite, on utilise une boucle while.

Exemple :

n = 2 # Initialise n à 2 while (n < 100): # On répète la ligne qui suit tant que n reste inférieur à 100 __n = n*3 # On triple la valeur de n print(n) # On affiche le résultat

Ce code multiplie n par 3 de façon répétée. La première valeur de n qui atteint ou dépasse 100 est finalement affichée.

Les tirets __ placés au début de certaines lignes doivent être remplacés par des indentations.

Listes

En Python, une liste est un type de variable qui propose une succession d’espaces de stockage accessibles à l’aide d’un indice. Une liste est analogue à un tableau de valeurs.

Exemples :

liste = [1, 2, 3, 4, 5] # Stocke les entiers de 1 à 5 dans la liste print(len(liste)) # Affiche le nombre d’éléments de la liste print(liste) # Affiche toute la liste print(liste[0]) # Affiche 1, la première valeur de la liste # Attention ! Le premier indice d’une liste est toujours 0 print(liste[3]) # Affiche 4, la quatrième valeur de la liste print(liste[5]) # Provoque l’affichage d’une erreur # car le dernier indice acceptable est 4

Il est également possible de créer une liste progressivement :

liste = [] # Crée une liste vide for i in range(1,6) : # On répète 5 fois la ligne qui suit __liste.append(i*i) # On stocke le carré de i dans la liste print(liste) # On affiche la liste
liste = [i*i for i in range(1,6)] # Produit le même résultat que ci-dessus print(liste) # mais le code est plus condensé

Imports de fonctions

Le langage Python possède un nombre limité de fonctions de base. Pour lui ajouter des fonctionnalités, on utilise l’instruction import.

Exemple :

import math # On importe le module math y = math.sin(1.52) # On calcule le sinus de 1,52 radians. z = math.log(1+math.exp(-3)) # Un autre exemple de calcul

Les instructions d’import sont généralement regroupées dans les premières lignes du code.

import math as M # On importe le module math avec un nom plus court y = M.sin(1.52) # Ces deux lignes sont équivalentes à celles de l’exemple z = M.log(1+M.exp(-3)) # ci-dessus, mais le code est un peu plus compact

Dans le module math, on trouve : la constante pi, sqrt(x) (racine carrée de x), exp(x), log(x) (attention ! c’est le logarithme népérien), sin(x), cos(x), arcsin(x), arccos(x), floor(x) (la partie entière), et bien d’autres choses.

Dans le module random, on trouve : random() (fonction qui renvoie un nombre aléatoire compris entre 0 et 1)

Pour avoir la liste des modules supportés, cliquez sur le point d’interrogation au dessus de la zone de saisie.

Création de fonctions

Pour éviter d’avoir à écrire plusieurs fois le même code, on peut le placer dans une fonction.

Exemple :

def f(x): # On crée une fonction nommée f avec un paramètre x __return 3*x+2 # On calcule 3x+2 et l’on retourne le résultat   y = f(4) # On calcule f de 4 que l’on stocke dans y print(y) # On affiche le résultat : 14   for i in range(-5,6): __print(i, f(i)) # On affiche les nombres entiers de -5 à 5 # suivis de leurs images par f

Attention !
La fonction range(a, b) énumère tous les nombres entiers de a à b-1. La valeur b n’est donc pas atteinte !

Entrée de valeurs

Au lieu de présaisir les valeurs initiales d’un programme, il est possible de demander à l’utilisateur de les saisir pendant l’exécution du programme.

Exemples :

print("Saisir une valeur :") x = input()

Le code précédent affiche "Saisir une valeur :" puis attend une saisie au clavier de l’utilisateur terminée par un appui sur la touche entrée. La chaîne de caractères saisie est alors stockée dans la variable x.

x = input("Saisir une valeur :") # Comme ci-dessus mais en plus compact

Les saisies sont toujours au format texte, même lorsque l’utilisateur ne saisit que des chiffres. Pour transformer la saisie en nombre, il faut effectuer un transtypage :

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

La seconde ligne ci-dessus transforme la chaîne de caractères contenue dans x en entier puis la stocke dans x. Cet exemple montre également qu’une même variable peut être utilisée pour stocker des données de types différents.

Si l’utilisateur saisit une lettre, le transtypage en entier provoquera une erreur.

x = int(input("Saisir un nombre :")) # Comme ci-dessus mais en plus compact

Le transtypage en entier (int) ou en nombre décimal (float) est indispensable pour pouvoir faire des calculs avec les valeurs, comme le montre l’exemple suivant :

x = float(input("Saisir un premier nombre :")) y = float(input("Saisir un autre nombre :")) print("La somme des deux nombres vaut :",x+y)

Erreurs courantes

Confondre majuscules et minuscules dans un nom de variable.

Exemple de code erroné :

resultat = 123*7-12 print(Resultat)

Il ne faut pas oublier qu’en Python, resultat et Resultat désignent deux variables différentes.

Confondre = et == entre des valeurs.

= sert à stocker un contenu dans une variable alors que == sert à comparer deux valeurs.

Exemple de code :

if (n=3): # Code incorrect (ici, on stocke 3 dans n) if (n==3): # Code correct (on compare la valeur de n avec 3)

Oublier de fermer une chaine de caractères.

Exemple de code :

print("x vaut",x,"et y vaut,y) # Code incorrect print("x vaut",x,"et y vaut",y) # Code correct

Il faut toujours s’assurer que chaque guillemet ouvrant correspond à un guillement fermant. La coloration syntaxique aide à repérer les chaînes de caractères non fermées.

Insérer plusieurs espaces au lieu d’utiliser la touche de tabulation devant les blocs des structures conditionnelles ou des boucles.

while (n < 100): ……n = 2*n # Code incorrect : il y a des espaces avant le n   while (n < 100): __n = 2*n # Code correct : il y a une tabulation avant le n

C’est une erreur difficile à repérer car les espaces comme les tabulations ne sont pas visibles (dans les exemples ci-dessus, des points et des tirets rouges ont été utilisés à la place pour les rendre visibles). Il est conseillé d’utiliser la touche de tabulation (située à gauche de la touche A) pour indenter le texte dans ces structures.

Pour aller plus loin

Si vous souhaitez en apprendre davantage sur le langage Python, vous pouvez vous rendre sur le site W3Schools sur lequel vous trouverez de nombreux tutoriels interactifs sur ce langage ainsi que sur de nombreux autres.

Police pour dyslexie ?
Interlignage double ?