Aller au contenu
English

Les valeurs de base

  • Leçon 4
  • 35 min
  • Module 2 : Valeurs et flux de contrôle
Leçon 4 sur 18 · Python pour l'ingénierie de l'IA en pratiqueLes valeurs de base

Ce que vous saurez faire

Stockez les faits sur un billet de soutien dans des variables. Convertissez le texte en nombres pour faire des calculs. Les données des fichiers arrivent toujours sous forme de texte. Cette conversion est donc la première étape de chaque programme de ce cours.

Carnet JupyterFaites cette leçon dans un carnetColab · Kaggle · GitHub · en anglais

Le carnet (notebook) Jupyter contient tous les exemples, exercices et vérifications de cette leçon, avec les consignes. Il ne demande aucune installation ni aucun projet local : seulement Python. Lisez les explications ici et exécutez le code dans le carnet.

Le carnet est en anglais. Colab et Kaggle ouvrent votre propre copie. Il faut un compte Google ou Kaggle gratuit. Vous êtes bloqué ? Consultez le carnet de solution.

Avant de commencerCe qu’il faut savoir et avoir sous la mainEnviron 35 minutes

Ce que vous devez savoir

Ce qu’il vous faut sur votre ordinateur (seulement pour le parcours local; le carnet et les encadrés de cette page n’en ont pas besoin)

  • L’environnement .venv du projet, activé dans votre terminal (l’invite commence par (.venv)). Vous l’avez créé dans Isoler les dépendances : exercice guidé. S’il manque ou ne fonctionne plus, supprimez-le et recréez-le à partir du fichier de verrouillage. Suivez Recréer l’environnement à partir de zéro.
  • La vérification pratique à la fin crée ticket_values.py dans ~/projects/ticket-cleaner.
  • Les encadrés de cette leçon exécutent Python dans votre navigateur. La première fois que vous appuyez sur Run (exécuter), la page télécharge Python (environ 13 Mo). Vous pouvez aussi saisir le code dans un fichier .py et l’exécuter dans votre terminal. Le résultat est le même.

Testé avec Python 3.14 (terminal) et Pyodide 314.0 (navigateur). Le carnet a été testé dans Jupyter.

Voici un billet de soutien, tel qu’une personne le note :

Billet T-1042, priorité 2, ouvert depuis 3,5 heures, urgent : oui, attribué à : personne pour l’instant.

En Python, chaque fait est une valeur, et chaque valeur a un type. Le type détermine ce que vous pouvez faire avec la valeur. Vous pouvez additionner deux nombres, mais pas un nombre et un nom.

ticket_values.py
ticket_id = "T-1042"
priority = 2
hours_open = 3.5
is_urgent = True
assigned_to = None
Variable Valeur Type À quoi sert le type
ticket_id "T-1042" str (chaîne de caractères) Du texte. Il est toujours entre guillemets.
priority 2 int (entier) Des nombres entiers.
hours_open 3.5 float (nombre à virgule flottante) Des nombres avec une partie décimale.
is_urgent True bool (booléen) Seulement deux valeurs : True (vrai) ou False (faux).
assigned_to None NoneType « Aucune valeur ». Ici : pas encore attribué.

Une variable est un nom qui désigne une valeur. Le signe = ne signifie pas « est égal à ». Il signifie « ce nom désigne cette valeur ». Vous lisez priority = 2 comme « priority désigne 2 ».

Exécutez du Python dans votre navigateur

Voir le type de chaque valeur

Appuyez sur Run. Chaque ligne montre une valeur et son type. Remplacez ensuite priority = 2 par priority = "2" et exécutez le code à nouveau. Quel est le type maintenant?

Une variable désigne une seule valeur à la fois. Quand vous utilisez = à nouveau, le nom désigne la nouvelle valeur. Python exécute les lignes de haut en bas. Vous pouvez donc suivre la valeur étape par étape :

hours_open = 3.5
hours_open = hours_open + 2
hours_open = hours_open * 2
Après la ligne hours_open Pourquoi
1 3.5 La première valeur.
2 5.5 Python calcule d’abord le côté droit (3.5 + 2), puis associe le résultat au nom.
3 11.0 5.5 * 2. Le résultat d’un calcul avec un float est un float.

Un tableau comme celui-ci, avec une ligne par ligne de code, est un tableau d’état. Quand le code fait quelque chose d’inattendu, créez-en un. Il montre où votre idée et les étapes de Python diffèrent.

Python calcule avec les signes habituels : +, -, * (multiplier) et / (diviser). Trois autres sont utiles :

Code Résultat Signification
7 / 2 3.5 Division. Le résultat est toujours un float, même pour 6 / 2 (3.0).
7 // 2 3 Division entière : combien de fois 2 entre au complet dans 7.
7 % 2 1 Le reste après la division entière.
round(3.14159, 2) 3.14 Arrondir à 2 décimales.

Python stocke un float en binaire. Certains nombres décimaux ne sont donc pas exacts. 0.1 + 0.2 donne 0.30000000000000004. Pour les heures et les scores, cela n’a pas d’importance. Utilisez round() quand vous affichez le résultat. (Pour l’argent, il existe de meilleurs outils, dont ce cours n’a pas besoin.)

Une chaîne de caractères (str) est du texte entre guillemets. Les guillemets simples et doubles fonctionnent de la même façon : "open" (ouvert) et 'open' représentent la même chaîne. Les chaînes ont des méthodes : des actions que vous appelez avec un point après la valeur. Une méthode vous donne une nouvelle chaîne. Elle ne change pas l’originale.

raw_status = " Open "
status = raw_status.strip().lower() # "open"

strip() retire les espaces au début et à la fin, et lower() met toutes les lettres en minuscules. Les données saisies contiennent souvent des espaces en trop et un mélange de majuscules et de minuscules. Vous utilisez donc souvent ces deux méthodes. Le texte après # est un commentaire. Python l’ignore. C’est une note pour la personne qui lit le code.

Pour insérer des valeurs dans du texte, utilisez une chaîne formatée (f-string) : une chaîne avec f avant le guillemet. Python remplace chaque nom entre { } par sa valeur :

print(f"Ticket {ticket_id} has priority {priority}.")
Sortie
Ticket T-1042 has priority 2.

Une comparaison donne un bool : True ou False.

Code Résultat Signification
priority == 2 True Est égal à. Deux signes =. Un seul = associe un nom à une valeur.
priority != 2 False N’est pas égal à.
hours_open > 24 False Est supérieur à. Il y a aussi <, >= et <=.
priority == 1 or hours_open > 24 False True si au moins un côté est True.
is_urgent and assigned_to is None True True seulement si les deux côtés sont True.
not is_urgent False L’inverse.

None signifie « il n’y a aucune valeur ». C’est différent de 0 et de la chaîne vide "". Un billet avec la priorité 0 a une priorité. Un billet avec la priorité None n’en a pas. Pour vérifier cette absence, utilisez is None ou is not None.

Quand Python lit un fichier, chaque valeur arrive sous forme de chaîne, même les nombres. "2" est du texte qui ressemble à un nombre, et vous ne pouvez pas calculer avec. Convertissez-le d’abord :

Code Résultat Note
int("2") 2 Du texte en nombre entier.
float("3.5") 3.5 Du texte en nombre décimal.
str(2) "2" Un nombre en texte.
int("2.5") erreur int() accepte seulement du texte représentant un entier. Utilisez d’abord float().
int("three") erreur Le texte n’est pas un nombre. Vous apprendrez à gérer cela au module 5.

Exécutez du Python dans votre navigateur

Convertir, puis calculer

Appuyez d’abord sur Run et lisez l’erreur. Corrigez ensuite les deux lignes de conversion pour obtenir Priority 2: 20.5 hours left (priorité 2 : 20,5 heures restantes). L’encadré vérifie votre résultat.

Python accepte presque tous les noms. Les personnes qui lisent votre code ont besoin de plus que cela. Un bon nom indique ce que représente la valeur, sans que la personne ait à le déduire.

Au lieu de Écrivez Pourquoi
x, val, data2 hours_open Indique ce que représente la valeur.
h hours_open Indique l’unité. hours_open = 3.5 ne peut pas représenter des minutes.
flag is_urgent Un nom qui commence par is_ ou has_ se lit comme une question oui/non.
hoursOpen hours_open Le style Python utilise des minuscules avec _ entre les mots.

Les noms distinguent les majuscules et les minuscules : Priority et priority sont deux variables différentes. Un nom ne peut pas commencer par un chiffre ni contenir d’espaces ou de -.

Un billet est ouvert depuis "50" heures. La valeur est du texte, car elle vient d’un fichier. Écrivez du code qui affiche cette ligne :

T-1042 has been open for 2 days and 2 hours.

Utilisez // et %. Donnez à chaque variable un nom qui indique ce qu’elle représente et son unité.

Exécutez du Python dans votre navigateur

À vous de jouer : des heures aux jours

La vérification cherche une variable de type int dont le nom se termine par days (jours).

Afficher une réponse
ticket_id = "T-1042"
hours_text = "50"
total_hours = int(hours_text)
full_days = total_hours // 24
extra_hours = total_hours % 24
print(f"{ticket_id} has been open for {full_days} days and {extra_hours} hours.")

50 // 24 donne 2 (deux jours complets), et 50 % 24 donne 2 (les heures restantes).

Erreur courante

can only concatenate str (not « int ») to str — peut seulement joindre une chaîne, pas un entier, à une chaîne

Symptôme : une ligne qui joint du texte et un nombre arrête le programme :

print("Priority: " + priority)
TypeError: can only concatenate str (not "int") to str

Cause : + additionne deux nombres ou joint deux chaînes. Il ne peut pas joindre une chaîne à un nombre, car Python ne devine pas ce que vous voulez. L’erreur inverse arrive aussi : "2" + 2 quand une valeur provenant d’un fichier est encore du texte. Concaténer signifie « joindre du texte ».

Solution : décidez du type dont vous avez besoin.

  1. Pour afficher un nombre dans du texte, utilisez une chaîne formatée : print(f"Priority: {priority}").
  2. Pour calculer avec du texte qui contient un nombre, convertissez-le d’abord : int(priority_text) + 2.
  3. Si vous ne connaissez pas le type d’une valeur, affichez-le : print(type(priority)).

Vérifiez votre compréhension

Prédisez le résultat de chaque ligne avant de l'exécuter : print(7 / 7), print(7 // 2), print(« 7 » * 2).

Afficher la réponse

1.0, 3 et 77. La division avec / donne toujours un float. // donne la partie entière. * avec une chaîne répète le texte : "7" deux fois donne "77", pas 14. C’est une autre raison de convertir le texte des fichiers avant de calculer.

Vérifiez votre compréhension

Un fichier contient la valeur « False » dans sa colonne is_urgent. Que donne bool(« False »), et pourquoi est-ce un problème?

Afficher la réponse

Cela donne True. bool() appliqué à une chaîne donne False seulement pour la chaîne vide "". Toutes les autres chaînes, y compris "False" et "no" (non), donnent True. Pour lire du texte oui/non, comparez plutôt le texte : is_urgent = urgent_text.strip().lower() == "true".

Vérifiez votre compréhension

Vérification pratique : dans votre projet ticket-cleaner, créez ticket_values.py. Partez des valeurs textuelles « T-1042 », « 2 » et « 3.5 », puis convertissez-les. Affichez une ligne avec une chaîne formatée contenant l'identifiant du billet, la priorité et les heures restantes avant l'échéance de 24 heures.

Afficher la réponse

Une réponse :

ticket_values.py
ticket_id = "T-1042"
priority = int("2")
hours_open = float("3.5")
hours_left = 24 - hours_open
print(f"{ticket_id}: priority {priority}, {hours_left} hours left")

Exécutez-le avec python ticket_values.py dans l’environnement activé. Le résultat est T-1042: priority 2, 20.5 hours left (T-1042 : priorité 2, 20,5 heures restantes).

Récapitulatif

  • Chaque valeur a un type : str, int, float, bool ou NoneType. Le type détermine ce que vous pouvez faire avec.
  • Une variable est un nom qui désigne une valeur. = associe une nouvelle valeur au nom. Un tableau d’état montre la valeur après chaque ligne.
  • / donne toujours un float. // et % donnent la partie entière et le reste.
  • Vous devez convertir le texte des fichiers avec int() ou float() avant de calculer. Utilisez des chaînes formatées pour insérer des valeurs dans du texte.
  • None signifie « aucune valeur ». Vérifiez cette absence avec is None.

Ensuite, vous garderez plusieurs valeurs ensemble : une liste de billets et un enregistrement pour chaque billet.

Leçon suivante : Les collections