Intro Python

Identification

Infoforall

1 - Introduction à Python


Voici comment la plupart des gens pensent que l'informatique fonctionne :

Logiciel nécessaire pour l'activité : Python 3 : Thonny, IDLE ou un site sur lequel on peut faire interpréter du Python

Evaluation

  question 05

Exercices supplémentaires 🏠 : sur le site

Documents de cours PDF : .PDF

Sources latex : .TEX et entete.tex et licence.tex

Résumé : Version HTML ou imprimable ou ou PDF (couleur ou gris)

1 - Comment programmer avec Python ?

Cette activité d'introduction vous présente rapidement Python et les différentes choses que vous avez peut-être vu en seconde. Dans les activités suivantes, nous les aborderons en partant de zéro de toutes manières. Savoir ce que vous avez vu, ou pas, nous permettra de savoir sur quoi insister ou passer rapidement.

Voici comment la plupart des étudiants vont devoir apprendre l'informatique lors de leurs études supérieures de sciences, d'économie ou de communication s'ils n'ont jamais fait d'intormatique théorique :

Forcément, ca se passe mal et ça semble compliqué...

Heureusement pour vous, vous êtes en NSI !

Inutile de télécharger et d'installer Python ou Thonny si vous êtes en salle informatique. Tout est déjà installé.

Si vous ne trouvez pas, pensez à me demander.

Pour programmer en Python, il vous faut une version de Python 3 installée sur votre ordinateur.

Pour cela, plusieurs solutions existent :

  1. Télécharger l'interpréteur Python sur votre ordinateur : vous n'installez que le minimum. Il s'agit du programme qui pourra lire et interpréter vos codes-sources Python. Il les traduira en code machine composé de 0 et de 1.
  2. Lien vers Python

  3. Télécharger un Environnement de développement incorporant un interpréteur Python mais également des outils pratiques pour programmer (exécution progressive du programme en mode pas à pas, recherche et modification de texte...).
    Nous utiliserons Thonny sur ce site.
  4. Lien versThonny. Il s'agit d'un logiciel développé par l'Université de Tartu en Estonie.

    Il existe bien d'autres environnements de développement pour Python. La plupart sont très complets mais destinés à des professionnels. Comme certains élèves prennent NSI juste pour comprendre ce que peut faire l'informatique, Thonny est un bon compromis : facile à installer, facile à utiliser, facile à gérer.

    En anglais, Environnement de développement se note IDE : Integrated Development Environment.

  5. Des solutions en ligne, comme Basthon. Pratique pour dépanner mais problématique en cas de panne d'Internet.
1 - Utiliser Python

On peut utiliser un programme Python à l'aide de plusieurs programmes différents :

  • Soit directement avec un programme nommé interpréteur Python : c'est un programme qui traduit le code-source de votre programme Python en langage machine.
  • Soit en utilisant un Environnement de Développement, comme Thonny.
  • Soit en utilisant un site Web adapté, comme Basthon.

Travail à faire chez vous

Pour pouvoir travailler chez vous, le plus simple est de simplement installer Thonny.

2 - Thonny

Commençons par voir comment utiliser la console interactive de Thonny. C’est basique en terme d’affichage mais cela ne nécessite aucune gestion des fenêtres. Pour débuter, c’est donc pratique.

Si Thonny n'est pas installé, il est temps d'aller voir l'article sur l'installation de Python et de Thonny dans le menu du haut de page.

2.1 - Distinction entre fenêtre de programmation et console interactive

On distingue :

  • La zone programmation en haut.
  • Permet de créer un programme qu'on exécute avec la flèche verte.

  • La zone interactive en bas
  • Les trois chevrons >>> indiquent que l'interpréteur est prêt à exécuter immédiatement mais une seule fois l'instruction fournie après avoir validé avec ENTREE.

    Cette zone est nommée CONSOLE PYTHON en Français, PYTHON SHELL en anglais.

✔ 01 (action)° Ouvrir Thonny et tester sa console avec ces quelques expressions simples.

>>> 3 + 8 11 >>> 3 3 >>> 3 * 10 30 >>> 3.5 + 1.0 4.5

On remarque donc qu'on obtient le résultat de notre demande sur la console.

✔ 02 (action)° Tester cette autre expression pour constater que l'interpréteur Python signale clairement lorsqu'il ne comprend pas ce qu'on lui demande.

>>> Ca va bien ? File "<pyshell>", line 1 Ca va bien ^ SyntaxError: invalid syntax

✔ 03 (action)° Tester cette autre expression pour constater que parfois l'interpréteur Python signale l'erreur et produit beaucoup de texte. L'information importante se situe sur la dernière ligne, toujours.

>>> 12 / (3 - 3) Traceback (most recent call last): File "/home/rv/apps/thonny/lib/python3.7/site-packages/thonny/backend.py", line 1171, in wrapper result = method(self, *args, **kwargs) File "/home/rv/apps/thonny/lib/python3.7/site-packages/thonny/backend.py", line 1158, in wrapper return method(self, *args, **kwargs) File "/home/rv/apps/thonny/lib/python3.7/site-packages/thonny/backend.py", line 1234, in _execute_prepared_user_code value = eval(expression, global_vars) File "<pyshell>", line 1, in <module> ZeroDivisionError: division by zero

✔ 04 (action)° Tester cette dernière expression pour constater que, cette fois, la réponse de Python est... perturbante.

>>> 5,2 + 1,2 (5, 3, 2)
2.2 Les types d'erreurs

Lorsqu'on fournit un texte à l'interpréteur, il analyse la demande. Plusieurs cas possibles :

Plusieurs cas se présentent :

  1. Pas d'erreur : la réponse de l'interpréteur correspond à ce que nous voulions qu'il fasse.
  2. >>> 3.5 + 1.0 4.5
  3. Erreur de syntaxe : la demande ne correspond pas aux règles de syntaxe du langage. L'interpréteur ne comprend pas la demande !
  4. >>> Ca va bien ? SyntaxError: invalid syntax

    En terme d'analogie, c'est comme si en lisant une phrase, vous ne parveniez pas à en comprendre la signification à cause d'une virgule manquante, d'une mauvaise conjugaison ou autre erreur de non respect de la syntaxe du Français.

    En Python, le texte doit être entouré de guillemets, simple ' ou double ". C'est cela qu'attend Python si vous voulez lui transmettre un texte :

    >>> 'Ca va bien ?' 'Ca va bien ?'
  5. Erreur d'exécution : demande bien formulée mais l'exécution réelle échoue.
  6. >>> 12 / (3 - 3) ZeroDivisionError: division by zero
  7. Erreur sémantique : votre interprétation de la demande n'est pas la même que celle de l'interpréteur. Sa réponse est donc "bonne" mais ne correspond pas à ce que vous vouliez faire.
  8. >>> 5,2 + 1,2 (5, 3, 2)

    L'énorme problème de ce type d'erreur ?

    Impossible pour l'interpréteur Python de signaler que sa réponse ne correspond pas à ce qui se passe dans votre tête !

2.3 - Fonctionnement de la console

L’intérêt de la console vient des choix limités d’interaction : pas de couleur, pas de souris...

L'algorithme est basé sur une boucle infinie :

  1. ATTENTE : il attend que l'utilisateur valide sa demande avec ENTREE
  2. INTERPRETATION : il tente d'interpréter la demande
  3. AFFICHAGE : il affiche
    • soit le résultat du travail demandé.
    • soit un message d'erreur en rouge
  4. Il revient à l'étape 1

La console a été programmée pour afficher le résultat final obtenu. C'est un choix de conception, rien d'autre.

3 - Pourquoi programmer ?

Nous avons vu comment programmer avec 3 outils (Python directement, l'IDE Thonny ou l'interface Web Basthon)... Reste à voir pourquoi programmer !

3 - Les 4 piliers de l'informatique

L'informatique est une science qui consiste à résoudre les problèmes. Mais c'est une science assez difficile à appréhender car elle est composée de plusieurs piliers, plus ou moins dépendants.

  • 1er pilier : l'information ou les données : pour travailler sur un problème, il faut parvenir à encoder les informations liées à ce problème.
  • 2e pilier : l'algorithmique : la science de la résolution des problèmes (rapidement, correctement et machinalement)
  • 3e pilier : la machine : comment fonctionne-t-elle ? Que sait-elle faire ou pas ?
  • 4e pilier : le langage : comment communiquer sans ambigüité avec la machine, avec quelle puissance d'explication ?

Chacun de ces piliers fait partie de l'informatique.

C'est la programmation qui les relie entre eux.

flowchart LR A(Algorithmique) & D(Données) o--o B((Programmation)) B o--o L(Langage) & M(Machine)

Image non affichée ?

4 - Manuel de survie Python

Dans cette partie, nous allons voir quelques notions fondamentales qui vont vous permettre de commencer à programmer.

⚙ 05° Pour programmer en Python, vous allez taper du texte, juste du texte.

A qui est-il destiné ?

A un programme nommé "interpréteur Python", capable de le lire, l'interpréter et en déduire ce que vous voulez qu'il fasse.

Réaliser ceci :

  1. Rechercher et ouvrir le logiciel Thonny, un interpréteur Python.
  2. Dans la fenêtre du haut, copier-coller le texte ci-dessous (ce texte se nomme code-source) :
  3. 1 2 3 4 5
    nombre = 10 prix = 4 total = prix * nombre print(total)
  4. Appuyer sur la flèche verte pour lancer le programme : comme c'est la première fois que vous le sauvegardez, il va vous demander où l'enregistrer. Placez le dans vos documents en le nommant par exemple intro.py.
  5. Traduire chaque ligne en français (pensez à aller lire la correction après l'avoir fait ou si vous bloquez totalement).

...correction...

  1. L1 : déclaration d'une variable nombre qui référence 10.
  2. L2 : déclaration d'une variable prix qui référence 4.
  3. L3 : déclaration d'une variable total qui référence le calcul de droite. On mémorise donc 40.
  4. L4 : vide donc rien.
  5. L5 : on affiche (avec print()) le contenu de total donc 40.
  6. Fin
Séquentialité - Variable - Fonction

Vous venez de voir 3 notions assez importantes :

  1. L'interpréteur Python suit séquentiellement les ordres en suivant votre texte, en partant du haut et en allant vers le bas.
  2. On peut mémoriser le résultat d'un calcul ou un contenu en créant une variable, un nom qui fera référence au contenu stocké. La syntaxe suivante est à respecter scrupuleusement :
  3. Syntaxe à respecter : nom_de_la_variable = valeur

    Exemple : a = 50

  4. On peut faire appel à des fonctions, des fonctionnalités avancées en utilisant une syntaxe précise identique à celle utilisée pour les fonctions mathématiques : nom de la fonction, parenthèse d'ouverte, les données sur lesquelles travailler, parenthèse de fermeture :
  5. Syntaxe à respecter : nom_de_la_fonction(valeur)

    Exemple : print(a)

    Sur cet exemple, on va donc afficher à l'écran 50, le contenu de la variable a.

⚙ 06° Voyons comment on peut créer une interaction entre variable et fonction.

Réaliser ceci :

  1. Copier-coller ce nouveau code-source :
  2. 1 2 3 4 5
    nombre1 = 10 nombre2 = 50 m = max(nombre1, nombre2) print(m)
  3. Appuyer sur la flèche verte pour lancer le programme.
  4. Pourquoi voit-on 50 à l'écran à votre avis ? A quoi sert la fonction max() à votre avis ?

...correction...

Cette fonction sert à récupérer la valeur maximale parmi celles transmises entre parenthèses.

Notez qu'on stocke cette valeur dans une variable : on mémorise donc cette valeur et on pourra l'utiliser à l'avenir pour faire autre chose.

⚙ 07° Ce nouveau programme fait visuellement la même chose mais il y a une différence de fond. Laquelle ?

1 2 3 4
nombre1 = 10 nombre2 = 50 print( max(nombre1, nombre2) )

...correction...

Même affichage mais on ne stocke le maximum nul part : on ne pourra donc pas utiliser cette valeur plus tard, pour faire autre chose.

⚙ 08° Que fait ce programme ?

1 2 3 4 5 6
print( "Bonjour") print( "Bonjour") print( "Bonjour") print( "Bonjour") print( "Bonjour") print( "FIN")

...correction...

On affiche 5 fois Bonjour et une seule fois FIN.

⚙ 09° Que fait ce programme ?

1 2 3
for _ in range(5): print( "Bonjour") print( "FIN")

Répondre ensuite à ces questions :

  • Comment faire pour afficher 500 fois Bonjour ?
  • Pourquoi avoir décaler la ligne 2 de 4 espaces à droite (on dit tabuler) ?
  • Que doit-on mettre à la fin de la ligne du for ?

...correction...

On qu'il fait la même chose.

  • Il suffit de noter 500 en ligne 1, à la place de 5
  • C'est ce décalage qui permet à Python de comprendre que la ligne 2 fait partie de la boucle, mais que la ligne 3 n'en fait pas partie.
  • Il fait placer un :

⚙ 10° Utiliser ce programme puis répondre aux questions.

1 2 3
for k in range(3): print( k) print( "FIN")
  • Quelle est la première valeur prise par k ?
  • Quelle est la deuxième valeur prise par k ?
  • Quelle est la troisième valeur prise par k ?
  • Combien de tours de boucle a-t-on fait en tout ?
  • Comment faire pour afficher les entiers de 0 à 100 exactement ?

...correction...

  • La première valeur prise par k est 0.
  • La deuxième valeur prise par k est 1.
  • La troisième valeur prise par k est 2.
  • On a donc fait 3 tours de boucles (pour k valant 0, 1 et 2).
  • Pour afficher les entiers de 0 à 100, il faut donc taper range(101) pour avoir k valant 0, 1,... 99, 100.

⚙ 11° Utiliser ce programme puis répondre à la question.

1 2
print( 5 * 2) print( 5 * "2")

Comment indiquer à Python qu'on désire travailler avec un texte ?

...correction...

Lorsqu'on tape 5*2, on obtient bien 10 : le 2 indique clairement qu'on veut travailler sur l'entier 2.

Lorsqu'on tape 5*"2", on obtient bien "22222" car le "2" indique qu'on veut travailler sur un texte contenant "2". Python réalise alors 5 copier-coller du "2" et on obtient "22222".

Attention donc à ne pas confondre non plus ces deux notations : k pour indiquer qu'on travaille avec la variable k et "k" pour indiquer qu'on veut travailler avec un texte "k".

⚙ 12° Reste à voir comment parvenir à agir uniquement sous certaines conditions.

Il existe une structure if-elif-else, qui permet de dire quelles actions faire en fonction de quelles conditions.

Voici un exemple :

1 2 3 4 5 6 7 8
nombre = 10 if nombre > 10: print("Strictement plus grand que 10") elif nombre < 10: print("Strictement plus petit que 10") else: print("Egal à 10")

Traduction :

  • if veut dire "Si la condition est vraie".
  • elif est la contraction de "else if", qui veut dire "Sinon, si cette nouvelle condition est vraie".
  • else veut dire "Sinon" : on le place en dernier pour dire que si rien n'a marché, on fait l'action indiqué.

Répondre à ces questions :

  1. La première condition est-elle vraie ?
  2. La deuxième condition est-elle vraie ?
  3. Pourquoi voit-on le message "Egal à 10" à l'écran ?
  4. Quel est le dernier caractère des lignes 3, 5 et 7 ?
  5. Pourquoi avoir décalé de 4 espaces les lignes 4, 6 et 8 ?

...correction...

  1. La première condition est-elle vraie ? Non. 10 n'est pas strictement supérieur à 10. On passe donc à la suivante.
  2. La deuxième condition est-elle vraie ? Non. 10 n'est pas strictement inférieur à 10. On passe donc au dernier cas.
  3. Pourquoi voit-on le message "Egal à 10" à l'écran ? Tout simplement car c'est aucun des cas précédents n'a été validé.
  4. Quel est le dernier caractère des lignes 3, 5 et 7 ? Encore une fois, on trouve un :
  5. Pourquoi avoir décalé de 4 espaces les lignes 4, 6 et 8 ? Pour que Python puisse associer les actions à faire en fonction des cas.

⚙ 13° Pour voir si deux contenus sont identiques, on ne peut pas utiliser =, déjà pris pour réaliser les affectations de variables.

Le concepteur de Python a alors choisi de prendre == pour tester des égalités de contenus.

Compléter ce programme (en remplacer les ... pour les bonnes instructions) pour qu'il indique si on doit aller à gauche ou à droite.

1 2 3 4 5 6
direction = "G" if direction == ...: print("Il faut aller à gauche") elif ... print(...)

...correction...

1 2 3 4 5 6
direction = "G" if direction == "G": print("Il faut aller à gauche") elif direction == "D" print("Il faut aller à droite")

⚙ 14° Aller sur le site Py-rates, après avoir lu les indications ci-dessous :

  • Choisir votre langue en haut à droite dès le départ ;
  • Noter le code qui s'affiche, il vous permettra de finir chez vous sans TOUT recommencer depuis le début ;
  • Le but est de trouver la clé puis se rendre jusqu'au coffre en utilisant les fonctions indiquées à gauche de l'écran. Vous avez le droit d'utiliser toutes les structures de Python : boucles et conditions.

L'auteur a placé pas mal d'explications sur le côté, à vous de les lire. N'hésitez pas à faire appel à l'enseignant en cas de problème.

5 - Rappels de programmation de seconde ?

5.1 Fenêtre de programmation Thonny

Voici la fenêtre de Thonny :

Il faut écrire le programme dans la fenêtre du haut, sauvegarder et lancer le programme à l'aide de la flèche verte.

A titre d'exemple, voici un programme qui

  • Ligne 1 : récupère une note dans a,
  • Ligne 2 : récupère une autre note dans b, et
  • Ligne 3 : calcule la moyenne dans c.
  • Ligne 4 : demande d'afficher le contenu de c dans la console avec la fonction print().
1 2 3 4
a = 10 b = 15 c = (a + b) / 2 print(c)

Voici le résultat visible dans la console après avoir appuyé sur la flèche et nommé le programme premier.py 

>>> %Run premier.py 12.5

D'ailleurs, on peut fournir à print() plusieurs choses pourvu qu'on les sépare par une virgule. On pourrait ainsi réaliser un affichage plus clair de la réponse avec un programme comme celui ci :

1 2 3 4
a = 10 b = 15 c = (a + b) / 2 print("Réponse du programme : ", c)

Voici le résultat visible dans la console après avoir appuyé sur la flèche et nommé le programme premier.py 

>>> %Run premier.py Réponse du programme : 12.5
5.2 VARIABLE - Affectation

une sorte de boite
Image issue de http://hcc-cs.weebly.com/variables.html
Affectation
L'affectation est le mécanisme créant une liaison entre un nom de variable et un contenu mémoire. Dans les algorithmes, on symbolise l'affectation du contenu 10 à la variable nommée a de cette façon :

a  10

On affecte le contenu de droite vers la variable à gauche. On va donc de la droite vers la gauche.

Représentation mentale de l'affectation

On peut représenter naïvement ce mécanisme comme une boite :

Boite a contenant 10 Néanmoins, une affectation est en réalité cette liaison entre un nom et une zone de la mémoire :

une sorte de liaison
L'opérateur d'affectation = en Python
L'opérateur = permet de réaliser une affectation.

La syntaxe est variable = expression.
On place donc toujours la variable à gauche.

Pour affecter la valeur 10 à la variable a, on tape ceci :

1
a = 10
Afficher le contenu d'une variable
En Python, la demande est différente en fonction de l'endroit où elle est formulée.

Pour obtenir le contenu d'une variable, il suffit

  • Dans la console interactive, il suffit de taper une ligne contenant uniquement le nom de la variable :
  • >>> a = 100 >>> a 100
  • Dans un programme, il faut utiliser la fonction native print() :
  • 1 2
    a = 100 print(a)
5.3 - VARIABLE - Incrémentation

Vocabulaire

Incrémenter de 1 en partant de 45 veut dire qu'on passe à 46.

Incrémenter de 2 en partant de 45 veut dire qu'on passe à 47.

Incrémenter de 5 en partant de 45 veut dire qu'on passe à 50.

Incrémenter de -1 en partant de 45 veut dire qu'on passe à 44.

On dit plutôt décrémenter de 1 d'ailleurs.

Conclusion

Incrémenter veut dire utiliser la valeur actuelle d'une variable pour calculer sa nouvelle valeur.

Incrémenter (sans autre information donnée) veut dire qu'on incrémente de +1. il s'agit de la valeur par défaut.

Faire une incrémentation en Python
1 2
a = 10 # après cette ligne, a référence 10 a = a + 1 # après cette ligne, a référence 11

La demande s'effectue bien de la droite vers la gauche :

  1. a = a + 1 : évaluer ce que donne cette valeur + 1 (donc 10+1=11 sur l'exemple)
  2. a = a + 1 : affecter le résultat de cette évaluation à a.
5.4 Instruction conditionnelle

Idée générale

Une instruction conditionnelle permet d'exécuter un bloc d'instructions uniquement si la condition évaluée est vraie (True en Python).

Ci-dessous, un exemple où on change l'appréciation si la note est bonne (if en anglais)

1 2 3 4 5 6
fatigue = "En forme !" appreciation = "Moyen" note = 20 if note > 15: appreciation = "Très bien" fatigue = "Grosse fatigue"
Signification des lignes en français
  • L3 : note référence 20.
  • L4 : si la note est strictement supérieure à 15
  • (L5 tabulée, appartient au if) : alors appreciation référence "Très bien".
  • L6 (pas tabulée, n'appartient pas au if) : fatigue passe à "Grosse fatigue" (sans condition car pas de tabulation).
Importance de la tabulation

La tabulation (4 espaces) permet de signaler à l'intepréteur Python le début et la fin du bloc de la condition. La ligne 6 n'appartient donc pas au bloc : elle sera exécutée que la condition soit vraie ou fausse.

On peut rendre le code plus clair pour un débutant en utilisant des lignes vides :

1 2 3 4 5 6 7 8
fatigue = "En forme !" appreciation = "Moyen" note = 20 if note > 15: appreciation = "Très bien" fatigue = "Grosse fatigue"
Déroulé pour note = 20

L1 - L2 - L3 - L4 (avec condition vraie) - L5 - L6 - fin

1 2 3 4 5 6
fatigue = "En forme !" appreciation = "Moyen" note = 20 if note > 15: # Vrai pour une note de 20 appreciation = "Très bien" # donc on effectue cette ligne fatigue = "Grosse fatigue"
Déroulé pour note = 10

L1-L2-L3-L4 (avec condition fausse) - L6 - fin

1 2 3 4 5 6
fatigue = "En forme !" appreciation = "Moyen" note = 14 if note > 15: # Faux pour une note de 14 appreciation = "Très bien" # donc on n'effectue pas cette ligne fatigue = "Grosse fatigue"
5.5 FONCTION : notion
ENTREE(S)  ⇒   Fonction   ⇒  SORTIE

Principe général

Une fonction est un bloc de code qui reçoit des données d'entrée et envoie une sortie.

Un exemple avec la fonction VALEUR_ABSOLUE qui n'attend qu'une entrée (un nombre) et qui renvoie la valeur absolue du nombre (le même nombre mais sans son signe).

-12  ⇒   Fonction VALEUR ABSOLUE   ⇒  12

12  ⇒   Fonction VALEUR ABSOLUE   ⇒  12
D'autres exemples
5, 10, 50, 0, 20  ⇒   Fonction MAXIMUM   ⇒  50

5, 10, 50, 0, 20  ⇒   Fonction MINIMUM   ⇒  0

5, 10, 50, 0, 20  ⇒   Fonction SOMME   ⇒  85
5.6 - FONCTION : native

Une fonction native est une fonction présente de base dans Python.

Dans le cadre de ce site, les fonctions natives sont toujours écrites en vert.

On fait appel à une fonction en notant son nom suivi de parenthèses contenant les entrées séparées par des virgules :

nom_fonction(a, b, c, d...)

Fonction VALEUR ABSOLUE : cette fonction se nomme abs() en Python.

>>> abs(-12) 12 >>> abs(12) 12

Fonction MAXIMUM : cette fonction se nomme max() en Python.

>>> max(10, 0, 50, 40) 50
5.7 FONCTION : définition d'une fonction personnelle
1 2 3 4
def double(x): # Déclaration return 2 * x # Déclaration n = double(12) # Appel

Définir une fonction revient à stocker ses instructions pour les utiliser plus tard.

On voit d'ailleurs que vous ne pourriez pas l'utiliser pour le moment car vous ne savez pas ce que contient réellement la variable x.

Par contre, si vous avez bien compris ce qu'est une variable, vous devriez comprendre qu'on va remplir le double de ce qu'on va recevoir un jour en entrée.

Pour définir une fonction, on utilise le mot-clé def puis

  1. le nom de la fonction
  2. des parenthèses contenant les entrées séparées par des virgules
  3. le caractère : pour finir cette première ligne
  4. le bloc tabulé contenant les instructions à réaliser un jour.
1 2
def double(x): return 2 * x

Le mot-clé return permet d'indiquer la sortie que la fonction devra renvoyer.

Placer des commentaires en français dans le code Python

On peut placer du texte à destination des développeurs qui vont lire le programme en utilisant le caractère #. Voir la partie suivante pour un exemple.

Attention : sur votre ligne, tout ce qui se trouve derrière ce # sera purement ignoré par l'interpréteur.

5.8 FONCTION : appel de fonction
1 2 3 4
def double(x): # Déclaration return 2 * x # Déclaration n = double(12) # Appel

Lancer un appel de fonction
Lancer un appel veut dire utiliser une fonction en lui fournissant des entrées puis attendre pour récupérer la réponse qu'elle fournira.

Sur le code d'exemple, on lance un appel en ligne 4.

Lors d'un appel, l'interpréteur Python transfère les données envoyées une à une dans les variables visibles sur la définition. Pour comprendre où sont stockées les entrées, il suffit de comparer la ligne de la définition et celle de l'appel.

Avec l'appel de la ligne 5, on a 10 qui est stocké dans a lors de cet appel :

définition appel
def fois2(a): x = fois2(10)
[Déroulé] Lors d'un appel, on part de la ligne d'appel vers la ligne de définition puis la réponse est renvoyée vers la ligne d'appel.

1 2 3 4
def double(x): # Définition return 2 * x # Définition n = double(12) # Appel
  • L1 (déclaration)
  • L4 (appel) - L1 - L2 (envoi de la réponse)
  • L4 (réception de la réponse) - fin car il n'y a rien ensuite

Explications complètes

  • Ligne 1 : déclaration d'une fonction double() qui va recevoir une donnée qu'on placera dans une variable x.
  • Ligne 4 : appel à la fonction double() en lui envoyant 12
  • Ligne 1 : l'interpréteur place 12 dans x.
  • Ligne 2 : la fonction envoie la réponse 24 à la ligne qui a lancé l'appel
  • Ligne 4 : réception de la réponse et n référence 24.
Lancer plusieurs appels

Les fonctions ont deux avantages :

  1. Permettre l'envoi d'une sortie dont la valeur dépend des entrées reçues ;
  2. Permettre plusieurs appels successifs à une même fonction.
1 2 3 4 5
def double(x): return 2 * x a = double(10) b = double(30)

Déroulé

  • L1 (déclaration)
  • L4 (appel) - L1 - L2 (envoi de la réponse)
  • L4 (réception de la réponse et affectation du 20 à a)
  • L5 (appel) - L1 - L2 (envoi de la réponse)
  • L5 (réception de la réponse et affectation du 60 à b) - fin
Bilan

Vous devez donc savoir distinguer ces deux étapes, sous peine de ne pas comprendre correctement ce qui est réalisé :

  1. La définition (mise en mémoire d'un bloc d'instructions pour l'utiliser plus tard)
  2. L'appel (utilisation de ce bloc d'instructions)
5.9 FONCTION : plus complexe
1 2 3 4 5 6 7
def nouvelle_note(note): note = note + 5 if note > 20: note = 20 return note n = nouvelle_note(12)

Cette fonction récupère la valeur d'une note, rajoute 5, bloque la note à 20 si elle dépassait 20 et renvoie le résultat final.

Déroulé

  • L1 (déclaration)
  • L7 (appel) - L1 - L2 - L3 - L5 (envoi) - L7 (réception) - fin

Traduction et déroulé

  • Ligne 1 : déclaration de nouvelle_note() qui va recevoir une donnée qu'on placera dans note.
  • Ligne 7 (appel à la fonction nouvelle_note() en lui envoyant 12).
  • Ligne 1 à 5 : on exécute les lignes avec note contenant 12 initialement. Après la ligne 2, note contient donc 17. Le test de la condition étant alors faux (17 n'est pas supérieur à 20), on passe en ligne 5 : la fonction envoie 17 en sortie.
  • L7 (réception) : on stocke 17 dans n.
5.10 Boucle POUR : réaliser plusieurs fois EXACTEMENT la même action

A - Principe

Pour réaliser plusieurs fois exactement la même série d'actions, il suffit d'utiliser une boucle bornée POUR, qu'on déclare à l'aide du mot-clé for en Python.

B - Exemple
1 2 3 4 5 6 7
print("Avant boucle") # Pas tabulée : avant la boucle for _ in range(3): # Déclaration de la boucle print("A") # Tabulée : dans la boucle print("-- B") # Tabulée : dans la boucle print("Après boucle") # Pas tabulée : avant la boucle

Déroulé du programme

L1
L3 - L4 - L5
L3 - L4 - L5
L3 - L4 - L5
L7

Résultat du programme

Avant boucle A -- B A -- B A -- B Après boucle
C - Sémantique
3
for _ in range(3):

Traduction en français : "Réalise 3 fois le bloc d'instructions indentées"

5.11 Boucle POUR : réaliser plusieurs fois PRESQUE la même action

A - Valeurs successives de la variable de boucle

On réalise des actions un peu différentes car utilisant une variable de boucle dont le nom se situe derrière le mot clé for.

for k in range(5):

Sur cet exemple, k est la variable de boucle :

  • k commence à 0
  • k est incrémentée de 1 à chaque tour de boucle.
  • Ainsi, k va prendre les valeurs 0 puis 1 puis 2 puis 3 puis 4.

Attention

  • k n'ira pas jusqu'à 5, c'est une borne exclue.
  • 5 correspond néanmoins bien au nombre de tours de boucle effectuées : 0-1-2-3-4.
  • La valeur finale de k est 4, obtenue en calculant (5 - 1).
B - Déroulé d'une boucle avec variable de boucle
1 2 3 4 5 6 7
print("Avant boucle") for k in range(3): # Pour k variant de 0 à 2 print("A") # Affiche le string "A" print(k) # Affiche le contenu de k print("Après boucle")

Déroulé du programme

L1
L3(k=0) - L4 - L5
L3(k=1) - L4 - L5
L3(k=2) - L4 - L5
L7

Résultat du programme

Avant boucle A 0 A 1 A 2 Après
C - Sémantique
3
for k in range(3):

Traduction en français : "Pour chaque valeur de k dans [0, 1, 2], réalise le bloc d'instructions indentées"

5.12 Boucle TANT QUE

A - Principe

Le mot-clé while permet de réaliser une boucle sous condition. Le principe est le suivant :

Lorsqu’on tombe sur le début de la boucle, on évalue l’expression de poursuite.

Si elle est vraie, on réalise un tour de boucle et on revient au début.

Si elle est fausse, on arrête la boucle, en cherchant la première instruction hors boucle (non indentée).

Comme pour for et if, c'est l'indentation qui renseigne sur le bloc à réaliser :

L1 début du programme L2 L3 while condition de poursuite: L4 instruction A L5 instruction B L6 instruction C L7 L8 suite du programme

On a donc deux possibilités d'exécution :

  • si poursuite est True en L3 : L3(True) - L4-L5-L6 puis L3 à nouveau.
  • si poursuite est False en L3 : L3(True) - L8.
B - Un classique : valeur de seuil

Le programme suivant permet de répondre à ce problème :

  • on considère une épargne initiale de 10 euros.
  • On double l'épargne tous les mois.
  • Tant que l'épargne est inférieure à 500 euros, on laisse la somme sur le compte.
  • Au bout de combien de mois va-t-on atteindre 5000 euros ou plus ?
1 2 3 4 5 6 7 8 9
epargne = 10 nb_mois = 0 while epargne < 500: epargne = epargne * 2 nb_mois = nb_mois + 1 print(epargne) print(nb_mois)

Si on lance le programme :

>>> %Run boucleTQ.py 5120 9

On voit qu'on atteint 640 euros au bout de 6 mois. Un compte bancaire qui rapporte 100% tous les mois, c'est rentable mais malheureusement totalement imaginaire.

Traduction et déroulé

  • L1 (epargne=10) - L2 (nb_mois=0)
  • L4 (condition 10<500 vrai) - L5 (epargne=10*2=20) - L6 (nb_mois=0+1=1)
  • L4 (condition 20<500 vrai) - L5 (epargne=20*2=40) - L6 (nb_mois=1+1=2)
  • L4 (condition 20<500 vrai) - L5 (epargne=40*2=80) - L6 (nb_mois=2+1=3)
  • L4 (condition 20<500 vrai) - L5 (epargne=160) - L6 (nb_mois=3+1=4)
  • L4 (condition 20<500 vrai) - L5 (epargne=320) - L6 (nb_mois=4+1=5)
  • L4 (condition 20<500 vrai) - L5 (epargne=640) - L6 (nb_mois=5+1=6)
  • L4 (condition 640<500 faux) : FIN DU TANT QUE.
  • L8-L9 : affichage des variables

✎ 15 (rédaction)° Donner la succession des lignes que va suivre l'interpréteur Python sur ce programme et donner le contenu de la variable aire en fin de programme.

1 2 3 4 5
def aire_rectangle(largeur, hauteur): return largeur * hauteur aire = aire_rectangle(12, 10) print(aire)

...correction...

  1. L1 : déclaration de la fonction aire_rectangle().
  2. L4 : (droite) (appel) 1er ligne non tabulée sous la fonction. On y lance un appel à aire_rectangle() en envoyant 12 et 10.
  3. L1 : cette fois c'est un appel et largeur référence 12 et hauteur référence 10.
  4. L2 : (envoi) on calcule 12*10 et on renvoie 120 à la ligne qui a lancé cet appel
  5. L4 : (retour) on récupère le 120 à droite et ensuite (gauche) aire référence 120.
  6. L5 : on affiche 120.
  7. Fin

🏠 Exercices supplémentaires° Réaliser les exercices supplémentaires (voir le lien) en rédigeant correctement vos réponses.

Exercices à réaliser

Nous ferons le bilan une fois l'activité réalisée.

Certaines copies peuvent être ramassées et notées.

Voici pour ce premier contact avec la console de Python.

Pour la plupart des activités, vous trouverez un récapitulatif des notions à connaître. Il ne s'agit d'un ensemble de questions auxquelles il faudra savoir répondre si vous voulez une bonne note.

Le résumé de l'activité regroupe lui l'ensemble des points de cours, les encarts verts .

LIEN VERS LES RECAPITULATIFS

LIEN VERS LES RESUMES

Activité publiée le 04 06 2023
Dernière modification : 25 12 2024
Auteur : ows. h.