Un programme consiste en une suite d'instructions structurées et exécutées par un ordinateur. Cette définition est le cœur de ce chapitre. Nous allons ici écrire nos premiers scripts Python en utilisant les bases que nous avons vues dans le chapitre précédant mais en modifiant le déroulement des opérations en introduisant l'exécution conditionnelle.

Les scripts

Nous ne travaillerons plus à partir de l'interpréteur, mais nous éditerons des scripts que nous pourrons éditer et sauvegarder. Un script Python consiste en un fichier texte ayant pour extension .py et contenant du code Python. En voici un exemple :

#!/usr/bin/env python3

longueurPiece = 17		# En mètres
largeurPiece = 9		# En mètres
longueurCarrelage = 0.3		# En mètres
airePiece = longueurPiece*largeurPiece
aireCarreauCarrelage = longueurCarrelage**2
nombreCarreauxCarrelage = airePiece/aireCarreauCarrelage
print("Il vous faudra",nombreCarreauxCarrelage,"carreaux pour recouvrir une pièce de",airePiece,"m2." )

Vous aurez remarqué qu'il s'agit des mêmes instructions que nous avons déjà rencontrées. Notez par ailleurs l'ajout de la ligne #!/usr/bin/env python3 : cette ligne indique aux systèmes d'exploitation de type Unix qu'il s'agit d'un script Python et non d'un autre type de script (tels que Ruby, bash …) et lui fournit l'adresse de l'interpréteur avec lequel lire le script (ici /usr/bin/env python3). Il s'agit du shebang. Dans ce cours, nous imposons la présence de ce shebang.

Pour créer un nouveau script, utilisez un éditeur de texte tel que Notepad++, Atom ou plus simplement bloc-notes. Pour taper votre code source et enregistrez-le dans un fichier ayant pour extension .py.

Pour exécuter un script Python, entrez la commande suivante dans votre shell Linux :

python3 monScript.py
Pour rendre votre code exécutable directement, effectuez ceci :
chmod +x monScript.py
./monScript.py

Il est possible d'interrompre manuellement l'exécution d'un programme avec la combinaison des touches CTRL et C.

Les types d'erreurs

Malgré tout le soin que vous porterez à programmer, des erreurs se glisseront dans vos programmes. Il en existe trois types principaux :

Erreur de syntaxe
Dans un programme, la syntaxe doit être parfaitement correcte : la moindre erreur dans le nom des fonctions ou d'indentation provoquera un arrêt de fonctionnement ou une exécution erratique.
Erreur sémantique
Le programme fonctionne, cependant, vous n'obtenez pas le résultat souhaité. Dans ce cas, c'est que le séquencement des instructions de votre programme n'est pas correct.
Erreur d'exécution
Un élément extérieur vient perturber le fonctionnement normal de votre programme. Ces erreurs, également appelées exceptions, sont dues à des circonstances particulières comme par exemple votre programme doit lire un fichier mais il est absent ou l'utilisateur n'a pas entré la valeur attendue.

Les commentaires

Lors de l'écriture d'un script, il est vivement recommandé de commenter ce que fait le programme. Pour ajouter une ligne de commentaires, celle-ci doit commencer par un #. Cela indique à l'interpréteur d'ignorer la ligne à partir de ce caractère jusqu'à la fin de la ligne.

a=4			# Voici un commentaire.
# Un commentaire sur toute la ligne.
# Exemple :
tailleTourEiffel = 324	# Exprimé en mètres jusqu'à l'antenne.

Dans ce cours, il sera exigé de commenter les opérations complexes pour en définir simplement leur fonctionnement.

Il est tout aussi recommandé de renseigner une documentation sur le script ou la fonction que vous développez pour renseigner comment elles fonctionnent et comment s'interfacer avec. La documentation doit être saisie au début, précédée et suivie par ceci : """ (trois fois les double-guillemets). En voici un exemple :

#!/usr/bin/env python3
"""Calculatrice pour la pose de carrelage. """

longueurPiece = 17		# En mètres
largeurPiece = 9		# En mètres
longueurCarrelage = 0.3		# En mètres
airePiece = longueurPiece*largeurPiece
aireCarreauCarrelage = longueurCarrelage**2
nombreCarreauxCarrelage = airePiece/aireCarreauCarrelage
print("Il vous faudra",nombreCarreauxCarrelage,"carreaux pour recouvrir une pièce de",airePiece,"m2." )

Cette documentation sera accessible en tapant help(fonction).

Séquences d'instructions

Sauf cas spéciaux, les instructions sont exécutées les unes après les autres. Cette caractéristique peut parfois jouer des tours si l'ordre des instructions n'est pas correct. Voici un exemple dans lequel l'ordre des instructions est crucial. Dans ce cas, intervertir les lignes 2 et 3 donne un résultat différent :

a, b = 2, 8
a=b
b=a
print(a,b)

Interaction utilisateur

Nous allons rendre nos programmes plus interactifs. Pour cela, nous allons demander à l'utilisateur final de saisir des données que nous utiliserons dans nos programmes. Nous allons donc utiliser la fonction input(). Si vous saisissez une chaîne de caractères entre les parenthèses (on parle de "passer en argument" la chaîne de caractères), celle-ci précédera la saisie utilisateur mais ceci est facultatif. La version 3 de Python détecte automatiquement le typage de la saisie utilisateur. Voici un exemple d'utilisation de cette fonction :

>>> nom = input("Entrez votre nom : ")
Entrez votre nom : Michel
>>> print("Bonjour",nom)
Bonjour Michel

Le type de variable retourné est une chaîne de caractères. Pour la convertir en réel (dit flottant), utilisez float(variable). Pour la convertir en entier, utilisez int(variable).

Les conditions

Nous allons introduire un des cas particuliers à l'ordre d'exécution des instructions : les conditions. Cela permet d'exécuter une portion de code si une certaine condition est remplie, et une autre portion si cette même condition n'est pas remplie. Voici un exemple permettant de clarifier cela :

nombre = int(input("Entrez un nombre : "))
inferieurA5 = False
if nombre < 5:
	print("Le nombre est inférieur à 5. ")
	inferieurA5 = True
else:
	print("Le nombre est supérieur ou égal à 5. ")

Dans le cas précédent, les lignes 4 et 5 seront exécutées si l'utilisateur saisit un nombre inférieur à 5. La ligne 7 est exécutée si le nombre ne remplit pas cette condition. De manière plus générale, voici la syntaxe d'une condition :

if condition 1:
	début bloc code si la condition 1 est vraie
	...
	fin bloc code si la condition 1 est vraie
elif condition 2:
	début bloc code si la condition 1 est fausse et la condition 2 est vraie
	...
	fin bloc code si la condition 1 est fausse et la condition 2 est vraie
else:
	début bloc code si les conditions 1 et 2 sont fausses
	...
	fin bloc code si les conditions 1 et 2 sont fausses

Pour cela, on utilise les instructions if (si en anglais) auxquelles on juxtapose la condition, et terminées par ":". Cette condition est à remplir pour exécuter le bloc de code délimité par une tabulation en début de chaque ligne.

On peut, ceci est facultatif, mettre une instruction elif (sinon si en anglais) permettant de vérifier une seconde condition si la première est fausse. On peut chaîner autant d'instructions elif que nécessaire.

Enfin, l'instruction else (sinon en anglais), elle aussi facultative, exécute un bloc de code si les conditions énumérées avec if et elif n'ont pas été remplies.

Les opérateurs de comparaison

Plusieurs opérateurs de comparaison sont disponibles.

ComparateurSyntaxeTypes de variables
a égal à ba == bTous
a différent de ba != bTous
a supérieur à ba > bNumériques
a supérieur ou égal à ba >= bNumériques
a inférieur à ba < bNumériques
a inférieur ou égal à ba <= bNumériques
a [pas] dans ba [not] in ba : Tous, b : Liste ou texte

Les blocs d'instructions

Comme abordés dans la partie précédente, nous parlerons des blocs d'instructions. Un bloc d'instructions est un ensemble d'instructions (pléonasme !) associé à une ligne d'en-tête (nous avons déjà vu if, elif ou else mais on retrouve également while, for, def …). Ces lignes d'en-tête se terminent par un double point (:).

Un bloc de code est délimité par son indentation. Les lignes d'instructions d'un même bloc de code sont indentées de manière identique (possèdent le même nombre de tabulations au début de celles-ci). Les blocs peuvent être imbriqués comme l'illustre le schéma suivant :

Début de la ligne Bloc 1 Ligne d'en-tête: Bloc 2 Ligne d'en-tête: Bloc 3 Suite du bloc 2 Suite du bloc 1

L'exemple suivant met en application l'imbrication de blocs d'instructions :

nombre = 17
if nombre > 10:
	print("Le nombre est supérieur à 10")
	if nombre < 20:
		print("Le nombre est inférieur à 20")
	else:
		print("Le nombre est supérieur à 20")
else:
	print("Le nombre est inférieur à 10")

Exercices

  1. Écrivez un programme demandant l'âge de l'utilisateur et affichant si celui-ci est majeur ou mineur.

    Démarrer l'activité avec Python Studio

  2. Écrivez un programme permettant, à partir d'un montant hors taxes saisi par l'utilisateur, de calculer le montant de la TVA (20% du montant hors taxes) et du montant TTC (montant hors taxes auquel on ajoute le montant de la TVA) et donnez le détail du calcul.

    Démarrer l'activité avec Python Studio

  3. Écrivez un programme vérifiant si dans un texte saisi par l'utilisateur, celui-ci contient le mot "fraise" ou le mot "pêche".

    Exemple :

    Entrez un texte : pêche
    Le texte contient le mot pêche. 
    Entrez un texte : fraise
    Le texte contient le mot fraise. 
    Entrez un texte : prune
    Le texte ne contient ni le mot pêche ou fraise. 
    

    Démarrer l'activité avec Python Studio