Variables et types de données

Variables et affectations

En programmation impérative, l’un des aspects les plus important est la manipulation des données. Pour cela, nous devons pouvoir les stocker.

Une variable permet de référencer des données pour les réutiliser ensuite. Pour créer une variable il suffit de lui affecter une valeur avec l’opérateur =. Ceci a pour effet de créer une liaison entre un nom et une donnée.

Une fois, une liaison crée, il est possible de s’en servir. Par exemple avec la fonction print qui permet d’afficher à l’écran le contenu d’une variable.




(affectation1)

Il est impossible de se servir d’une variable, par exemple pour en afficher à l’écran le contenu, si cette dernière n’a pas été créée. Cela entraine une erreur ; le programme s’arrête.

Ainsi, sur l’exemple suivant, l’affectation qui crée la variable b (ligne 4) est après son utilisation (ligne 3). Cela entraine une erreur lors de l’exécution du programme et l’affichage de cette dernière.

Il faut apprendre à lire les messages d’erreur. Ici on nous indique que le nom b, à la ligne 3, n’est pas lié à une valeur. L’interpréteur nous dit qu’il est “non défini”.




(affectation-erreur)

Nom des variables

Le nom d’une variable peut contenir toute combinaison de caractères alpha-numériques et souligné (_) pourvu qu’elle ne débute par un chiffre et ne corresponde pas à un mot clef du langage. Voici quelques exemples de noms acceptables: a, une_variable, uneAutre, a2. Voici d’autres noms qui eux ne sont pas autorisés : 1autre (commence par un chiffre), if (est un mot clef réservé du langage).

Notons enfin que les noms sont sensibles à la distinction entre majuscules et minuscules (ma_variableMa_VaRiAbLE)

Visualisons l’affectation dans la mémoire

Nous allons tenter de voir plus en détail le processur de l’affectation et ce qui se passe dans la mémoire. Dans la vidéo ci-dessous, nous utilisons la fonction python id. Cette fonction n’étant pas implémenter dans notre outils web vous n’aurez pas la possibilité de reproduire en direct cette expérience.

Je vous invite à regarder cette vidéo qui explique des éléments important de Python.

Les types numériques

Qu’est ce qu’un type de données ?

Les données ont toujours un type qui définit les valeurs que peuvent prendre ces dernières ainsi que les opérateurs qui peuvent leur être appliqués. Voici quelques types classiques que nous utiliserons :

  • Un entier 2
  • Un nombre à virgule 3.14
  • Une chaîne de caractères "Supélec"
  • Une liste d’entiers [3, 2, 1]

Pour connaître le type d’une donnée, on utilise la fonction type.




(type-donnee)

L’exemple ci-dessus montre qu’en Python, seules les données ont un type. Il n’y a pas de type attaché aux variables. La variable a est successivement associée à un nombre entier puis un nombre à virgule flotante.

Les nombres entiers et à virgule flotante

En Python, le type correspondant aux entiers est le type int. Ces litéraux sont par exemple 0, 1, -10 ou 986758.

Pour représenter les nombres à virgule, on utilise les float. Les valeurs 3.1415, -1.2, 0.0 mais aussi 0. sont des exemples de litéraux.

Python dispose d’un ensemble d’opérations d’arithmétique sur les nombres : addition, soustraction, produit, division réelle, division entière, reste de la division entière et exponentiation.

Les opérations sur les nombres

Python dispose d’un ensemble d’opérations de base sur les nombre : addition, soustraction, produit, division réelle, division entière, reste de la division entière et exponentiation.

Attention, contrairement à certain langage, le résultat d’une division réelle sur des int est un float (voir l’exemple ci-dessous).




(operateurs)

Compléments sur l’affectation

Dans les langages de programmation, une expression est une combinaison de variables, de littéraux, d’opérateurs et de fonctions. Une expression est évaluée lors de l’exécution d’un programme et renvoie (est substituée par) la valeur resultant de son calcul. Cette valeur peut ensuite être utilisée.

Dans le cas d’une affectation. Le résultat du calcul de l’expression à droite du symbole = est lié avec la variable placée à gauche.

L’affectation est donc différente de l’égalité mathématique et il n’est pas supprenant de rencontrer des affectations telles que : v = v + 1.

Lors de l’évaluation de cette instruction, la valeur associée à v sera additionnée avec la valeur 1 puis le résultat obtenu sera associé à la variable v. On peut abréger l’instruction ci-dessus en :v += 1.

Ceci est valable pour tous les opérateurs arithmétique de base.

var += k var -= k var /= k var //= k var %= k var *= k var **= k

Vous devriez maintenant être capable de comprendre l’exemple suivant et deviner son résultat avant d’exécuter le code.




(operateurs2)

Entrée/sortie et conversions de types

Nous avons déjà vu comment afficher des chaines de caractères avec la fonction print() cependant nous souhaiterions afficher des chaines plus complexes. Pour cela nous utilisons l’opérateur + de concaténation de chaines de carcatères.




(concatenation)

Cet opérateur ne permet de mettre bout à bout que des chaines de caractères. Ainsi l’exemple suivant ne s’exécutera pas sans erreur : “cannot concatenate ‘str’ and ‘float’”.

Pour que l’on puisse faire cette concaténation, il est nécessaire de convertir le nombre à virgule flotante en une chaine. Pour cela on utilise la fonction str() qui convertie n’importe quelle valeur en chaine de caractères.

Modifiez le code en utilisant str(3.1415).




(concatenation2)

En complétement avec la fonction print; nous utiliserons la fonction input() pour demander à l’utilisateur de saisir du texte. Cette fonction vaut la valeur saisie, sous la forme d’une chaîne de caractères.




(input)

Cette fonction nous permet de demander à un utiliser de saisir des nombres mais attention car la fonction renvoie une valeur de type chaine de caractères. Elle est ne peut donc être utilisée dans un calcul numérique. Ainsi l’exemple suivant génère une erreur à la ligne 4.




(input2)

Pour résoudre ce problème il faut convertir la chaine en une valeur numérique. On utilise la fonction int(). Cette dernière prend en paramètre une valeur de n’importe quel type et renvoie un entier. La fonction float fonctionne de la même façon mais renvoie un nombre à virgule flotante. Vous devriez maintenant pouvoir corriger le code ci-dessus pour qu’il ne génère plus d’erreurs en modifiant la ligne 4 : age = 2015 -int(n)

Next Section - Les fonctions - premier contact