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...
Un nombre diffère par l’espace mémoire aloué pour celui-ci par l’ordinateur.
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)
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
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 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
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≠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≥y? | x est supérieur ou égal à y |
x <= y | x≤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≤y≤b? | x est compris entre a et b inclus | lisible |
a <= x <= b | a≤y≤b? | x est compris entre a et b inclus | syntaxe propre à Python |
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.
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
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