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 : 1 question

  question 05

Exercices supplémentaires 🏠 : oui

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.

Ouvrir Thonny sous Windows :

Rien de particulier : on clique sur l'icône.

Ouvrir Thonny sous Linux :

Si vous êtes en environnement graphique : on clique sur l'icône disponible dans les applications.

Si vous disposez d'un terminal, on peut utiliser la commande suivante :

rv@monordi:~$ thonny &

L'utilisation du & permet simplement de reprendre la main sur le terminal pendant l'exécution de Thonny.

Utiliser la console de Thonny :

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

On distingue :

  • La zone programmation en haut.
  • Permet de créer des programmes : du "code" pourra exécuter 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.

Que sont les zones bleues avec une icone  ?

Il s'agit juste d'une action à réaliser. Il faut faire l'action et vérifier que cela fonctionne.

Rien à noter sur votre copie.

01 ✔° 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 ✔° 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 ✔° 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 ✔° 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 demande est bien formulée et 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 - Rappels de programmation de seconde ?

Nous allons maintenant taper nos instructions dans la fenêtre du haut : la zone de programmation.

Pour lancer le programme, il faut :

  1. Appuyer sur la flèche verte
  2. Sauvegarder votre programme en lui donnant un nom si c'est la première fois que vous l'utilisez
4.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
4.2 VARIABLE - Affectation

Affectation

Les variables servent à stocker des données.

une sorte de boite
Image issue de http://hcc-cs.weebly.com/variables.html

Le mécanisme d'affectation de variables consiste à créer une liaison entre un NOM et un CONTENU MEMOIRE.

1
a = 10

L'opérateur = permet de créer une variable nommée a et y stocker la valeur 10.

On peut représenter naïvement ce mécanisme comme une boite qui porte un NOM et dans laquelle on place le CONTENU associé.

Boite a contenant 10

Néanmoins, une affectation est simplement un moyen de faire la liaison entre un NOM et un CONTENU en mémoire :

une sorte de liaison
Notation dans les algorithmes

Notez bien que c'est le CONTENU 10 qu'on associe au NOM a : on va de la droite vers la gauche. C'est pour cela qu'on écrit a  10 dans les algorithmes.

Lecture du contenu via la console interactive

Pour obtenir le contenu d'une variable, il suffit de taper le nom de cette variable dans la console interactive. Nous verrons que cela n'est pas suffisant dans un programme.

4.3 - VARIABLE - Incrémentation

Incrémenter veut dire modifier la valeur d'une variable en lui ajoutant une autre valeur.

Incrémenter de 1 veut dire qu'on augmente la valeur de 1 : 45 passe à 46.

Ce +1 est la valeur par défaut en l'absence d'information.

Incrémenter de 2 veut dire qu'on augmente la valeur de 2 : 45 passe à 47.

Incrémenter de -1 veut dire qu'on augmente la valeur de -1 : 45 passe à 44.

On dit plutôt décrémenter.

Pour incrémenter a de 1 : a = a + 1

  1. a = a + 1 : évaluer la valeur actuelle de a,
  2. a = a + 1 : évaluer (calculer) ce que donne cette valeur + 1 et
  3. a = a + 1 : affecter le résultat de cette évaluation à a.
1 2
a = 10 a = a + 1

En ligne 1, on associe 10 à a.

En ligne 2, on évalue a + 1, ce qui donne 11. On place ENSUITE ce résultat de 11 dans a : au final, a contient donc 11.

4.4 Instruction conditionnelle

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"

TABULATION : le bloc d'instructions à effectuer est décalé de 4 espaces (ligne 5). Ce décalage permet à l'intepréteur Python de signaler le début et la fin du bloc. La ligne 6 n'appartient donc pas au bloc.

Déroulé pour note = 20 : L1-L2-L3-L4-L5-L6

Déroulé pour note = 10 : L1-L2-L3-L4-L6

Traduction :

  • L3 : note vaut 20.
  • L4 : si la note fournie est strictement supérieure à 15
  • L5 tabulée : alors appreciation passe à "Très bien".
  • L6 : fatigue passe à "Grosse fatigue" (sans condition car pas de tabulation).
4.5 FONCTION : notion
ENTREE(S)  ⇒   Fonction   ⇒  SORTIE

Description

Les fonctions sont des instructions particulières qui :

  • reçoivent des données d'entrée et
  • renvoient leur réponse en 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
4.6 - FONCTION : native

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

On en fait l'appel en notant son nom et en fournissant entre parenthèses les entrées séparées par des virgules.

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

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

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
4.7 FONCTION : personnelle
1 2 3 4
def double(x): # Déclaration return 2 * x # Déclaration n = double(12) # Appel

On distingue deux choses :

  1. La déclaration (mise en mémoire d'instructions pour les utiliser plus tard)
  2. L'appel (utilisation de ces instructions)
A - Déclarer une fonction

Déclarer la fonction revient à stocker ses instructions.

Pour déclarer une fonction, on écrit dans l'ordre

  1. le mot-clé def.
  2. le nom de la fonction
  3. entre parenthèses : les variables d'entrée séparées par des virgules
  4. le caractère :
  5. les instructions du bloc tabulé
1 2
def double(x): return 2 * x

Important : lors de la déclaration, on ne lance aucun appel, on ne fait que mettre en mémoire.

Le mot-clé return permet d'indiquer ce que la fonction devra renvoyer si on l'appelle.

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.

B - Lancer un appel de fonction

Lancer un appel revient à fournir les entrées et attendre la réponse de la fonction.

Sur l'exemple, l'appel se fait LIGNE 4.

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

Déroulé

  • L1 (déclaration)
  • L4 (appel) - L1 - L2 (envoi) - L4 (réception de la réponse)

Traduction (et déroulé)

  • 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 24 à la ligne qui a lancé l'appel
  • Ligne 4 (réception de la réponse qu'on stocke dans une variable n.
4.8 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)

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 répond 17
  • L7 (réception) : on stocke 17 dans n.
4.9 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"

4.10 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 au nombre de tours de boucle effectués : 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"

4.11 Boucle TANT QUE

A - Principe

Il s'agit de réaliser une boucle sans prévoir à l'avance combien de tours on va réaliser exactement.

Le mot-clé while déclare cette boucle TANT QUE. 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

A chaque début de tour, on teste la condition de poursuite :

  • si poursuite est True, on fait un tour en réalisant les lignes 4-5-6 puis on revient en début de boucle, la ligne 3 ici.
  • si poursuite est False, on quitte la boucle en partant en ligne 8.

Il s'agit donc d'une sorte de mélange entre un if et un for : tant que la condition est vraie, on réalise le bloc et on revient au début de la boucle.

B - Un classique : valeur de seuil

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

  • on considère un gain initial de 10 euros.
  • On double le gain tous les mois.
  • Tant qu'il y a moins de 5000 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
gain = 10 nb_mois = 0 while gain < 5000: gain = gain * 2 nb_mois = nb_mois + 1 print(gain) print(nb_mois)

Principe de la boucle sur cet exemple

  • Ligne 4 : évaluation de la condition de poursuite.
  • SI son évaluation donne True, on réalise le bloc des lignes 5-6 puis on revient à la ligne 4.
  • SINON, on quitte et part en ligne 8.

Si on lance le programme :

>>> %Run boucleTQ.py 5120 9

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

Traduction et déroulé

  • L1-2 : initialisation à 10 et 0 des variables.
  • L4-L5-L6 (évaluation à True car gain vaut 10, gain passe à 20 et nb_mois à 1).
  • L4-L5-L6 (évaluation à True car gain vaut 10, gain passe à 40 et nb_mois à 2).
  • ...
  • L4-L5-L6 (évaluation à True car gain vaut 10, gain passe à 2560 et nb_mois à 8).
  • L4-L5-L6 (évaluation à True car gain vaut 10, gain passe à 5120 et nb_mois à 9).
  • L4 : évaluation à False de la condition car gain vaut 5120. FIN DU TANT QUE.
  • L8-9 : affichage des variables

Que sont les questions avec l'icône main ✌ ?

La question est notée directement en classe. Pensez à faire appel à moi, sinon elle sera non validée.

Pas de question de ce type de cette activité.

✌ 05° Créer un programme qui mémorise une largeur et une hauteur. Il calcule l'aire du rectangle correspondant et l'aire du triangle rectangle correspondant. Il affiche uniquement l'aire du rectangle.

Que sont les questions avec l'icône crayon ✎ ?

La question est à rédiger sur votre copie, AU PROPRE. Certaines activités seront corrigées au hasard. Si cela tombe sur vous, je noterai uniquement ce qui est inscrit sur votre copie.

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

DM à réaliser (13 questions)

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

Certaines copies seront ramassées.

5 - FAQ (Frequently Asked Questions)

Cette partie contiendra à chaque fois des questions d'élèves qu'on retrouve d'année en année mais dont les réponses nécessitent des notions qui ne sont pas au programme ou qui seront détaillées plus tard. Pratique et intéressant mais absolument pas indispensable du coup.

J'ai vu une erreur sur le site, comment la signaler ?

Utilisez le bouton CONTACT en bas de chaque page.

Notez l'URL de l'activité ou son nom et copiez le texte qui pose problème, si besoin avec une description de ce qu'il faut changer si vous pensez que c'est nécessaire.

Merci !

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 : 13 07 2023
Auteur : ows. h.