Variables et entrées utilisateur#
Qu'est-ce qu'une variable ?#
En programmation, l'un des concepts fondamental est celui de variable. Ce terme désigne en fait la mémoire du programme. Une variable permet de stocker une valeur dans la mémoire du programme et de lui donner un nom. On peut se représenter une variable comme une boîte dans laquelle on range une valeur et sur laquelle on colle une étiquette indiquant son contenu. De manière schématique, on a donc ci-dessous deux variables. La première, appelée nom, contient le texte "Jan". La variable age contient quant à elle la valeur 26.
En Python, on peut créer des variables (et donc stocker des valeurs dans la mémoire du programme) avec la syntaxe nom_de_la_variable = valeur. Ainsi, les deux variables ci-dessus peuvent être créées de la manière suivante :
1nom = "Jan"
2age = 26
L'exécution de ce programme ne donne rien, mais les deux variables ont bien été créées. On peut visualiser le contenu des variables en utilisant le print() vu précédemment. En effet, si l'on met le nom d'une variable préalablement déclarée dans un print(), sa valeur sera alors affichée. Finalement, pour donner du sens à la valeur affichée, on peut afficher un texte à ses côtés en le séparant par une virgule.
1prénom = "Iliya"
2pays = "Bulgarie"
3ville = "Fribourg"
4print(prénom)
5print("Je viens de", pays, "et j'habite à", ville)
Le nom des variables ne doit jamais contenir d'espaces ! Ainsi, dans le cas où le nom d'une variable contiendrait plusieurs mots, on les sépare avec des "tirets en bas". Par exemple. année_de_naissance ou poids_en_grammes.
Types de valeurs#
En Python, les valeurs que l'on stocke dans les variables peuvent être de 4 types différents. Dans l'exemple précédent, nom contient un texte, c'est-à-dire une valeur de type str. La variable age contient quant à elle un nombre entier, qui est une valeur de type int. Le tableau ci-dessous résume les quatre types de valeurs possibles.
Type |
Nom complet |
Description |
Exemple |
|---|---|---|---|
|
integer |
Nombres entiers |
|
|
flottant |
Nombres à virgules |
|
|
string |
Texte / Chaînes de caractères |
|
|
booléen |
Résultat d'un test: Vrai ou Faux |
2<1 renvoie |
Important
Pour séparer les unités des décimales, les flottants utilisent un point, et non une virgule
Le texte des strings est toujours entourant de guillemets
Dans l'exemple ci-dessous, 4 variables de 4 types différents sont déclarées.
1année = 2025
2distance_km = 45.32
3collège = "Collège Sainte-Croix"
4promu = True
Opérations arithmétiques#
Avec Python, il est très facile d'effectuer des opérations arithmétiques (autrement dit, des calculs). On peut utiliser les opérateurs suivants. La priorité des opérations est la même qu'en mathématiques. On peut utiliser des parenthèses pour modifier cette priorité.
Opérateur |
Nom |
Exemple |
Résultat |
|---|---|---|---|
|
Addition |
|
|
|
Soustraction |
|
|
|
Multiplication |
|
|
|
Division |
|
|
|
Puissance |
|
|
Ces opérateurs peuvent être utilisés comme ci-dessus avec des valeurs, ou avec des variables, comme le montre l'exemple ci-dessous.
1nombre_de_personnes = 13
2prix_par_personne = 5.75
3réduction = 10.5
4total = nombre_de_personnes * prix_par_personne - réduction
5print("Le prix total est de", total, "CHF")
Ordre d'exécution des instructions#
Dans tous les langages de programmation, les lignes de code s'exécutent les unes après les autres de haut en bas. Lorsqu'une ligne s'effectue, elle ne peut pas influencer une ligne précédente. Par exemple, dans le programme ci-dessous, la valeur de b est définie comme le double de a. Toutefois, lorsque la valeur de a change, cela n'impacte pas la valeur de b qui a déjà été calculée.
1a = 5
2b = a * 2
3a = 9
4print(a, b)
Commentaires#
Comme un code Python peut être difficile à lire et à comprendre, on peut y ajouter des commentaires pour faciliter sa compréhension. Un commentaire est un texte quelconque qui ne sera pas pris en compte durant l'exécution du programme, et qui doit donc servir à expliquer ce qu'il se passe dans le code. Tout texte qui suit le signe # sur une ligne est considéré comme un commentaire. Pour exemplifier leur utilité, le programme ci-dessous vous est donné sans explication préalable, mais avec des commentaires.
1# Ce programme calcule le prix total des courses hebdomadaires
2
3# Déclaration des variables
4prix_pommes = 3.2 # en CHF/kg
5poids_pommes = 1.5 # en kg
6prix_pain = 2.8 # en CHF/pièce
7prix_lait = 1.6 # en CHF/bouteille
8prix_riz = 4.5 # en CHF/paquet
9reduction = 2.0 # en CHF
10
11# Calculs intermédiaires
12total_pommes = prix_pommes * poids_pommes
13sous_total = total_pommes + prix_pain + prix_lait + prix_riz
14
15# Application de la taxe (TVA de 7.7 %)
16taxe = sous_total * 0.077
17
18# Calcul du total final avec réduction
19total_ttc = sous_total + taxe - reduction
20
21# Affichage du résultat final
22print("Le montant total à payer est de", total_ttc, "CHF")
Entrées utilisateur#
Dans les programmes que nous avons écrits jusqu'à présent, l'utilisateur n'avait jamais son mot à dire sur ce qu'il se passait : il cliquait sur Play et voyait le résultat s'afficher. Toutefois, dans la grande majorité des programmes, l'utilisateur doit pouvoir interagir avec le programme avec son clavier, sa souris, sa manette de jeu, son microphone, etc. Toutes ces interactions que l'utilisateur peut avoir avec le programme durant son exécution sont appelées des entrées utilisateur. Dans ce cours, nous n'allons traiter qu'un seul type d'entrée utilisateur : l'écriture de texte au clavier.
La fonction input#
Pour que l'utilisateur puisse écrire une valeur au clavier durant l'exécution du programme, on utilise la fonction input(). Entre ses parenthèses, on met le texte à afficher à l'utilisateur pour lui indiquer ce qu'il doit écrire. Finalement, l'entrée de l'utilisateur doit être enregistrée dans une variable. De ce fait, le input() est toujours mis comme la valeur d'une variable, c'est-à-dire sous la forme variable = input(). L'exemple ci-dessous permet par exemple de demander le prénom de l'utilisateur, puis de le saluer.
1prénom = input("Quel est votre prénom ?")
2print("Bonjour", prénom)
Convertir une entrée#
La fonction input() donne toujours une valeur de type str, même lorsque l'utilisateur tape un nombre. Lorsque l'utilisateur doit entrer une valeur numérique (c'est-à-dire une valeur int ou float), la fonction input() doit donc être contenue dans la fonction de conversion int() ou float() correspondante, comme ci-dessous.
1nb_invités = int(input("Combien de personnes sont invitées ?"))
2prix_par_personne = float(input("Quel est le prix en CHF par personne ?"))
3total = nb_invités * prix_par_personne
4print("Le prix total est de", total, "CHF")
Important
input()donne toujours unstr.int()convertit en nombre entier,float()en nombre à virgule.Sans conversion,
"12" + "3"donne"123"et non15.
Exercices#
Exercice 1#
Pour chacune des questions ci-dessous, répondez sans exécuter le code : suivez la valeur des variables ligne après ligne, en vous souvenant qu'une ligne ne peut pas influencer les lignes précédentes.
Que vaut
bà la fin ?1a = 5 2b = a * 2 3a = b - a 4b = a + b
Que vaut
yà la fin ?1x = 3 2y = 7 3x = y 4y = x
Que vaut
2 + 3 * 2 ** 2?Que vaut
"12" + "3"?Que vaut
int("12") + 3?
Solution
15. Le tableau d'états est le suivant : après la ligne 2,
bvaut 10 ; à la ligne 3,aprend la valeur10 - 5, soit 5 ; à la ligne 4,bvaut donc5 + 10, soit 15.7. Piège classique : ce programme n'échange pas les valeurs de
xety. À la ligne 3,xreçoit 7 et l'ancienne valeur 3 est écrasée. À la ligne 4,yreçoit donc la valeur actuelle dex, c'est-à-dire 7. Pour échanger deux variables, il faudrait d'abord sauvegarder l'une d'elles dans une troisième variable.14. On calcule d'abord la puissance (\(2^2 = 4\)), puis la multiplication (\(3 \cdot 4 = 12\)), et enfin l'addition.
"123". Les deux valeurs sont desstr: l'opérateur+colle les deux textes l'un après l'autre au lieu de les additionner. C'est exactement ce qui arrive si l'on oublie de convertir uninput().15. La fonction
int()convertit d'abord le texte"12"en nombre entier, qui peut alors être additionné à 3.
Exercice 2#
Chacun des programmes suivants comporte au moins une erreur. Parfois, cette erreur fait directement buguer le programme avec un message d'erreur rouge. D'autres fois, le programme s'exécute correctement, mais son résultat n'est pas logique.
Corrigez chacun de ces codes de manière à ce qu'ils s'exécutent correctement et affichent un résultat logique. Lisez bien les messages d'erreur qui peuvent vous aider à corriger les codes.
1note = 4,5 2bonus = 0,2 3note_finale = note + bonus 4print("La note finale est", note_finale)
1longueur = 7 2largeur = 12 3périmetre = 2 * (Longueur + Largeur) 4print(périmetre)
1prix_pain = 3 2prix_beurre = 5 3print("Le prix du pain et du beurre est de" prix_pain + prix_beurre "CHF")
1année_collège = input("En quelle année du collège es-tu ?") 2print("Encore", 4 - année_collège, " an(s) avant d'avoir ta matu !")
1#Essayez avec la note 4.5 2note = int(input("Quelle est ta dernière note en informatique ?")) 3print("Ta dernière note d'informatique est", note)
Solution
1note = 4.5 2bonus = 0.2 3note_finale = note + bonus 4print("La note finale est", note_finale)
Les nombres à virgule s'écrivent avec un point. Avec une virgule, Python ne plante pas, mais il crée tout autre chose qu'un nombre (deux valeurs séparées), d'où le résultat étrange.
1longueur = 7 2largeur = 12 3périmetre = 2 * (longueur + largeur) 4print(périmetre)
Python distingue les majuscules des minuscules :
Longueuretlongueursont deux noms de variables différents.1prix_pain = 3 2prix_beurre = 5 3print("Le prix du pain et du beurre est de", prix_pain + prix_beurre, "CHF")
1année_collège = int(input("En quelle année du collège es-tu ?")) 2print("Encore", 4 - année_collège, " an(s) avant d'avoir ta matu !")
Un
input()donne toujours unstr: il faut le convertir pour pouvoir faire un calcul.1#Essayez avec la note 4.5 2note = float(input("Quelle est ta dernière note en informatique ?")) 3print("Ta dernière note d'informatique est", note)
int()ne sait convertir que des nombres entiers : pour une note à virgule, il fautfloat().
Exercice 3#
Ecrivez un programme permettant de calculer les quantités requises pour une recette de cake au citron. Les quantités dans le début de programme ci-dessous sont pour une personne. De plus, le programme laissera l'utilisateur choisir la quantité de sucre (en kg) qu'il souhaite mettre dans son cake. Le programme final affichera donc les textes suivants.
Combien de kg de sucre souhaitez-vous ajouter par cake ?
Combien de cakes voulez-vous faire ?
Vous avez besoin de :
- xxx oeufs
- yyy citrons
- zzz kg de farine
- www kg de sucre.
1nb_oeufs = 2
2nb_citrons = 3
3kg_farine = 0.2
4kg_sucre = #Continuez ici
Solution
1nb_oeufs = 2
2nb_citrons = 3
3kg_farine = 0.2
4kg_sucre = float(input("Combien de kg de sucre souhaitez-vous ajouter par cake ?"))
5nb_cakes = int(input("Combien de cakes voulez-vous faire ?"))
6
7print("Vous avez besoin de :")
8
9print(" -", nb_oeufs * nb_cakes, "oeufs")
10print(" -", nb_citrons * nb_cakes, "citrons")
11print(" -", kg_farine * nb_cakes, "kg de farine")
12print(" -", kg_sucre * nb_cakes, "kg de sucre")
Exercice 4#
Complétez le programme ci-dessous pour calculer le montant que chaque élève doit payer pour la sortie de classe en fonction des données suivantes :
25 élèves prennent part à la sortie
La journée débute à FriBowling. Le prix du bowling est de 10CHF par personne et par heure. Les élèves jouent durant 1h30.
En sortant, un élève chanceux et généreux trouve un billet de 50CHF sur le sol et décide de le mettre dans la caisse de classe pour payer les activités suivantes.
Puis, les élèves se rendent à la piscine de la Motta. L'entrée coûte 4.5 CHF par élève. Toutefois, comme le groupe dépasse 20 personnes, un rabais de 20% est accordé.
L'après-midi, la classe fait un mini-golf urbain. Le prix pour tout le groupe est de 125CHF
Affichez le montant que chaque élève devra payer sachant que dans cet univers fictif (et décidemment très généreux) le collège paie la moitié du montant de la journée.
ATTENTION : Pour vous y retrouver, veillez à inclure des commentaires dans votre code !
1nombre_élèves =
2
3#Calcul du prix du bowling
4tarif_bowling = 10
5durée_bowling =
6prix_total_bowling =
7
8#A vous de continuer depuis ici !
Solution
nombre_élèves = 25
#Calcul du prix du bowling
tarif_bowling = 10
durée_bowling = 1.5
prix_bowling = nombre_élèves * tarif_bowling * durée_bowling
#Billet trouvé sur le sol
billet_trouvé = 50
#Prix de la piscine
tarif_piscine = 4.5
rabais_piscine = 0.8
prix_piscine = nombre_élèves * tarif_piscine * rabais_piscine
#Prix du mini-golf urbain
prix_mini_golf = 125
#Calcul du prix total
total = prix_bowling - billet_trouvé + prix_piscine + prix_mini_golf
#Prise en charge de la moitié par le collège
total = total / 2
#Calcul du prix par élève
prix_par_élève = total / nombre_élèves
#Affichage du prix par élève
print("Chaque élève doit payer", prix_par_élève, "CHF")