SNT Python 2

Identification

Infoforall

3 - Variables


Nous allons utiliser Thonny, un environnement de développement gratuit, léger, efficace et multiplateforme créé par l'université d'Estonie.

Vous pouvez le télécharger sur la page d'accueil du projet : https://thonny.org/

Documents de cours : pdf ou odt.

Document-élève : pdf ou odt.

1 - Cours

Un langage de programmation permet de stocker des données dans la mémoire.

calcul bizarre
Image issue de http://hcc-cs.weebly.com/variables.html

Les variables permettent d’enregistrer des données puis de les lire plus tard.

A° Aller dans le menu Affichage/Views et sélectionner Variables si l’onglet Variables n’est pas ouvert.

Si vous ne voyez pas l'onglet Variables apparaître, demandez de l'aide.

B° Dans la zone Console (celle avec 3 chevrons >>>), tapez l'instruction suivante permettant de créer une variable nommée a et référençant 50.

>>> a = 50

Vous devriez constater que

  • la console n'affiche rien et vous rend la main
  • une variable a a été créée dans l'onglet VARIABLES et qu'elle référence 50.
>>> b = a - 30 Effet ?

Vous devriez constater que

  • la console n'affiche rien et vous rend la main
  • une variable b a été créée dans l'onglet VARIABLES et qu'elle référence 20.
>>> a = 300 Effet ?

Vous devriez constater que

  • la console n'affiche rien et vous rend la main
  • la variable a référence maintenant 300 mais b n'est pas été modifiée (séquentialité).

C° Pour obtenir la valeur associée à une variable dans la console, il suffit de taper son nom suivi d'ENTREE.

>>> a Effet ? >>> b Effet ?

...CORRECTION...

>>> a 50 >>> b 20

D° Dans la console (celle avec 3 chevrons >>>), tentez de vous demander ce qui va se passer puis tapez les instuctions pour vérifier votre réponse. Il faut surtout vous demander : affichage ou pas d'affichage ? Simple évaluation ou affectation ?

>>> a Effet ? >>> b Effet ? >>> a + b Effet ? >>> c = a + b Effet ? >>> c Effet ?

...CORRECTION...

>>> a 50 Affichage console car simple évaluation >>> b 20 Affichage console car simple évaluation >>> a + b 70 Affichage car simple évaluation >>> c = a + b Pas d'affichage car affectation >>> c 70 Affichage car simple évaluation
1.1 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.

1.2 - 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.

1.3 - Exemples

On commence par la droite, puis on affecte cette valeur à la variable de gauche.

>>> a = 20 + 5

TRADUCTION : affecte 25 à la variable a.


>>> a = a + 10

TRADUCTION v1 : évalue a + 10 et affecte cette nouvelle valeur (25+10 = 35) à la variable a.

TRADUCTION v2 : incrémente a de 10.

E° Lancer un programme contenant uniquement ces 2 lignes.

Question : obtient-on un affichage ?

1 2
a = 20 a + 5
Visuel q13

...CORRECTION...

Visuel q13
Correction q13

Ligne 1 : on affecte 20 à la variable a.
Pas d'affichage.

Ligne 2 : une simple évaluation. Python évalue (a + 5) soit 25 et ... c'est tout.
Pas d'affichage automatique dans un programme : il faut demander gentiment avec un print().

1.4 - Afficher depuis un programme

Dans un programme, taper le nom d'une variable ne suffit pas à provoquer son affichage. Il faut demander explicitement à Python son affichage en utilisant print().

1 2
a = 20 print(a + 5)

Que choisir pour les noms des variables ?

  1. Un nom EXPLICITE : le nom doit être suffisant pour comprendre l'information contenue.
  2. Toujours une minuscule au début.
  3. Aucun espace. Si vous voulez utiliser un nom composé, choisissez entre
    • les underscores : note_ds
    • une majuscule de séparation : noteDs

2 - Variables et programme

01° Utiliser l'exemple ci-dessous et vérifier que vous comprennez les réponses que vous fournit Python.

>>> note = 12 >>> note = note + 4 >>> note 16 >>> note = note - 2 >>> note 14 >>> note = note + 2 ?

02° Utiliser l'exemple ci-dessous qui utilise la concaténation progressive de strings et vérifier que vous comprennez les réponses de Python.

>>> eleves = "Alice" >>> eleves = eleves + " Bob" >>> eleves 'Alice Bob' >>> eleves = eleves + " Charlie" >>> eleves ? >>> "Zoé" in eleves ?
(Complément) 2.1 Fonction native print()

Interpréter une donnée et l'afficher dans la console

Cette fonction permet de forcer l'affichage dans la console à destination d'un humain.

Ainsi, si on affiche un string, Python ne va pas placer les guillemets qui sont juste une indication pour l'interpréteur Python, pas pour l'humain qui veut lire le contenu.

>>> print("Bonjour à toi") Bonjour à toi

TRADUCTION : Affiche le string "Bonjour à toi" dans la console pour un lecteur humain.

Avec plusieurs arguments

On peut envoyer plusieurs choses à afficher sur la même ligne pourvu que

  1. Vous placiez tout à l'intérieur des parenthèses de print().
  2. Vous placiez des virgules entre chaque chose à afficher.
>>> eleves = "Alice Bob Charlie" >>> print("Les élèves sont : ", eleves) Les élèves sont : Alice Bob Charlie

TRADUCTION : Affiche le string "Les élèves sont : " suivi du contenu de la variable eleves.

03° Compléter ce programme pour qu'il mémorise dans la variable moyenne la moyenne des notes contenues dans note1 et note2, puis affiche la valeur de moyenne à l'aide d'une instruction sur la dernière ligne.

CONSIGNE : vous ne devez pas écrire les valeurs visibles sur le programme pour le moment (20 et 14) mais uniquement les noms des variables. De cette façon, lorsqu'on modifiera l'une des notes, le programme continuera de fonctionner.

1 2 3 4 5
note1 = 20 note2 = 14 moyenne = ... ...

...CORRECTION...

1 2 3 4 5
note1 = 20 note2 = 14 moyenne = (note1 + note2) / 2 print(moyenne)

04° Analyser le programme pour répondre aux questions suivantes :

1 2 3 4 5 6
age = 16 limite = 18 autorisation = age > limite limite = 15 limite + 1 age = age + 10
  1. Que contient autorisation après exécution de la ligne 3 ?
  2. La ligne 4 a-t-elle un effet sur ce qui s'est passé en ligne 3 ?
  3. La ligne 5 a-t-elle un effet dans un programme ?
  4. Quelles sont les deux lignes à rajouter si on veut que le programme affiche exactement ce message montrant le contenu de la variable autorisation :
  5. Autorisation accordée : False
    Autorisation accordée : True

...CORRECTION...

Visuel q14
Résultat à la fin du programme
  1. L'age n'est pas supérieur à la limite. autorisation contient donc False.
  2. Le fait de modifier l'une des variables ayant servie en ligne 3 ne va clairement pas modifier le contenu de la variable. Séquentialité.
  3. La ligne 5 ne contient qu'une évaluation. Dans la console interactive, nous aurions eu un affichage. Ici, rien puisque cette ligne est dans un programme. Il aurait fallu utiliser print().
1 2 3 4 5 6 7 8
age = 16 limite = 18 autorisation = age > limite limite = 15 limite + 1 age = age + 10 print("Autorisation accordée :") print(autorisation)

05° Compléter les lignes 4 et 5 de ce programme qui calcule le périmètre et l'aire du rectangle de côté cote1 et cote2. Compléter alors les lignes 7 et 8 pour qu'il affiche les valeurs du périmètre et de l'aire.

Lancer ensuite le programme en modifiant uniquement les valeurs des variables en ligne 1 et 2.

1 2 3 4 5 6 7 8
cote1 = 100 cote2 = 150 perimetre = ... aire = ... ... ...

...CORRECTION...

1 2 3 4 5 6 7 8
cote1 = 100 cote2 = 150 perimetre = 2 * cote1 + 2 * cote2 aire = cote1 * cote2 print("Périmètre : ", perimetre) print("Aire : ", aire)

✌✎ 06° Réaliser un programme qui stocke le prix d'un objet dans une variable, le nombre d'objets voulus dans une autre variable et qui stocke puis affiche la somme d'argent à payer pour acheter tout cela.

✎ 07° Expliquer les effets visuels obtenus sur les trois premières spirales en donnant les valeurs successives de la variable etape et les caractéristiques de l'arc de cercle généré.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
from turtle import * couleur1 = "#FF0000" couleur2 = "#0000FF" etape = 1 color(couleur1) pensize(etape*5) circle(etape*30, 180) etape = etape + 1 color(couleur2) pensize(etape*5) circle(etape*30, 180) etape = etape + 1 color(couleur1) pensize(etape*5) circle(etape*30, 180) etape = etape + 1 color(couleur2) pensize(etape*5) circle(etape*30, 180) etape = etape + 1 color(couleur1) pensize(etape*5) circle(etape*30, 180) etape = etape + 1 color(couleur2) pensize(etape*5) circle(etape*30, 180)

✎ 08° Modifier uniquement les trois premières variables de façon à ne plus dessiner un rectangle rouge mais un carré bleu de 150 pixels de côté.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
from turtle import * couleur1 = "#FF0000" cote1 = 100 cote2 = 200 epaisseur = 10 color(couleur1) pensize(epaisseur) forward(cote1) left(90) pensize(epaisseur*2) forward(cote2) left(90) pensize(epaisseur) forward(cote1) left(90) pensize(epaisseur*2) forward(cote2) left(90)
2.2 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

3 - Condition, première rencontre

Instruction conditionnelle avec if elif

En Python, on peut demander de faire certaines choses sous condition. La première condition est exprimée derrière le mot if. On doit placer derrière ce mot-clé une expression qui sera évaluée comme un booléen (True ou False).

Les instructions à effectuer sous cette condition sont décalées de 4 espaces.

On peut placer des conditions supplémentaires en utilisant elif qui veut dire "sinon si".

09° A vous de deviner ce que va contenir appreciation au fur et à mesure du programme :

1 2 3 4 5 6 7
note = 12 appreciation = "bof" if note > 13 : appreciation = "bien" elif note < 8 : appreciation = "pas bien" note = 7
Instruction conditionnelle avec if elif else

On peut encore faire mieux : on peut placer un else généraliste qui veut dire : si aucune des possibilités précédentes n’est vraie, fait ces dernières actions qu'on propose.

10° A vous de deviner ce que va contenir autorisation au fur et à mesure du programme :

1 2 3 4 5 6
recu = "1234" mdp = "12345" if recu == mdp: autorisation = True else: autorisation = False

11° On remarquera qu’on aurait pu faire plus simple en réalité. Expliquer ce que contient autorisation ci-dessous. La variable recu contient le mot de passe reçu. La variable mdp contient le vrai mot de passe attendu.

1 2 3
recu = "1234" mdp = "12345" autorisation = recu == mdp

4 - FAQ

Pas de question pour le moment

5 -

Activité publiée le 27 11 2023
Dernière modification : 27 11 2023
Auteur : ows. h.