Un langage de programmation permet de stocker des données dans la mémoire.
Les variables permettent d’enregistrer des données puis de les lire plus tard.
Intro A (Mise en place)° Réaliser les actions suivantes :
Ouvrir Thonny. Réduire la fenêtre de Thonny et de votre navigateur Web pour que chaque fenêtre occupe la moitié de l'écran.
Ouvrir votre dossier/répertoire personnel. Créer dans le dossier SNT un nouveau sous-dossier qu'on nommera python03.
Sur Windows : vérifier via le menu affichage de votre explorateur de dossiers que vous avez bien coché la case "Afficher les extensions".
Intro B° Dans Thonny, 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.
Intro C° Dans la zone de programmation, sauvegarder ce programme sous le nom decouvertevariable.py. Ensuite :
Lancer le programme
Regarder l'onglet variables de Thonny pour voir ce qu'il contient
Regarder la console pour voir si elle a affiché quelque chose
1
2
3
4
5
a=20b=10c=a+ba
Vous devriez obtenir ceci :
une variable a a été créée dans l'onglet VARIABLES et elle référence 20.
une variable b a été créée dans l'onglet VARIABLES et elle référence 10.
une variable c a été créée dans l'onglet VARIABLES et elle référence 30.
la console n'affiche rien : la ligne 5 ne semble pas avoir eu d'effet !
Intro D° Remplacer le programme par celui-ci qui diffère juste par la ligne : la ligne 5. On utilise la fonction print() vue dans Python 01 : elle permet de demander à Python d'afficher dans la console.
Lancer le programme
Regarder la console pour voir si elle a affiché quelque chose cette fois
1
2
3
4
5
a=20b=10c=a+bprint(a)
Vous devriez obtenir ceci :
la console affiche 20 cette fois. C'est bien le contenu de a.
Intro E° Utiliser ce nouveau programme et répondre à cette question : la ligne 04 a-t-elle permis de modifier la valeur de a ?
1
2
3
4
5
a=20print(a)a+100print(a)
Vous devriez obtenir ceci :
On voit qu'on affiche deux fois 20 : la ligne 4 n'a pas modifié a : on a juste demandé à Python de calculer ce que fait a + 100 sans lui demander d'afficher le résultat.
Intro F° Utiliser ce dernier programme et répondre à cette question : la ligne 04 a-t-elle permis de modifier la valeur de a ?
1
2
3
4
5
a=20print(a)a=a+100print(a)
Vous devriez obtenir ceci :
On voit qu'on affiche 20 puis 120 : cette fois la ligne 4 a bien modifié a.
Quelques exercices pratiques.
⚙ 01° 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 de valeurs visibles sur le programme en dehors des lignes 1 et 2 (20 et 14). Utilisez uniquement les noms des variables. De cette façon, lorsqu'on modifiera l'une des notes, le programme continuera de fonctionner.
✎ 05° Lancer ce programme pour voir ce qu'il trace. Modifier ensuite uniquement les trois premières variables de façon à tracer un carré rouge foncée de 150 pixels de côté. Sur votre copie, écrire uniquement les 3 lignes modifiées.
Un nom EXPLICITE : le nom doit être suffisant pour comprendre l'information contenue.
Toujours une minuscule au début.
Aucun espace. Si vous voulez utiliser un nom composé, choisissez entre
les underscores : note_ds
une majuscule de séparation : noteDs
Voici le bilan des notions abordées ici :
1.1 VARIABLE - Affectation
Affectation
L'affectation est le nom qu'on donne au mécanisme permettant de créer une liaison entre un NOM et un CONTENU MEMOIRE.
L'opérateur d'affectation = en Python
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é.
Néanmoins, une affectation est simplement un moyen de faire la liaison entre un NOM et un CONTENU en mémoire :
L'opérateur d'affectation ← 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 plutôt ceci dans les algorithmes :
a←10
Lire une variable
Pour obtenir le contenu d'une variable, il suffit
Dans la console interactive : de taper le nom de cette variable .
>>> a = 100
>>> a
100
Dans un programme : d'utiliser print() sur cette variable .
1
2
a=100print(a)
1.2 VARIABLE - Exemples d'affectation
Déroulé de l'affectation
On commence par évaluer ce qui est à droite de =, puis on affecte cette valeur à la variable de gauche.
Exemple 1
1
a=20+5
TRADUCTION : affecte 25 à la variable a.
Exemple 2
1
2
a=20b=a+100
TRADUCTION : évalue a + 100 et affecte cette nouvelle valeur de 120 à la variable b.
On peut se demander pourquoi passer par des variables alors que la valeur est écrite quelques lignes au dessus.
2.1 But des variables : stocker une future information
Exécuter mentalement un programme
Dans le programme qui calcule puis affiche une moyenne de deux notes, l'ordinateur a besoin de connaître les valeurs réelles pour réaliser les calculs.
Vous pouvez EXECUTER MENTALEMENT ce programme : il va afficher une valeur de 15. Oui, mais : on ne vous demande pas d'EXECUTER le programme : c'est le travail de l'ordinateur.
Comprendre mentalement un programme
En tant qu'humain, vous avez juste besoin que de COMPRENDRE ce que réalise le programme.
J'ai remplacé les contenus réels des variables par ... : vous devriez comprendre ce que le programme va réaliser, un jour, lorsqu'il aura accès à des valeurs précises si vous savez qu'elles contiendront des notes comprises entre 0 et 20.
L'utilisation d'une variable permet de COMPRENDRE un programme sans savoir EXACTEMENT ce que seront les données : on doit simplement connaître quel type d'informations elles contiennent.
2.2 Le cas de l'Interface Homme Machine (IHM)
Lorsqu'un programme doit récupérer les données qu'un utilisateur va taper (un jour) au clavier, sa future réponse ne peut pas apparaître en dur dans le programme.
En Python, une fonction permet d'"écouter le clavier". Lorsqu'on active la fonction input(), elle attend que l'utilisateur tape sur ENTREE et renvoie alors sa réponse sous forme d'un string.
Prenons ce court programme : tout ce que vous avez besoin de savoir pour le comprendre, c'est que la variable reponse va contenir le texte correspondant aux touches enfoncées par l'utilisateur.
1
2
3
4
print("Donnez votre nom puis validez avec la touche ENTREE : ")reponse=input()print("Merci. Votre nom est :")print(reponse)
On comprend qu'on demande son nom à l'utilisateur en ligne 2. On stocke sa réponse dans la variable nommée reponse. Et en ligne 4, on affichera sa réponse. Vous n'avez pas besoin de savoir EXACTEMENT ce qu'il va taper pour comprendre ce que va réaliser ce programme.
⚙ 06° Utiliser ce programme qui demande à l'utilisateur un texte puis le répète 3 fois. Tapez ce que vous voulez et visualisez bien que la variable reponse va contenir ce que vous venez de taper.
1
2
3
4
print("Donnez votre texte puis validez avec la touche ENTREE : ")reponse=input()print("Merci. La répétition donne ceci ")print(reponse*3)
Exemple d'utilisation : si vous tapez "Bon", il affichera "BonBonBon".
Question
En lisant simplement le code, peut-on prévoir à l'avance le contenu de la variable reponse ?
...CORRECTION...
Non, on ne peut pas savoir ce que va taper l'utilisateur.
Par contre, on peut réfléchir et élaborer un programme en sachant que cette variable va contenir ce que l'utilisateur va taper un jour.
⚙ 07° Utiliser ce programme qui demande à l'utilisateur un texte puis le nombre de fois qu'il veut qu'on le répète.
1
2
3
4
5
6
print("Donnez votre texte puis validez avec la touche ENTREE : ")reponse=input()print("Combien de fois voulez-vous le répéter ? ")nb=int(input())print("Merci. La répétition donne ceci ")print(reponse*nb)
Exemple d'utilisation : si vous tapez "Bon" puis "5", il affichera "BonBonBonBonBon".
Questions
En lisant simplement le code, peut-on prévoir à l'avance le contenu des variables reponse et nb ?
En ligne 4, pourquoi avoir utilisé la fonction int() sur le résultat que va renvoyer input() ?
...CORRECTION...
Non, toujours pas.
Si l'utilisateur tape 13 par exemple, la fonction input() va renvoyer "13" un string. Il faut donc utiliser int() pour parvenir à l'interpréter comme un entier.
✎ 08° Compléter le programme pour qu'il stocke l'année de naissance de l'utilisateur dans naissance. Il stocke ensuite l'année actuelle dans maintenant. Il calcule alors l'age de la personne en utilisant ces deux variables et stocke le résultat dans age. On ne tiendra pas compte de la date d'anniversaire, juste de l'année de naissance.
N'écrivez que les lignes sans print sur votre feuille.
1
2
3
4
5
6
7
print("Quelle est votre année de naissance (avec 4 chiffres) ? ")naissance= ...
print("Quelle année sommes-nous (avec 4 chiffres) ? ")maintenant= ...
age= ...
print("Merci. Votre age : ")print(age)
✎ 09° Compléter le programme pour qu'il demande à l'utilisateur de fournir 3 intensités colorées RGB (sous le format 00 11 22 ... jusqu'à FF). Vous ne noterez que les lignes 10 à 13 sur votre feuille.
Ensuite, il faudra créer et stocker le string qui correspond uniquement à la couleur verte puis uniquement à la bleue.
Enfin, il faudra créer le string qui correspond à la vraie couleur RGB que veut l'utilisateur.
fromturtleimport*print("Quelle intensité R ? ")r=input()print("Quelle intensité G ? ")g=input()print("Quelle intensité B ? ")b=input()rouge="#"+r+"00"+"00"vert=...bleu=...couleur_voulue=...pencolor(rouge)dot(40)goto(50,0)pencolor(vert)dot(40)goto(100,0)pencolor(bleu)dot(40)goto(150,0)pencolor(couleur_voulue)dot(40)
Exemple de résultat si l'utilisateur tape FFFF00 :
✎ 11° Compléter ce programme pour qu'il fasse ceci au final :
stocke le prix d'un objet dans une variable prix (fait en ligne 1)
stocke le nombre d'objets voulus dans une variable nb (fait en ligne 2)
calcule et stocke le prix à payer dans une variable total.
calcule et stocke dans total le prix en rajoutant 5 euros de frais de dossier. Il faudra faire ce calcul en utilisant une incrémentation.
affiche le total à payer.
Vous noterez sur votre copie uniquement les lignes qu'il faudra compléter.
1
2
3
45
6
7
8
prix=10nb=7total=...total=...print("Total")
...
Voyons comment tracer des cercles ou des arcs de cercle avec Turtle. Si c'est un rappel pour vous, vous pouvez passer directement aux questions suivantes.
3.3 - Turtle : tracer un arc de cercle avec circle()
Tracer un cercle complet
La fonction circle() trace un cercle dont on doit fournir le rayon. La position actuelle correspond au point de départ sur le périmètre du cercle.
1
2
3
4
fromturtleimport*circle(100)circle(50)
Tracer un arc de cercle
On peut envoyer deux arguments à la fonction circle() : le premier est le rayon, le deuxième est l'angle vers lequel le crayon va s'arrêter lors du tracé. Pas facile à utiliser.
360° de rotation sur soi-même en suivant la trajectoire du cercle : facile, ça fait un cercle.
180° de rotation sur soi-même en suivant la trajectoire du cercle imaginaire : facile, ça fait un demi-cercle.
90° de rotation sur soi-même en suivant la trajectoire du cercle imaginaire : facile, ça fait un quart de cercle.
fromturtleimport*pensize(etape*5)couleur1="#FF0000"couleur2="#0000FF"# Premier cercleetape=1pencolor(couleur1)circle(etape*30,360)# Deuxième cercleetape=etape+1pencolor(couleur2)circle(etape*30,360)# Troisième cercleetape=etape+1pencolor(couleur1)circle(etape*30,360)# Quatrième cercleetape=etape+1pencolor(couleur2)circle(etape*30,360)# Cinquième cercleetape=etape+1pencolor(couleur1)circle(etape*30,360)# Sixième cercleetape=etape+1pencolor(couleur2)circle(etape*30,360)
✎ 13° Expliquer pourquoi on obtient cette fois uniquement des demi-cercles.
fromturtleimport*pensize(etape*5)couleur1="#FF0000"couleur2="#0000FF"# Premier demi-cercleetape=1pencolor(couleur1)circle(etape*30,180)# Deuxième demi-cercleetape=etape+1pencolor(couleur2)circle(etape*30,180)# Troisième demi-cercleetape=etape+1pencolor(couleur1)circle(etape*30,180)# Quatrième demi-cercleetape=etape+1pencolor(couleur2)circle(etape*30,180)# Cinquième demi-cercleetape=etape+1pencolor(couleur1)circle(etape*30,180)# Sixième demi-cercleetape=etape+1pencolor(couleur2)circle(etape*30,180)
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".
⚙ 14° Donner les lignes que va exécuter Python sur ce programme. Cette fois, certaines ne seront pas peut-être pas faire à cause de la condition. Que va contenir appreciation à la fin du programme ?
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.
⚙ 15° A vous de deviner ce que va contenir autorisation au fur et à mesure du programme :
⚙ 16° 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
Voici le cours récapitulant ce que vous venez de voir.