De la fiche au programme
Programme, algorithme, langage. Un algorithme est une suite d'étapes précises qui résout un problème. La fiche de Nadia, rendue précise :
- prendre le montant de la facture ;
- multiplier par le taux annuel (en %), puis diviser par 100 ;
- multiplier par le nombre de jours de retard, puis diviser par 365 ;
- ajouter l'indemnité forfaitaire de 40 €.
Un langage est une façon d'écrire ces étapes pour qu'un ordinateur les exécute ; un programme est l'algorithme écrit dans ce langage. Python exécute les lignes dans l'ordre, de haut en bas, exactement comme elles sont écrites : ni plus, ni moins.
montant = 1850 taux_annuel = 12.40 jours_retard = 12 indemnite = 40 penalites = montant * taux_annuel / 100 * jours_retard / 365 total_du = penalites + indemnite print(penalites) print(round(penalites, 2)) print(round(total_du, 2))
Affiche 7.5419178082191785, puis 7.54, puis 47.54.
Les variables. montant = 1850 pose l'étiquette montant sur la valeur 1850, comme une cellule de tableur à laquelle vous auriez donné un nom. Le signe = range une valeur ; il ne compare pas. Une variable peut changer : facture = facture + 40 calcule facture + 40, puis range le résultat dans facture. Les noms s'écrivent en minuscules, sans espace ni accent, avec _ entre les mots.
Les types de base.
| Type | Exemple | Ce que c'est |
|---|---|---|
int (de integer, entier) | 1850 | un nombre entier |
float (nombre « à virgule flottante ») | 12.40 | un nombre à virgule, écrit avec un point |
str (de string, chaîne de caractères) | "1850" | du texte, entre guillemets, même s'il ressemble à un nombre |
bool (booléen) | 1850 > 1000 | vrai ou faux : True ou False |
type(…) donne le type d'une valeur : print(type(1850), type(12.40), type("1850"), type(1850 > 1000)) affiche <class 'int'> <class 'float'> <class 'str'> <class 'bool'>.
Les opérateurs et les priorités. Ce sont ceux de vos formules de tableur, avec deux opérateurs en plus, très utiles pour les jours :
| Opérateur | Sens | Exemple | Résultat |
|---|---|---|---|
+ - * | addition, soustraction, multiplication | 2 * 3 | 6 |
/ | division (donne toujours un nombre à virgule) | 7 / 2 | 3.5 |
// | quotient de la division entière | 45 // 7 | 6 |
% | reste de la division entière | 45 % 7 | 3 |
** | puissance | 2 ** 3 | 8 |
45 jours, ce sont 45 // 7 = 6 semaines pleines et 45 % 7 = 3 jours. Comme dans un tableur, * et / passent avant + et - : 100 + 50 / 2 vaut 125.0, alors que (100 + 50) / 2 vaut 75.0. Les parenthèses comptent.
Les conversions. int("14") donne le nombre 14, float("12.40") donne 12.4, str(14) donne le texte "14". Et round(x, 2) arrondit x à 2 chiffres après la virgule : au centime.
Pourquoi 0.1 + 0.2 n'affiche pas 0.3. Essayez : print(0.1 + 0.2) affiche 0.30000000000000004. L'ordinateur range les nombres à virgule en binaire, et 0,1 ne s'y écrit pas exactement (comme 1/3 ne s'écrit pas exactement en décimal : 0,333…). L'écart est minuscule ; pour un montant, on arrondit au centime à l'affichage : round(0.1 + 0.2, 2) affiche 0.3. Une conséquence à connaître : round(2.675, 2) affiche 2.67, et non 2.68, car 2,675 est rangé comme 2,67499999… Pour un calcul d'aide comme celui de ce livre, c'est sans importance ; pour une comptabilité officielle, c'est votre logiciel comptable qui fait foi.