calculer en python
Les types de base: numériques, string, booléens
En python, les objets natifs de base ont pour type:
- nombre entier: integer ou
inten Python - nombre réel décimal:
float - chaine de caractères:
str - les valeurs logiques: booléen
bool
Lorsque l’on présente une valeur dans le programme, le langage s’adapte selon le type, comme on le verra plus loin.
Pour vérifier le type d’un objet, on utilise la fonction
type
Exemples
Pour changer le type, on utilise les fonctions
int, float, str. On utilise par exempleintlorsque l’on veut transformer un float ou un str en un entier:
Les nombres entiers et décimaux
Entier
Un entier: type int (ou integer). C’est un nombre qui n’a pas de point décimal. Les algorithmes utilisent en général des entiers, ce qui est avantageux pour les opérations de comparaison comme == ou !=.
valeurs possibles: 1, 2492042932330932, -23,...
Certaines opérations retournent un résultat de type entier:
expressions possibles: 13+3928, 34*2+10//3, 12%5, 2**8, ...
Un entier peut avoir une valeur aussi grande que celle que la machine peut stocker. Pour un nombre entier non signé, stocké sur 32 bits, cette valeur maximale vaut $2^{32}-1$
un nombre entier négatif: type int s’écrit avec un $-$ devant: $-10$ par exemple. Les entiers signés, codés sur 32 bits ont des valeurs qui s’étendent entre $[-2^{31},2^{31}-1]$
Décimal
un nombre décimal: type float s’écrit avec un point comme séparateur, comme par exemple: 6.02
valeurs possibles: 1.0, 249204.2932330932, -23.47,...
Les nombres exprimés avec l’opérateur e (puissance de 10), sont aussi des float, des décimaux:
La division de 2 nombres avec l’opérateur $/$ retourne toujours un type float, même avec des entiers:
Les float en Python ont une précision limitée. Ils sont généralement codés sur 15 chiffres significatifs et encodés sur 53 bits. Cela génère des imprecisions comme par exemple:
Chaine de caractère
C’est une séquence constituée d’un ou plusieurs caractères, entourés de guillemets simples ou doubles.
Notez que des chiffres mis entre guillemets sont des chaines de caractères et ne peuvent pas être manipulés comme des nombres (voir plus loin).
Exemples
caractères spéciaux
Certains caractères spéciaux ne sont pas affichés, mais permettent la mise en forme:
- Par exemple, le caractère
\ngénère un retour à la ligne:
addition de chaines
L’addition de chaines* (concaténation) se fait avec l’opérateur +
- L’opérateur
*permet des répétitions multiples:
- Ou bien avec des accolades
{}dans une expression formatée. Exemples:
L’exemple 2 illustre une chaine particulière appelée f-string. C’est une chaine:
- préfixée par un
f - suivie par une chaine entre guillemets
""ou'' - contenant des accolades
{} - où tout texte placé entre accolades sera remplacé par la valeur de la variable correspondante.
Test d’appartenance
L’opérateur in permet de tester si une suite de caractères se trouve dans un chaine:
"ou" in "jour"vautTrue"ou" not in "jour"vautFalse
Ordre lexicographique
On peut comparer les caractères ou les mots à partir de leur rang dans l’alphabet:
Les valeurs logiques
Ce sont les valeurs True et False.
opérations avec not, and et or
On peut les combiner dans des formules logiques avec les opérateurs not, and, or:
opérateurs de comparaison
Une opération de comparaison, utilisant les signes ==, !=, >, >=, <, <= retourne un booléen True ou False:
Expressions possibles: 0 == 0, 8+1 == 2 * 3, 13 >= 1, 'A'<'B', 'a'>'c', 'Sol' in 'Soleil', ...
Utiliser les opérations booléennes dans un programme
Le booléen permet un branchement dans un algorithme (voir les structures conditionnelles). Exemples:
On peut souhaiter executer infiniment le même bloc d’instructions, avec l’instruction `while:
Changer de type avec la fonction bool
Lors de la transformation de type avec bool ou int, le True correspond à un 1 et le False à un 0:
Les opérations de base
1. Un langage informatique permet de réaliser des opérations sur des valeurs. L’écriture de ces opérations peut différer de ce que l’on écrit avec la calculatrice. Voici la liste des opérateurs en Python:
| opérateur | rôle | équivalent sur une calculatrice |
|---|---|---|
| + | addition | $1 + 99$ |
| - | soustraction | $99 - 1$ |
| * | multiplication | $10 \times 10$ |
| / | division | $\tfrac{1}{3}$ |
| // | division entière | pas d’équivalent |
| % | reste de la division | pas d’équivalent |
| ** | exposant | $2^{4}$ |
| e | puissance de 10 (pour l’écriture en notation scientifique) | $1.2E-3$ ou $1.2\times 10^{-3}$ |
2. Ces opérateurs peuvent aussi être appliqués sur des chaines de caractères.
| opérateur | rôle | exemple |
|---|---|---|
| + | concaténation (ajoute les chaines de caractères) | "Aïe" + "Aïe" + "Aïe" |
| * | multiplication (ajoute plusieurs fois la même chaine, bout à bout | "Aïe" * 3 |
3. Un nombre ne peut pas être ajouté à une chaine de caractères:
4. Opérations logiques
Une opération logique consiste à comparer 2 valeurs et tester si celles-ci sont égales, ou s’il y a une relation d’ordre entre elles. Le résultat d’une opération logique ne peut être que True ou False:
| opérateur | pour tester… |
|---|---|
== |
l’égalité |
!= |
l’inégalité (est différent de) ! |
| > | l’ordre supérieur |
| < | l’ordre inférieur |
| >= | l’ordre supérieur ou égal |
| <= | l’ordre inférieur ou égal |
ainsi, pour tester l’égalité entre 3 et 1+2, on peut écrire en python:
Remarque: Le test de l’égalité n’est pas adapté pour les nombres réels. Seulement pour les nombres entiers. Ainsi, en Python, l’opération 0.1*3 == 0.3 renvoie … False!
Calcul sur des valeur entières
Les programmes informatiques préfèrent utiliser des valeurs entières pour les calculs, même si les calculs avec nombres à virgules sont possibles. Pour cette raison, les opérateurs // et % sont souvent utilisés en combinaison.
- Rappel: La division euclidienne de
aparbest définie comme ceci: le dividende deaest égal au quotient dea//bmultiplié par le diviseurb, augmenté du restea%b:
- Usages classiques:
n%2vaut 0 sinest pairn%2vaut 1 sinest impairn%10conserve les unitésn//10conserve les dizaines et supprime les unités.