3.1 Types numériques : int
, float
,
complex
Python a plusieurs types numériques, chacun convenant à différentes tâches et au traitement des données. Nous avons déjà mentionné les types de données
int
, float
, complex
, ainsi que les types booléens
bool
, qui sont une sous-classe des entiers. Maintenant, examinons
chacun de ces types plus en détail.
int
(Nombres entiers) :
C'est probablement le type numérique le plus couramment utilisé en Python. Les nombres entiers peuvent être positifs ou négatifs et ne possèdent pas de points décimaux. Python prend en charge la précision arbitraire, ce qui signifie qu'il n'y a pratiquement aucune limite à la taille des nombres que vous pouvez traiter, à l'exception des limitations de mémoire de votre machine.
float
(Nombres à virgule flottante) :
Ces nombres sont utilisés pour représenter des nombres réels et peuvent contenir des points décimaux. Python implémente les nombres à virgule flottante selon la norme IEEE 754 double-précision, offrant une précision de l'ordre de 15 chiffres décimaux après la virgule.
complex
(Nombres complexes) :
Les nombres complexes ont une partie réelle et une partie imaginaire. Les deux sont représentées par des nombres à virgule flottante. En Python, le suffixe j
ou J
est utilisé pour indiquer la partie imaginaire. Par exemple, un nombre complexe peut être créé ainsi :
complex_number = 3 + 5j
bool
(Valeurs booléennes) :
En Python, True
et False
sont des versions spécialisées des entiers et fonctionnent comme 1 et
0 respectivement. Cela permet de les utiliser dans
des opérations arithmétiques et d'autres expressions mathématiques.
Opérations arithmétiques :
Python prend en charge toutes les opérations arithmétiques de base, y compris l'addition, la soustraction, la multiplication, la division, la division entière, le reste de la division et l'exponentiation. Par exemple :
- Addition : 3 + 2
- Soustraction : 5 - 2
- Multiplication : 2 * 3
- Division : 7 / 2
- Division entière : 7 // 2
- Reste de la division : 7 % 2
- Exponentiation : 2 ** 3
Conversion de types :
Nous avons déjà parlé de la conversion (ou du casting) de types.
On peut convertir certains types de nombres en d'autres à l'aide de fonctions de casting,
telles que int()
, float()
et
complex()
.
Nous avons déjà abordé certains aspects de la conversion de types numériques, et nous examinerons d'autres aspects plus en détail dans les conférences suivantes.
3.2 Nombres pseudo-aléatoires
Parfois, le programmeur est confronté à des tâches apparemment simples : « sélectionner un film aléatoire pour une soirée parmi une liste donnée », « choisir un gagnant de loterie », « mélanger une liste de chansons en secouant un smartphone », « choisir un nombre aléatoire pour crypter un message ». Chaque fois, la question très légitime se pose : comment obtenir ce fameux nombre aléatoire ?
Obtenir un nombre vraiment « aléatoire » est assez difficile. Au point que des coprocesseurs mathématiques spéciaux sont intégrés dans l'ordinateur pour générer de tels nombres, satisfaisant à toutes les exigences de « vraie randomisation ».
C'est pourquoi les programmeurs ont inventé leur propre solution - nombres pseudo-aléatoires. Les nombres pseudo-aléatoires sont une sorte de séquence, dans laquelle les nombres semblent à première vue aléatoires, mais un spécialiste, en analysant en détail, pourra y trouver certaines régularités. Pour crypter des documents secrets, de tels nombres ne conviennent pas, mais pour simuler le lancer d'un dé dans un jeu - tout à fait.
Il existe de nombreux algorithmes pour générer une séquence de nombres pseudo-aléatoires et presque tous génèrent le nombre aléatoire suivant sur la base du précédent et de quelques nombres auxiliaires supplémentaires.
Par exemple, le programme suivant affichera à l'écran 1000 nombres non répétitifs :
a = 41
c = 11119
m = 11113
seed = 1
def get_next_random():
global seed
seed = (a * seed + c) % m
return seed
for t in range(1000):
x = get_next_random()
print(x)
D'ailleurs, on parle de la séquence des nombres pseudo-aléatoires et non des nombres eux-mêmes. Car en regardant un seul nombre, il est impossible de comprendre s'il est aléatoire ou non.
On peut obtenir un nombre aléatoire de différentes manières :
def get_random_number():
return 4 # c'est vraiment un nombre aléatoire (z l'a sorti avec des dés), voir "La blague des dés"
3.3 Bibliothèque random
En Python, il existe une bibliothèque intégrée random avec laquelle tu pourras travailler. Comme tu l'as peut-être déjà deviné d'après son nom, avec cette bibliothèque, tu peux générer des nombres [pseudo]aléatoires.
La bibliothèque random
, bien qu'elle soit intégrée, est toujours une bibliothèque séparée, donc avant de l'utiliser, il faut l'importer dans notre code.
Cela se fait à l'aide du mot-clé
import
. Exemple :
import random
La bibliothèque random a beaucoup de méthodes intéressantes, mais aujourd'hui nous
allons nous familiariser avec seulement deux d'entre elles : méthode random()
et
méthode randint()
. Elles effectuent des tâches similaires, mais différentes :
Méthode random.random()
:
Cette méthode renvoie un nombre à virgule flottante aléatoire entre 0.0 et 1.0. Les nombres sont générés uniformément dans cet intervalle. Cela signifie que chaque nombre à l'intérieur de l'intervalle a la même probabilité d'être choisi.
import random
probability = random.random()
print("Probabilité aléatoire :", probability)
Méthode random.randint(a, b) :
Cette fonction renvoie un entier aléatoire dans l'intervalle de
a
à b
inclusivement. Contrairement à
random.random()
, qui renvoie un nombre à virgule flottante dans l'intervalle de 0 à 1, randint()
est utilisé lorsque tu veux choisir un entier. Par exemple,
random.randint(1, 10)
peut renvoyer n'importe quel entier de
1
à 10
, y compris les deux valeurs limites.
import random
dice_roll = random.randint(1, 6) # Simulation du lancer de dé
print("Le nombre tiré est :", dice_roll)
Ce sont des méthodes très utiles et intéressantes, alors profite-en bien.
3.4 Bibliothèque math
Eh bien, tant qu'on y est, laisse-moi te présenter une autre bibliothèque intéressante.
C'est la bibliothèque math
. Elle contient les fonctions
mathématiques de base et les constantes, telles que les nombres π et e.
Et tout comme la bibliothèque random
, il faut l'importer
avant de l'utiliser :
import math
Voici un tableau avec les fonctions et constantes principales de la bibliothèque
math
en Python :
Fonction/Constante | Description |
---|---|
math.pi | Constante π, approximativement égale à 3.14159 |
math.e | Base du logarithme naturel, approximativement égale à 2.71828 |
math.sqrt(x) | Renvoie la racine carrée de x |
math.exp(x) | Renvoie e à la puissance x |
math.log(x[, base]) | Renvoie le logarithme de x pour une base donnée, si base est précisée; sinon, renvoie le logarithme naturel. |
math.cos(x) | Renvoie le cosinus de x, où x est spécifié en radians |
math.sin(x) | Renvoie le sinus de x, où x est spécifié en radians |
math.tan(x) | Renvoie la tangente de x, où x est spécifié en radians |
math.ceil(x) | Arrondit le nombre vers le haut à l'entier le plus proche |
math.floor(x) | Arrondit le nombre vers le bas à l'entier le plus proche |
math.factorial(x) | Renvoie la factorielle de x |
Même si tu n'aimes pas beaucoup les maths et que tu ne comptes pas utiliser ces fonctions dans les 10 prochaines années, au moins trois d'entre elles sont très utiles :
sqrt()
— racine carrée d'un nombreceil()
— arrondi vers le haut à l'entier le plus prochefloor()
— arrondi vers le bas à l'entier le plus proche
Exemples :
import math
number = 9.7
rounded_up = math.ceil(number) # Arrondit vers le haut, résultat 10
rounded_down = math.floor(number) # Arrondit vers le bas, résultat 9
print("Nombre arrondi vers le haut :", rounded_up)
print("Nombre arrondi vers le bas :", rounded_down)
GO TO FULL VERSION