Variables et types

1. Introduction

Python est un langage de programmation, il s’agit donc d’un ensemble d’instructions qui va nous permettre d’écrire des programmes informatiques.

Un programme est une suite d’instructions données à un ordinateur afin qu’il effectue une tâche déterminée.

Nous prendrons garde à différencier les termes programme et algorithme. Observons pour cela les définitions données dans l’encyclopédie Wikipedia :

algorithme
Un algorithme est une suite finie et non ambiguë d’instructions et d’opérations permettant de résoudre un type de problèmes.
programme informatique
Un programme informatique est un ensemble d’instructions et d’opérations destinées à être exécutées par un ordinateur.

Un algorithme ne relève donc pas a priori du domaine de l’informatique. Cependant, la plupart des programmes informatiques sont la traduction d’un algorithme dans un certain langage de programmation.

Remarquons enfin que le mot algorithme vient d’Al-Khwârizmî (en arabe : الخوارزمي), nom d’un mathématicien persan du IXe siècle.

Il existe de nombreux langages de programmation et, même en utilisant un même langage, un algorithme peut être programmé de différentes façons. Un algorithme donné peut donc correspondre à de très nombreux programmes informatiques différents.

Cependant, un ordinateur n’est qu’une machine électrique qui ne peut directement comprendre que des suites d’instructions exprimées en langage machine par des suites de 0 et de 1. Le rôle d’un langage de programmation est de fournir au programmeur une syntaxe et une grammaire pour lui permettre d’exprimer des instructions de manière plus facilement compréhensible pour un être humain. Ce programme est ensuite traduit en langage machine puis exécuté.

Cette traduction est faite, suivant les langages, par un compilateur (programme qui crée un fichier exécutable à partir du code source) ou par un interpréteur (programme qui lit, traduit et exécute immédiatement une à une les instructions du code source).

En NSI, nous allons nous focaliser sur le langage Python.

Le langage Python a été créé en 1989 par l’informaticien néerlandais Guido van Rossum qui l’a nommé ainsi en hommage à la série télévisée des Monty Python dont il était fan.

Guido van Rossum

Guido van Rossum

2. Variables et affectation

Dans un programme, on utilise des variables pour stocker des données.

Une variable est déterminée par un nom de variable que l’on peut librement choisir. Il est néanmoins conseillé de choisir un nom court et auto-descriptif afin de comprendre à la lecture le rôle de cette variable.

Un nom de variable ne peut pas commencer par un chiffre et ne doit pas contenir de caractères spéciaux autres que “_” ou d’espace.

Il est conseillé d’utiliser plutôt des lettres minuscules, en séparant les mots par le caractère ”_” ou en utilisant des majuscules à l’intérieur du nom. Une variable prévue pour contenir un prix de revient pourra par exemple être nommée prix_de_revient ou prixDeRevient. Des recommandations précises de style de programmation Python sont rassemblées à cette adresse : https://peps.python.org/pep-0008/.

ImportantÀ retenir

Pour affecter une valeur à une variable, on utilise simplement le signe ”=”.

L’instruction pi = 3.14 a pour effet de :

  1. créer le nom de variable pi dans la mémoire de l’ordinateur ;
  2. créer la valeur 3.14 dans la mémoire de l’ordinateur ;
  3. établir un lien entre le nom pi et l’emplacement de la valeur 3.14 dans la mémoire de l’ordinateur.

On dira donc qu’une variable est l’association d’un nom et d’une valeur

En mode interactif, il suffit de taper le nom d’une variable et de valider pour afficher sa valeur. En mode programme, on utilisera la fonction print() pour afficher le contenu d’une variable à l’exécution.

Il est possible d’affecter des valeurs à plusieurs variables simultanément.

La commande a, b, c = 2, 2.5, "toto" affecte par exemple la valeur 2 à la variable a, la valeur 2.5 à la variable b et la valeur ”toto” à la variable c . Ces trois variables sont de types différents : a est un entier, b est un nombre à virgule et c est une chaîne de caractères.

Lors de la définition d’une variable, ou lors d’une nouvelle affectation, python détecte automatiquement le type de variable à définir en fonction de la valeur affectée. On parle de typage dynamique. D’autres langages de programmation imposent que les noms des variables et leur type soient déclarés avant toute affectation : on parle alors de typage statique.

La fonction type() permet de connaître le type d’une variable déjà définie.

ImportantÀ retenir

Les types de base sont :

  • type int : ce sont les nombres entiers (integer). Ils supportent les opérations +, −, *, /, ** (puissance), // (quotient entier), % (reste entier), abs() (valeur absolue) ;
  • type float : ce sont les nombres à virgule (on parle de virgule flottante), qui supportent les opérations usuelles ;
  • type string : ce sont les chaines de caractères.

Remarque : on peut effectuer un calcul et en même temps affecter le résultat à une variable, ou en même temps afficher le résultat en composant les instructions. Par exemple, la commande prix = 64 * (1 + 19.6 / 100) effectue d’abord le calcul indiqué après le signe =, puis affecte le résultat à la variable prix. On peut aussi exécuter la commande print("Le prix est : ", 64 * (1 + 19.6 / 100)).

Remarque : en Python, il est très facile d’échanger le contenu de deux variables, en utilisant une double affectation :

python linenums="1" a = "Bonjour" b = "NSI" a, b = b, a

Après l’exécution de ces trois lignes, la variable a renvoie la valeur "NSI" et b correspond à "Bonjour".

AstuceMéthode utile

Pour bien comprendre un programme, on peut dresser un tableau d’état dans lequel on affiche les valeurs successives des variables.

Le tableau d’état du programme ci-dessus s’écrit :

Etape a b
1 "Bonjour"
2 "Bonjour" "NSI"
3 "NSI" "Bonjour"

3. Opérations sur les chaînes de caractères

L’utilisation du signe + ne se limite pas à l’addition. Appliqué à des chaînes de caractères, il réalise l’opération de concaténation.

Concaténation

Le terme concaténation (substantif féminin), du latin cum («avec») et catena («chaîne, liaison»), désigne l’action de mettre bout à bout au moins deux chaînes. (Wikipédia)

Si on considère le programme suivant :

a = "Hello"
b = "World"
mon_expression = a + b

après l’exécution de ce programme, la variable mon_expression aura pour valeur "HelloWorld".

Il est aussi possible de concaténer une chaîne de caractères et une ou plusieurs variables de type str :

ma_chaine_1 = "Bonjour "
ma_chaine_2 = "le "
res = ma_chaine_1 + ma_chaine_2 + "monde !"

Après l’exécution de ce programme, la variable res aura pour valeur "Bonjour le monde !.

Les deux noms ma_chaine_1 et ma_chaine_2 sont associés à deux chaînes de caractères, nous avons donc bien ici une concaténation.

Que se passe-t-il si nous avons ce cas de figure :

a = "Nombre de pommes : "
b = 4 
c = a + b

a est de type str, alors que b est de type int. Le signe + représente une addition ou une concaténation ? Ni l’un, ni l’autre, puisque Python vous renverra une erreur : il ne peut pas concaténer, ni additionner un entier et une chaîne de caractère.

La solution : transformer le nombre 4 en caractère 4 à l’aide de la fonction str() :

a = "Nombre de pommes : "
b = 4 
c = a + str(b)

Nous avons maintenant une concaténation, car str(4) est de type string.

Autre solution pour faire cohabiter des variables de type int ou float avec des variables de type str : les fstring (attention les fstring sont uniquement disponibles à partir de Python 3.5)

Il est possible d’écrire :

a = "Nombre de pommes :"
b = 4 
c = f"{a} {b}"

après l’exécution du programme ci-dessus, la variable c aura pour valeur "Nombre de pommes : 4".

Dans la chaîne de caractère, {a} sera remplacé par la valeur de la variable a, c’est-à-dire "Nombre de pommes :". Même chose avec {b} qui sera remplacé par la valeur de b, c’est-à-dire 4.

Autre exemple d’utilisation des fstring :

num_train = 4232
dest = "Paris" 
c = f"Le train n°{num_train} à destination de {dest} entre en gare" 

Après l’exécution du programme ci-dessus, la variable c aura pour valeur "Le train n°4232 à destination de Paris entre en gare".

Notez la présence du “f” juste avant le guillemet et des accolades qui encadrent le nom de la variable. Il est nécessaire d’ajouter ce “f” pour avoir une fstring.

AvertissementEntrées utilisateurs avec input()

La fonction input() permet de demander à l’utilisateur d’entrer une valeur dans la console et de récupérer cette valeur en l’affectant à une variable.

On pourra par exemple tester le script suivant :

nom = input("Quel est votre nom ? : ")
print("Bonjour", nom, " ! ")

Une erreur courante consiste à demander l’entrée d’une valeur numérique et à l’utiliser directement dans un calcul. Le script suivant, par exemple :

rayon = input("Entrer le rayon du cercle : ")
peri = 2 * 3.14 * rayon
print("La longueur du cercle est :", peri)

conduit à :

TypeError: can't multiply sequence by non-int of type 'float'

La fonction input() retourne toujours une chaîne de caractères. Pour une entrée numérique, cette chaîne de caractère doit être évaluée, par exemple avec la fonction eval() qui retournera un type numérique int ou float selon les cas.

Le script ci-dessous produit le résultat attendu :

rayon = eval(input("Entrer le rayon du cercle : "))
peri = 2 * 3.14 * rayon
print("La longueur du cercle est :", peri)