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.
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.pyPour 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.
Malgré tout le soin que vous porterez à programmer, des erreurs se glisseront dans vos programmes. Il en existe trois types principaux :
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).
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)
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).
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.
Plusieurs opérateurs de comparaison sont disponibles.
Comparateur | Syntaxe | Types de variables |
---|---|---|
a égal à b | a == b | Tous |
a différent de b | a != b | Tous |
a supérieur à b | a > b | Numériques |
a supérieur ou égal à b | a >= b | Numériques |
a inférieur à b | a < b | Numériques |
a inférieur ou égal à b | a <= b | Numériques |
a [pas] dans b | a [not] in b | a : Tous, b : Liste ou texte |
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 :
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")
Écrivez un programme demandant l'âge de l'utilisateur et affichant si celui-ci est majeur ou mineur.
É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.
É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.