Les différents types

Le type des variables utilisées a une grande importance dans le code utilisé car leurs utilités et leurs manipulations sont bien différentes. Pour reconnaître le type d’une variable, il existe une fonction intégrée à Python, la fonction type()

Note

Nous décuorirons au fur et à mesure d’autres types : listes, tableaux...

Les numériques

Un nombre diffère par l’espace mémoire aloué pour celui-ci par l’ordinateur.

Les entiers

Considérons un entier

>>> a = 2
>>> type(a)
<type 'int'>

Nous ne ferons à ce stade, pas de distinction entre les entiers et les longs. Le typage étant dynamique, nous laisserons le lecteur se reporter au cours de Gérard Swinnen par exemple Apprendre à programmer avec Python (lien)

Les flottants

Ce sont les nombres réels (dits à virgule flottante).

>>> b = 3.1415926
>>> type(b)
<type 'float'>

Note

Les fonctions round() (arrondi) et int() (partie entière) pourront être utiles pour travailler avec les flottants. Elles sont nativement intégrées dans Python.

>>> round(b,2)
3.14
>>> int(b)
3

Les complexes

De façon native, Python contient déjà l’écriture des complexes. La partie imaginaire s’écrit j. Ainsi, le nombre complexe \(1+3j\) s’écrit 1+3j.

>>> z1 = 1+3j
>>> type(z1)
<type 'complex'>
>>> z2 = 2+9j
>>> z1 + z2
(3+12j)

Note

Si l’on veut utiliser le complexe \(j\) tout seul, il faudra écrire 1j.

par exemple, cherchons l’argument de \(j\) avec la fonction angle() de Scipy qui renvoie l’argument d’un complexe en radians.

>>> from scipy import *
>>> angle(j)
NameError: name 'j' is not defined
>>> angle(1j)
1.5707963267948966

Note

La fonction abs() est nativement intégrée dans Python. En revanche pour l’argument, on utilisera la fonction angle() de Scipy.

Les booléens

Question fermée à réponse binaire

Les booléens ne peuvent prendre que 2 valeurs : Vrai (True attention à la majuscule) ou Fausse (False attention à la majuscule). Exemple :

>>> 1 == 2      # 1 est-il égal à 2 ?
False
>>> 1 == 1      # 1 est-il égal à 1 ?
True
>>> a = 3 == 4  # a est la réponse à la question 3 est-il égal à 4 ?
>>> a
False
>>> type(a)
<type 'bool'>

On peut encore définir un booléen en affectant directement une valeur booléenne à une variable.

>>> b = False
>>> type(b)
<type 'bool'>

>>> c = false # Attention à la majuscule
NameError: name 'false' is not defined

Les comparaisons

Une comparaison entre deux nombre conduit à un résultat binaire, donc à un booléen.

Les comparaisons codées en python peuvent se résumer dans le tableau suivant :

test maths Vrai quand
x == y \(x = y \; ?\) x est égal à y
x != y \(x \neq y \; ?\) x est différent de y
x > y \(x > y \; ?\) x est strictement supérieur à y
x < y \(x < y \; ?\) x est strictement inférieur à y
x >= y \(x\geq y \; ?\) x est supérieur ou égal à y
x <= y \(x \leq y \; ?\) x est inférieur ou égal à y

On peut aussi combiner deux inégalités

test maths Vrai quand Remarque
a <= x and x <= b \(a \leq y \leq b \; ?\) x est compris entre a et b inclus lisible
a <= x <= b \(a \leq y \leq b \; ?\) x est compris entre a et b inclus syntaxe propre à Python

Les chaînes de caractères

Une chaîne de caractères (string ou str en abrégé) est une suite de données de lettres ou de chiffres (ou les deux) encadrée par des guillemets ou des apostrophes. Nous utiliserons toujours, par souci de commodité et de cohérence, le préfixe u pour le codage Unicode et les guillemets pour pouvoir utiliser l’apostrophe dans la chaîne de caractères.

La fonction print() permet d’afficher la chaîne de caractères en question. Son utilisation sera détaillée dans le chapitre dédié aux chaînes de caractères.

>>> test1 = 'essai de chaine de caractères'
>>> print(test1)
essai de chaine de caractères
>>> type(test1)
<type 'str'>

>>> test2 = u"J'aime python" # Fomat utile en unicode
>>> print(test2)
J'aime python
>>> type(test2)
<type 'unicode'>

Note

Les chaînes de caractères écrites en latex seront étudiées dans le chapitre dédié à celles-ci.

Passage des chaînes de caractères aux numériques

Les chaînes de caractères peuvent contenir des nombres qu’il faut parfois convertir en numérique (typage) afin de faire des opérations dessus (Par exemple lorsqu’on lit un fichier). On utilise alors la fonction float().

>>> a = u"3.14"
>>> a
u'3.14'
>>> type(a)
<type 'unicode'>    #  a est une chaîne de caractères
>>> b = float(a)
>>> b
3.14
>>> type(b)
<type 'float'>      #  b est un flottant

Passage des numériques aux chaines de caractères

Il peut être utile de convertir un numérique en chaine de caractère, par exemple lorsqu’on écrit un fichier. Une première méthode consiste à utiliser la fonction str(). Regardons le type de chacune des variables dans l’exemple suivant :

>>> a = 3.14
>>> type(a)
<type 'float'>
>>> b = str(a)
>>> type(b)
<type 'str'>

On peut aussi intégrer le numérique dans une chaine de caractère en réalisant une conversion dans la commande. Cette méthode est très utile pour coder les légendes des graphiques utilisant des paramètres (voir chapitre dédié)

>>> a = 3.14
>>> b = u"le nombre a est : %4.1f qui est inférieur à pi" %(a)
>>> print(b)
le nombre a est : 3.1 qui est inférieur à pi

Le pourcentage % indique l’emplacement dans la chaine de caractère du nombre à convertir et le f indique que le format est un réel (flottant). Le 1 indique le nombre de chiffre après la virgule et le 4 le nombre de chiffre significatifs.

On peut enfin faire une double conversion (voire plus) avec cette méthode

>>> from scipy import *
>>> b = u"le nombre a est : %4.6f qui est inférieur à %4.6f " %(a,pi)
>>> print(b)
le nombre a est : 3.140000 qui est inférieur à 3.141593

Pour aller plus loin

Dans des utilisations plus poussées, on pourra utiliser les formats %e, %g, %f comme dans l’exemple suivant

>>> num = 123123.123
>>> print(u" %3.3e \n %3.3g \n %3.3f" %(num,num,num))
 1.231e+05
 1.23e+05
 123123.123