Éducation nationale françaiseMathématiquesSeconde générale et technologique15 min de lecture

Utiliser les variables et les instructions élémentaires

Une version article du chapitre pour comprendre l'essentiel rapidement, vérifier si le niveau correspond, puis basculer vers Wilo pour la pratique guidée et le suivi.

Lecture

5 chapitres

Un parcours éditorialisé et navigable.

Pratique

12 questions

Quiz et cartes mémoire à ouvrir après la lecture.

Objectif

Seconde générale et technologique

Format rapide pour vérifier si le chapitre correspond.

Chapitre 1

Introduction à la Programmation et aux Variables

Qu'est-ce que la programmation ?

La programmation consiste à donner des instructions précises à un ordinateur pour qu'il réalise une tâche. Imagine que tu donnes une recette de cuisine très détaillée à quelqu'un : chaque étape doit être claire et sans ambiguïté. C'est pareil avec un ordinateur !

Un programme est une suite d'instructions écrites dans un langage de programmation, par exemple Python. L'ordinateur exécute ces instructions dans l'ordre pour atteindre un objectif.

Avant d'écrire un programme, on commence souvent par un algorithme. Un algorithme est une description étape par étape de la solution à un problème, sans se soucier du langage de programmation. C'est un peu comme le plan d'une maison avant de commencer à la construire. Le code est ensuite la traduction de cet algorithme dans un langage de programmation spécifique (ici, Python).

Le concept de variable

En programmation, une variable est un conteneur qui permet de stocker des informations (des données). Tu peux l'imaginer comme une boîte à laquelle tu donnes un nom. Cette boîte peut contenir différentes choses, et son contenu peut changer au cours du programme.

Le rôle principal d'une variable est de stocker des données dans la mémoire de l'ordinateur. Quand tu utilises une variable, l'ordinateur va chercher ou modifier la valeur qu'elle contient à un endroit précis de sa mémoire.

Pour nommer une variable, il y a quelques règles importantes à respecter en Python :

  • Un nom de variable doit commencer par une lettre (minuscule de préférence) ou un underscore (_).
  • Il ne peut contenir que des lettres, des chiffres et des underscores.
  • Il ne doit pas contenir d'espaces ni de caractères spéciaux (comme é, &, $).
  • Il ne doit pas être un mot réservé par Python (comme print, if, for).
  • Les noms doivent être explicites : age_utilisateur est mieux que a pour stocker l'âge d'un utilisateur.

Exemples de noms valides : mon_age, nombre1, _total. Exemples de noms invalides : 1nombre, mon age, class.

Déclaration et affectation de variables

En Python, tu n'as pas besoin de "déclarer" une variable avant de l'utiliser comme dans d'autres langages. La première fois que tu donnes une valeur à une variable, elle est automatiquement créée. C'est ce qu'on appelle l'affectation.

L'opérateur d'affectation est le signe égal (=).

# C'est la première affectation, la variable 'age' est créée et initialisée à 16
age = 16

Ici, la variable age est initialisée avec la valeur 16. L'ordinateur réserve un espace en mémoire, le nomme age et y place la valeur 16.

Tu peux ensuite mettre à jour la valeur d'une variable à tout moment :

age = 16       # Initialisation
print(age)     # Affiche 16

age = 17       # Mise à jour : la valeur 16 est remplacée par 17
print(age)     # Affiche 17

age = age + 1  # On utilise l'ancienne valeur pour calculer la nouvelle (17 + 1 = 18)
print(age)     # Affiche 18

Une variable ne peut contenir qu'une seule valeur à la fois. Chaque nouvelle affectation écrase l'ancienne valeur.

Chapitre 2

Types de Données Fondamentaux

Les nombres entiers (int)

Les nombres entiers (type int pour integer) sont des nombres sans partie décimale, qu'ils soient positifs, négatifs ou zéro.

Exemples : 5, -10, 0, 1000.

Tu peux effectuer des opérations arithmétiques de base avec les entiers :

  • Addition : +
  • Soustraction : -
  • Multiplication : *
  • Division : / (attention, le résultat est toujours un nombre décimal, même si la division "tombe juste")
a = 10
b = 3
somme = a + b      # 13
difference = a - b # 7
produit = a * b    # 30
division = a / b   # 3.3333... (un float !)

La priorité des opérations est la même qu'en mathématiques : la multiplication et la division sont effectuées avant l'addition et la soustraction. Les parenthèses () peuvent être utilisées pour modifier cette priorité.

resultat1 = 2 + 3 * 4   # 3 * 4 = 12, puis 2 + 12 = 14
resultat2 = (2 + 3) * 4 # 2 + 3 = 5, puis 5 * 4 = 20

Les nombres décimaux (float)

Les nombres décimaux (type float pour floating-point number) sont des nombres qui ont une partie fractionnaire, c'est-à-dire avec une virgule (en Python, on utilise un point . pour la partie décimale).

Exemples : 3.14, -0.5, 10.0 (même si c'est un entier, 10.0 est considéré comme un float).

La représentation des décimaux en informatique peut parfois être source de petites imprécisions. Par exemple, 0.1 + 0.2 ne donne pas exactement 0.3 mais un nombre très proche comme 0.30000000000000004 à cause de la façon dont les ordinateurs stockent ces nombres. C'est important à savoir pour les calculs très précis.

prix_unitaire = 12.50
quantite = 3
total = prix_unitaire * quantite # 37.5

Les chaînes de caractères (str)

Une chaîne de caractères (type str pour string) est une séquence de caractères (lettres, chiffres, symboles, espaces). C'est le type utilisé pour le texte.

Exemples : "Bonjour", 'Python', "123", "Ceci est une phrase.".

Les chaînes de caractères doivent être délimitées par des guillemets simples (') ou doubles ("). L'important est d'utiliser la même paire.

message1 = "Salut le monde !"
message2 = 'J\'apprends Python.' # Utilisation de l'apostrophe à l'intérieur avec les guillemets simples

Tu peux joindre plusieurs chaînes de caractères ensemble (c'est ce qu'on appelle la concaténation) avec l'opérateur +.

prenom = "Alice"
nom = "Dupont"
nom_complet = prenom + " " + nom # "Alice Dupont"

Le type booléen (bool)

Le type booléen (type bool) est le plus simple. Il ne peut prendre que deux valeurs : True (Vrai) ou False (Faux). Ces valeurs sont très importantes pour prendre des décisions dans un programme.

est_majeur = True
a_permis = False

Les booléens sont très utilisés dans les conditions (nous les verrons plus tard) pour contrôler le flux d'exécution du programme.

Tu peux combiner des booléens avec des opérateurs logiques :

  • AND (et) : Le résultat est True si les deux conditions sont True.
  • OR (ou) : Le résultat est True si au moins une des conditions est True.
  • NOT (non) : Inverse la valeur booléenne (True devient False, et False devient True).
condition1 = True
condition2 = False

print(condition1 and condition2) # False
print(condition1 or condition2)  # True
print(not condition1)            # False

Chapitre 3

Instructions d'Entrée et de Sortie

Afficher des informations (print)

La fonction print() est l'instruction la plus courante pour afficher des informations à l'écran (dans la console).

Pour afficher du texte, tu le places entre guillemets :

print("Bonjour, bienvenue en Seconde !")

Tu peux aussi afficher la valeur d'une variable :

nom = "Python"
print(nom)  # Affiche Python

Pour afficher du texte et des variables ensemble, tu peux les séparer par des virgules (,) dans la fonction print(). Python ajoutera automatiquement un espace entre chaque élément.

age = 16
print("Tu as", age, "ans.") # Affiche : Tu as 16 ans.

temperature = 20.5
unite = "degrés Celsius"
print("Il fait", temperature, unite, "aujourd'hui.") # Affiche : Il fait 20.5 degrés Celsius aujourd'hui.

On peut aussi utiliser les f-strings (chaînes formatées) pour plus de flexibilité (plus avancé) : print(f"Tu as {age} ans.")

Saisir des informations (input)

La fonction input() permet de récupérer une saisie utilisateur depuis le clavier. Le programme s'arrête et attend que l'utilisateur tape quelque chose et appuie sur Entrée.

prenom = input("Quel est ton prénom ? ")
print("Bonjour", prenom)

Le texte que tu passes en argument à input() est affiché comme une question pour l'utilisateur.

CRITIQUE : La fonction input() renvoie toujours la saisie de l'utilisateur sous forme de chaîne de caractères (str), même si l'utilisateur entre un nombre. C'est une source fréquente d'erreurs si tu ne le sais pas !

annee_naissance = input("En quelle année es-tu né(e) ? ")
# Si l'utilisateur tape "2007", annee_naissance sera la chaîne de caractères "2007"
type_variable = type(annee_naissance)
print(type_variable) # Affiche <class 'str'>

Conversion de types

Étant donné que input() renvoie toujours une chaîne de caractères, il y a souvent une nécessité de conversion si tu veux effectuer des opérations mathématiques avec la valeur saisie par l'utilisateur.

Python propose des fonctions pour convertir les types :

  • int(valeur) : Convertit valeur en entier.
  • float(valeur) : Convertit valeur en nombre décimal.
  • str(valeur) : Convertit valeur en chaîne de caractères.
annee_naissance_str = input("En quelle année es-tu né(e) ? ") # Saisie: "2007" (str)
annee_naissance_int = int(annee_naissance_str)               # Conversion: 2007 (int)

age = 2024 - annee_naissance_int
print("Tu as environ", age, "ans.")

Attention aux erreurs de conversion ! Si tu essaies de convertir une chaîne de caractères qui ne représente pas un nombre valide en int ou float, Python générera une erreur (ValueError).

# exemple_erreur = int("Bonjour") # Ceci provoquerait une erreur !

Chapitre 4

Opérateurs et Expressions

Opérateurs arithmétiques

Nous avons déjà vu les opérateurs de base. En voici d'autres, très utiles :

OpérateurDescriptionExempleRésultat
+Addition5 + 27
-Soustraction5 - 23
*Multiplication5 * 210
/Division (flottante)5 / 22.5
//Division entière5 // 22
%Modulo (reste)5 % 21
**Puissance5 ** 225
  • La division entière (//) donne le quotient de la division euclidienne (le nombre de fois que le diviseur "rentre" dans le dividende, sans la partie décimale).
  • Le modulo (%) donne le reste de la division euclidienne. C'est très utile pour savoir si un nombre est pair (reste 0 lorsqu'il est divisé par 2) ou pour des calculs cycliques.
  • La puissance (**) permet de calculer un nombre élevé à une certaine puissance.
print(17 // 5) # Affiche 3 (17 = 3 * 5 + 2)
print(17 % 5)  # Affiche 2 (le reste de la division)
print(2 ** 3)  # Affiche 8 (2 * 2 * 2)

Opérateurs de comparaison

Les opérateurs de comparaison sont utilisés pour comparer deux valeurs. Ils renvoient toujours un résultat de type booléen (True ou False).

OpérateurDescriptionExempleRésultat
<mark>Égalité5 </mark> 5True
!=Inégalité (différent)5 != 5False
>Supérieur à5 > 2True
<Inférieur à5 < 2False
>=Supérieur ou égal à5 >= 5True
<=Inférieur ou égal à5 <= 2False

==Attention à ne pas confondre l'opérateur d'affectation (=) et l'opérateur d'égalité (<mark>). C'est une erreur très courante chez les débutants.

Expressions et ordre d'évaluation

Une expression est une combinaison de variables, de valeurs et d'opérateurs qui peut être évaluée pour produire un résultat.

Exemples d'expressions :

  • age + 5
  • prix_ht * 1.20
  • "Bonjour" + nom
  • x > 10 and y < 20

L'ordre d'évaluation des opérateurs suit des règles de priorité similaires aux mathématiques :

  1. Parenthèses () (le plus prioritaire)
  2. Puissance **
  3. Multiplication *, Division /, Division entière //, Modulo % (de gauche à droite)
  4. Addition +, Soustraction - (de gauche à droite)
  5. Opérateurs de comparaison ==, !=, >, <, >=, <=
  6. Opérateurs logiques not, and, or (le moins prioritaire)
resultat = 5 + 3 * 2 ** 2 - (10 / 5)
# 1. 2 ** 2 = 4
# 2. 3 * 4 = 12
# 3. 10 / 5 = 2.0 (float)
# 4. 5 + 12 = 17
# 5. 17 - 2.0 = 15.0
print(resultat) # Affiche 15.0

Il est toujours préférable d'utiliser des parenthèses () pour rendre l'expression plus lisible et éviter les ambiguïtés, même si l'ordre de priorité par défaut est correct.

Chapitre 5

Premiers Algorithmes et Programmes Simples

Écrire un algorithme simple

Avant de coder, prends toujours le temps de définir les étapes de ton programme. C'est la phase d'algorithmique.

Exemple : Calculer l'aire d'un rectangle.

Algorithme :

  1. Entrée : Demander à l'utilisateur la longueur du rectangle.
  2. Entrée : Demander à l'utilisateur la largeur du rectangle.
  3. Traitement : Calculer l'aire en multipliant la longueur par la largeur.
  4. Sortie : Afficher le résultat de l'aire.

Cet algorithme utilise des variables pour stocker la longueur, la largeur et l'aire. Il suit le schéma classique Entrée, Traitement, Sortie (ETS).

Traduire un algorithme en Python

La traduction consiste à utiliser les instructions vues (variables, input(), print(), opérateurs) et à respecter la syntaxe de Python.

Pour l'exemple du rectangle :

# 1. Entrée : Demander la longueur
longueur_str = input("Entrez la longueur du rectangle : ")
longueur = float(longueur_str) # Conversion en float car la longueur peut être décimale

# 2. Entrée : Demander la largeur
largeur_str = input("Entrez la largeur du rectangle : ")
largeur = float(largeur_str) # Conversion en float

# 3. Traitement : Calculer l'aire
aire = longueur * largeur

# 4. Sortie : Afficher le résultat
print("L'aire du rectangle est :", aire)

Après avoir écrit ton programme, il est crucial de le tester. Exécute-le avec différentes valeurs pour vérifier qu'il fonctionne comme prévu.

Débogage élémentaire

Le débogage est le processus qui consiste à trouver et corriger les erreurs (les "bugs") dans ton code.

Il existe deux types principaux d'erreurs :

  1. Erreurs de syntaxe : Ce sont des fautes de "grammaire" du langage. Python ne comprend pas ce que tu as écrit et arrête l'exécution du programme. Par exemple, oublier une parenthèse ou un guillemet. Python affiche des messages d'erreur qui t'indiquent la ligne où l'erreur a eu lieu (SyntaxError).
  2. Erreurs logiques : Le programme s'exécute, mais il ne fait pas ce que tu attends. Par exemple, tu as utilisé l'addition au lieu de la multiplication. Python ne détecte pas ces erreurs, c'est à toi de les trouver en testant et en vérifiant les résultats.

Stratégies de correction :

  • Lis attentivement les messages d'erreur Python : Ils sont souvent très utiles pour localiser le problème. Cherche la ligne indiquée.
  • Vérifie ta syntaxe : Parentheses, guillemets, noms de variables corrects.
  • Imprime les valeurs des variables : Insère des print() temporaires dans ton code pour voir ce que contiennent tes variables à différents moments. Cela t'aide à comprendre où la logique déraille.
  • Exécute ton code pas à pas (avec un débogueur si disponible) : C'est plus avancé, mais très puissant pour suivre l'exécution ligne par ligne.
  • Simplifie le problème : Si ton programme est complexe, essaie de le réduire à la partie qui pose problème et de déboguer cette petite partie.

Le débogage fait partie intégrante de la programmation. Ne te décourage pas, c'est en faisant des erreurs qu'on apprend le mieux !

Après la lecture

Passe à la pratique avec deux blocs bien visibles

Une fois le cours lu, ouvre soit le quiz pour vérifier la compréhension, soit les flashcards pour mémoriser les idées importantes. Les deux s'ouvrent dans une fenêtre dédiée.

Quiz + Flashcards

Suite naturelle

Tu veux aller plus loin que l'article ?

Retrouve le même chapitre dans Wilo avec la suite des questions, la répétition espacée, les corrigés complets et une progression suivie dans le temps.

Utiliser les variables et les instructions élémentaires — Mathématiques — Seconde générale et technologique — France | Wilo ).\n* Il ne doit pas être un mot réservé par Python (comme `print`, `if`, `for`).\n* Les noms doivent être ==explicites== : `age_utilisateur` est mieux que `a` pour stocker l'âge d'un utilisateur.\n\nExemples de noms valides : `mon_age`, `nombre1`, `_total`.\nExemples de noms invalides : `1nombre`, `mon age`, `class`."},{"title":"Déclaration et affectation de variables","content":"En Python, tu n'as pas besoin de \"déclarer\" une variable avant de l'utiliser comme dans d'autres langages. La première fois que tu donnes une valeur à une variable, elle est automatiquement créée. C'est ce qu'on appelle l'**affectation**.\n\nL'opérateur d'affectation est le signe égal (`=`).\n\n```python\n# C'est la première affectation, la variable 'age' est créée et initialisée à 16\nage = 16\n```\n\nIci, la variable `age` est **initialisée** avec la valeur `16`. L'ordinateur réserve un espace en mémoire, le nomme `age` et y place la valeur `16`.\n\nTu peux ensuite **mettre à jour la valeur** d'une variable à tout moment :\n\n```python\nage = 16 # Initialisation\nprint(age) # Affiche 16\n\nage = 17 # Mise à jour : la valeur 16 est remplacée par 17\nprint(age) # Affiche 17\n\nage = age + 1 # On utilise l'ancienne valeur pour calculer la nouvelle (17 + 1 = 18)\nprint(age) # Affiche 18\n```\n\n==Une variable ne peut contenir qu'une seule valeur à la fois.== Chaque nouvelle affectation écrase l'ancienne valeur."}]},{"title":"Types de Données Fondamentaux","subsections":[{"title":"Les nombres entiers (int)","content":"Les nombres **entiers** (type `int` pour *integer*) sont des nombres sans partie décimale, qu'ils soient positifs, négatifs ou zéro.\n\nExemples : `5`, `-10`, `0`, `1000`.\n\nTu peux effectuer des **opérations arithmétiques de base** avec les entiers :\n* Addition : `+`\n* Soustraction : `-`\n* Multiplication : `*`\n* Division : `/` (attention, le résultat est toujours un nombre décimal, même si la division \"tombe juste\")\n\n```python\na = 10\nb = 3\nsomme = a + b # 13\ndifference = a - b # 7\nproduit = a * b # 30\ndivision = a / b # 3.3333... (un float !)\n```\n\nLa **priorité des opérations** est la même qu'en mathématiques : la multiplication et la division sont effectuées avant l'addition et la soustraction. Les parenthèses `()` peuvent être utilisées pour modifier cette priorité.\n\n```python\nresultat1 = 2 + 3 * 4 # 3 * 4 = 12, puis 2 + 12 = 14\nresultat2 = (2 + 3) * 4 # 2 + 3 = 5, puis 5 * 4 = 20\n```"},{"title":"Les nombres décimaux (float)","content":"Les nombres **décimaux** (type `float` pour *floating-point number*) sont des nombres qui ont une partie fractionnaire, c'est-à-dire avec une virgule (en Python, on utilise un point `.` pour la partie décimale).\n\nExemples : `3.14`, `-0.5`, `10.0` (même si c'est un entier, `10.0` est considéré comme un float).\n\nLa **représentation des décimaux** en informatique peut parfois être source de petites imprécisions. Par exemple, `0.1 + 0.2` ne donne pas exactement `0.3` mais un nombre très proche comme `0.30000000000000004` à cause de la façon dont les ordinateurs stockent ces nombres. C'est important à savoir pour les calculs très précis.\n\n```python\nprix_unitaire = 12.50\nquantite = 3\ntotal = prix_unitaire * quantite # 37.5\n```"},{"title":"Les chaînes de caractères (str)","content":"Une **chaîne de caractères** (type `str` pour *string*) est une séquence de caractères (lettres, chiffres, symboles, espaces). C'est le type utilisé pour le texte.\n\nExemples : `\"Bonjour\"`, `'Python'`, `\"123\"`, `\"Ceci est une phrase.\"`.\n\nLes chaînes de caractères doivent être délimitées par des **guillemets** simples (`'`) ou doubles (`\"`). L'important est d'utiliser la même paire.\n\n```python\nmessage1 = \"Salut le monde !\"\nmessage2 = 'J\\'apprends Python.' # Utilisation de l'apostrophe à l'intérieur avec les guillemets simples\n```\n\nTu peux joindre plusieurs chaînes de caractères ensemble (c'est ce qu'on appelle la **concaténation**) avec l'opérateur `+`.\n\n```python\nprenom = \"Alice\"\nnom = \"Dupont\"\nnom_complet = prenom + \" \" + nom # \"Alice Dupont\"\n```"},{"title":"Le type booléen (bool)","content":"Le **type booléen** (type `bool`) est le plus simple. Il ne peut prendre que deux valeurs : **`True`** (Vrai) ou **`False`** (Faux). Ces valeurs sont très importantes pour prendre des décisions dans un programme.\n\n```python\nest_majeur = True\na_permis = False\n```\n\nLes booléens sont très utilisés dans les **conditions** (nous les verrons plus tard) pour contrôler le flux d'exécution du programme.\n\nTu peux combiner des booléens avec des **opérateurs logiques** :\n* `AND` (et) : Le résultat est `True` si *les deux* conditions sont `True`.\n* `OR` (ou) : Le résultat est `True` si *au moins une* des conditions est `True`.\n* `NOT` (non) : Inverse la valeur booléenne (`True` devient `False`, et `False` devient `True`).\n\n```python\ncondition1 = True\ncondition2 = False\n\nprint(condition1 and condition2) # False\nprint(condition1 or condition2) # True\nprint(not condition1) # False\n```"}]},{"title":"Instructions d'Entrée et de Sortie","subsections":[{"title":"Afficher des informations (print)","content":"La fonction `print()` est l'instruction la plus courante pour **afficher des informations** à l'écran (dans la console).\n\nPour **afficher du texte**, tu le places entre guillemets :\n\n```python\nprint(\"Bonjour, bienvenue en Seconde !\")\n```\n\nTu peux aussi **afficher la valeur d'une variable** :\n\n```python\nnom = \"Python\"\nprint(nom) # Affiche Python\n```\n\nPour **afficher du texte et des variables** ensemble, tu peux les séparer par des virgules (`,`) dans la fonction `print()`. Python ajoutera automatiquement un espace entre chaque élément.\n\n```python\nage = 16\nprint(\"Tu as\", age, \"ans.\") # Affiche : Tu as 16 ans.\n\ntemperature = 20.5\nunite = \"degrés Celsius\"\nprint(\"Il fait\", temperature, unite, \"aujourd'hui.\") # Affiche : Il fait 20.5 degrés Celsius aujourd'hui.\n```\nOn peut aussi utiliser les f-strings (chaînes formatées) pour plus de flexibilité (plus avancé) : `print(f\"Tu as {age} ans.\")`"},{"title":"Saisir des informations (input)","content":"La fonction `input()` permet de **récupérer une saisie utilisateur** depuis le clavier. Le programme s'arrête et attend que l'utilisateur tape quelque chose et appuie sur Entrée.\n\n```python\nprenom = input(\"Quel est ton prénom ? \")\nprint(\"Bonjour\", prenom)\n```\n\nLe texte que tu passes en argument à `input()` est affiché comme une question pour l'utilisateur.\n\nCRITIQUE : La fonction `input()` renvoie toujours la saisie de l'utilisateur sous forme de **chaîne de caractères** (`str`), même si l'utilisateur entre un nombre. C'est une source fréquente d'erreurs si tu ne le sais pas !\n\n```python\nannee_naissance = input(\"En quelle année es-tu né(e) ? \")\n# Si l'utilisateur tape \"2007\", annee_naissance sera la chaîne de caractères \"2007\"\ntype_variable = type(annee_naissance)\nprint(type_variable) # Affiche \u003cclass 'str'>\n```"},{"title":"Conversion de types","content":"Étant donné que `input()` renvoie toujours une chaîne de caractères, il y a souvent une **nécessité de conversion** si tu veux effectuer des opérations mathématiques avec la valeur saisie par l'utilisateur.\n\nPython propose des fonctions pour convertir les types :\n* `int(valeur)` : Convertit `valeur` en entier.\n* `float(valeur)` : Convertit `valeur` en nombre décimal.\n* `str(valeur)` : Convertit `valeur` en chaîne de caractères.\n\n```python\nannee_naissance_str = input(\"En quelle année es-tu né(e) ? \") # Saisie: \"2007\" (str)\nannee_naissance_int = int(annee_naissance_str) # Conversion: 2007 (int)\n\nage = 2024 - annee_naissance_int\nprint(\"Tu as environ\", age, \"ans.\")\n```\n\nAttention aux **erreurs de conversion** ! Si tu essaies de convertir une chaîne de caractères qui ne représente pas un nombre valide en `int` ou `float`, Python générera une erreur (`ValueError`).\n\n```python\n# exemple_erreur = int(\"Bonjour\") # Ceci provoquerait une erreur !\n```"}]},{"title":"Opérateurs et Expressions","subsections":[{"title":"Opérateurs arithmétiques","content":"Nous avons déjà vu les opérateurs de base. En voici d'autres, très utiles :\n\n| Opérateur | Description | Exemple | Résultat |\n| :-------- | :-------------------- | :----------- | :------- |\n| `+` | Addition | `5 + 2` | `7` |\n| `-` | Soustraction | `5 - 2` | `3` |\n| `*` | Multiplication | `5 * 2` | `10` |\n| `/` | Division (flottante) | `5 / 2` | `2.5` |\n| `//` | **Division entière** | `5 // 2` | `2` |\n| `%` | **Modulo (reste)** | `5 % 2` | `1` |\n| `**` | **Puissance** | `5 ** 2` | `25` |\n\n* La **division entière (`//`)** donne le quotient de la division euclidienne (le nombre de fois que le diviseur \"rentre\" dans le dividende, sans la partie décimale).\n* Le **modulo (`%`)** donne le reste de la division euclidienne. C'est très utile pour savoir si un nombre est pair (reste 0 lorsqu'il est divisé par 2) ou pour des calculs cycliques.\n* La **puissance (`**`)** permet de calculer un nombre élevé à une certaine puissance.\n\n```python\nprint(17 // 5) # Affiche 3 (17 = 3 * 5 + 2)\nprint(17 % 5) # Affiche 2 (le reste de la division)\nprint(2 ** 3) # Affiche 8 (2 * 2 * 2)\n```"},{"title":"Opérateurs de comparaison","content":"Les opérateurs de comparaison sont utilisés pour comparer deux valeurs. Ils renvoient toujours un résultat de type booléen (`True` ou `False`).\n\n| Opérateur | Description | Exemple | Résultat |\n| :-------- | :------------------------ | :----------- | :------- |\n| `==` | **Égalité** | `5 == 5` | `True` |\n| `!=` | **Inégalité (différent)** | `5 != 5` | `False` |\n| `>` | Supérieur à | `5 > 2` | `True` |\n| `\u003c` | Inférieur à | `5 \u003c 2` | `False` |\n| `>=` | Supérieur ou égal à | `5 >= 5` | `True` |\n| `\u003c=` | Inférieur ou égal à | `5 \u003c= 2` | `False` |\n\n==Attention à ne pas confondre l'opérateur d'affectation (`=`) et l'opérateur d'égalité (`==`).== C'est une erreur très courante chez les débutants."},{"title":"Expressions et ordre d'évaluation","content":"Une **expression** est une combinaison de variables, de valeurs et d'opérateurs qui peut être évaluée pour produire un résultat.\n\nExemples d'expressions :\n* `age + 5`\n* `prix_ht * 1.20`\n* `\"Bonjour\" + nom`\n* `x > 10 and y \u003c 20`\n\nL'**ordre d'évaluation** des opérateurs suit des règles de **priorité** similaires aux mathématiques :\n1. Parenthèses `()` (le plus prioritaire)\n2. Puissance `**`\n3. Multiplication `*`, Division `/`, Division entière `//`, Modulo `%` (de gauche à droite)\n4. Addition `+`, Soustraction `-` (de gauche à droite)\n5. Opérateurs de comparaison `==`, `!=`, `>`, `\u003c`, `>=`, `\u003c=`\n6. Opérateurs logiques `not`, `and`, `or` (le moins prioritaire)\n\n```python\nresultat = 5 + 3 * 2 ** 2 - (10 / 5)\n# 1. 2 ** 2 = 4\n# 2. 3 * 4 = 12\n# 3. 10 / 5 = 2.0 (float)\n# 4. 5 + 12 = 17\n# 5. 17 - 2.0 = 15.0\nprint(resultat) # Affiche 15.0\n```\n\nIl est toujours préférable d'utiliser des **parenthèses** `()` pour rendre l'expression plus lisible et éviter les ambiguïtés, même si l'ordre de priorité par défaut est correct."}]},{"title":"Premiers Algorithmes et Programmes Simples","subsections":[{"title":"Écrire un algorithme simple","content":"Avant de coder, prends toujours le temps de **définir les étapes** de ton programme. C'est la phase d'algorithmique.\n\nExemple : Calculer l'aire d'un rectangle.\n\n**Algorithme :**\n1. **Entrée :** Demander à l'utilisateur la longueur du rectangle.\n2. **Entrée :** Demander à l'utilisateur la largeur du rectangle.\n3. **Traitement :** Calculer l'aire en multipliant la longueur par la largeur.\n4. **Sortie :** Afficher le résultat de l'aire.\n\nCet algorithme utilise des **variables** pour stocker la longueur, la largeur et l'aire. Il suit le schéma classique **Entrée, Traitement, Sortie (ETS)**."},{"title":"Traduire un algorithme en Python","content":"La traduction consiste à utiliser les **instructions vues** (variables, `input()`, `print()`, opérateurs) et à **respecter la syntaxe** de Python.\n\nPour l'exemple du rectangle :\n\n```python\n# 1. Entrée : Demander la longueur\nlongueur_str = input(\"Entrez la longueur du rectangle : \")\nlongueur = float(longueur_str) # Conversion en float car la longueur peut être décimale\n\n# 2. Entrée : Demander la largeur\nlargeur_str = input(\"Entrez la largeur du rectangle : \")\nlargeur = float(largeur_str) # Conversion en float\n\n# 3. Traitement : Calculer l'aire\naire = longueur * largeur\n\n# 4. Sortie : Afficher le résultat\nprint(\"L'aire du rectangle est :\", aire)\n```\n\nAprès avoir écrit ton programme, il est crucial de le **tester**. Exécute-le avec différentes valeurs pour vérifier qu'il fonctionne comme prévu."},{"title":"Débogage élémentaire","content":"Le **débogage** est le processus qui consiste à trouver et corriger les erreurs (les \"bugs\") dans ton code.\n\nIl existe deux types principaux d'erreurs :\n1. **Erreurs de syntaxe** : Ce sont des fautes de \"grammaire\" du langage. Python ne comprend pas ce que tu as écrit et arrête l'exécution du programme. Par exemple, oublier une parenthèse ou un guillemet. Python affiche des **messages d'erreur** qui t'indiquent la ligne où l'erreur a eu lieu (`SyntaxError`).\n2. **Erreurs logiques** : Le programme s'exécute, mais il ne fait pas ce que tu attends. Par exemple, tu as utilisé l'addition au lieu de la multiplication. Python ne détecte pas ces erreurs, c'est à toi de les trouver en testant et en vérifiant les résultats.\n\n**Stratégies de correction :**\n* **Lis attentivement les messages d'erreur Python** : Ils sont souvent très utiles pour localiser le problème. Cherche la ligne indiquée.\n* **Vérifie ta syntaxe** : Parentheses, guillemets, noms de variables corrects.\n* **Imprime les valeurs des variables** : Insère des `print()` temporaires dans ton code pour voir ce que contiennent tes variables à différents moments. Cela t'aide à comprendre où la logique déraille.\n* **Exécute ton code pas à pas** (avec un débogueur si disponible) : C'est plus avancé, mais très puissant pour suivre l'exécution ligne par ligne.\n* **Simplifie le problème** : Si ton programme est complexe, essaie de le réduire à la partie qui pose problème et de déboguer cette petite partie.\n\nLe débogage fait partie intégrante de la programmation. Ne te décourage pas, c'est en faisant des erreurs qu'on apprend le mieux !"}]}]},"quiz":{"title":"Quiz sur les Variables et Instructions Élémentaires en Python","questions":[{"type":"mcq","question":"Qu'est-ce qu'un algorithme en programmation ?","options":["Un programme écrit en Python","Une description étape par étape de la solution à un problème","Le résultat final d'un calcul","Un type de variable"],"correctAnswer":"Une description étape par étape de la solution à un problème","explanation":"Un algorithme est une description abstraite et étape par étape de la solution à un problème, indépendamment du langage de programmation.","difficulty":"easy","points":1},{"type":"truefalse","question":"En Python, une variable peut contenir plusieurs valeurs différentes en même temps.","correctAnswer":"false","explanation":"Faux. Une variable ne peut contenir qu'une seule valeur à la fois. Chaque nouvelle affectation écrase l'ancienne valeur.","difficulty":"easy","points":1},{"type":"mcq","question":"Lequel de ces noms de variable est INVALIDE en Python ?","options":["mon_age","nombre1","1nombre","_total"],"correctAnswer":"1nombre","explanation":"Un nom de variable ne doit pas commencer par un chiffre en Python.","difficulty":"medium","points":1},{"type":"qroc","question":"Quel est l'opérateur d'affectation en Python ?","correctAnswer":"=","explanation":"L'opérateur d'affectation est le signe égal (=). Il permet de donner une valeur à une variable.","difficulty":"easy","points":1},{"type":"mcq","question":"Quel est le type de données d'un nombre décimal en Python ?","options":["int","str","float","bool"],"correctAnswer":"float","explanation":"Les nombres décimaux sont représentés par le type `float` en Python.","difficulty":"easy","points":1},{"type":"truefalse","question":"La fonction `input()` renvoie toujours une valeur de type entier (int).","correctAnswer":"false","explanation":"Faux. La fonction `input()` renvoie toujours la saisie de l'utilisateur sous forme de chaîne de caractères (str), même si l'utilisateur tape un nombre.","difficulty":"medium","points":1},{"type":"mcq","question":"Quel est le résultat de l'expression Python `17 // 5` ?","options":["3.4","3","2","17"],"correctAnswer":"3","explanation":"L'opérateur `//` effectue une division entière, renvoyant le quotient de la division euclidienne. 17 divisé par 5 donne 3 avec un reste de 2.","difficulty":"medium","points":1},{"type":"qroc","question":"Quel opérateur est utilisé pour vérifier l'égalité entre deux valeurs en Python ?","correctAnswer":"==","explanation":"L'opérateur `==` est utilisé pour comparer si deux valeurs sont égales. Ne pas confondre avec l'opérateur d'affectation `=`.","difficulty":"easy","points":1},{"type":"mcq","question":"Quelle est la sortie de ce code Python : `print(\"Tu as\", 16, \"ans.\")` ?","options":["Tu as, 16, ans.","Tu as 16 ans.","\"Tu as 16 ans.\"","Erreur de syntaxe"],"correctAnswer":"Tu as 16 ans.","explanation":"La fonction `print()` avec des arguments séparés par des virgules affiche les éléments en les concaténant avec un espace par défaut.","difficulty":"easy","points":1},{"type":"truefalse","question":"Une erreur logique empêche le programme de s'exécuter.","correctAnswer":"false","explanation":"Faux. Une erreur logique permet au programme de s'exécuter, mais il ne produit pas le résultat attendu. Une erreur de syntaxe, en revanche, empêche l'exécution.","difficulty":"medium","points":1},{"type":"mcq","question":"Quel est le résultat de l'expression `True and False` en Python ?","options":["True","False","Erreur","None"],"correctAnswer":"False","explanation":"L'opérateur logique `and` renvoie `True` seulement si les deux conditions sont `True`.","difficulty":"easy","points":1},{"type":"qroc","question":"Quelle fonction Python est utilisée pour convertir une valeur en nombre entier ?","correctAnswer":"int()","explanation":"La fonction `int()` est utilisée pour convertir une valeur en nombre entier.","difficulty":"medium","points":1}]},"flashcards":{"cards":[{"question":"Qu'est-ce que la programmation ?","answer":"La programmation consiste à donner des instructions précises à un ordinateur pour qu'il réalise une tâche."},{"question":"Définis le concept de variable en programmation.","answer":"Une variable est un conteneur nommé qui permet de stocker des informations (des données) dans la mémoire de l'ordinateur. Son contenu peut changer."},{"question":"Quel est l'opérateur d'affectation en Python et à quoi sert-il ?","answer":"L'opérateur d'affectation est le signe égal (`=`). Il sert à donner une valeur à une variable."},{"question":"Cite les trois types de données numériques fondamentaux en Python.","answer":"Les nombres entiers (`int`), les nombres décimaux (`float`) et les nombres complexes (non abordés ici, mais `complex`)."},{"question":"Comment délimite-t-on une chaîne de caractères (string) en Python ?","answer":"Une chaîne de caractères est délimitée par des guillemets simples (`'`) ou doubles (`\"`)."},{"question":"Quelles sont les deux valeurs possibles pour un type booléen (`bool`) ?","answer":"Les deux valeurs possibles sont `True` (Vrai) et `False` (Faux)."},{"question":"À quoi sert la fonction `print()` en Python ?","answer":"La fonction `print()` est utilisée pour afficher des informations (texte, valeurs de variables) à l'écran (dans la console)."},{"question":"Quel est le rôle de la fonction `input()` et quel type de données renvoie-t-elle toujours ?","answer":"La fonction `input()` permet de récupérer une saisie utilisateur depuis le clavier. Elle renvoie toujours une chaîne de caractères (`str`)."},{"question":"Donne un exemple d'utilisation de l'opérateur modulo (`%`).","answer":"L'opérateur modulo donne le reste d'une division euclidienne. Par exemple, `5 % 2` donne `1`."},{"question":"Quelle est la différence entre une erreur de syntaxe et une erreur logique ?","answer":"Une erreur de syntaxe est une faute de 'grammaire' qui empêche le programme de s'exécuter. Une erreur logique permet au programme de s'exécuter mais produit un résultat incorrect."}]},"exercises":{"title":"Exercices sur les Variables et Instructions Élémentaires","items":[{"type":"problem","problemStatement":"Écrivez un programme Python qui demande à l'utilisateur son nom et son âge, puis affiche un message de bienvenue personnalisé incluant ces informations.","solution":"```python\nnom = input(\"Quel est votre nom ? \")\nage_str = input(\"Quel est votre âge ? \")\n\n# Optionnel: convertir l'âge en int si on veut l'utiliser pour des calculs plus tard\nage = int(age_str)\n\nprint(\"Bonjour\", nom, \", vous avez\", age, \"ans.\")\n```","explanation":"Cet exercice utilise la fonction `input()` pour recueillir des informations de l'utilisateur et la fonction `print()` pour afficher un message personnalisé. La conversion de l'âge en `int` est une bonne pratique si l'on prévoit des opérations numériques avec cette variable.","difficulty":"easy","order":1},{"type":"application","problemStatement":"Créez un programme qui calcule le prix total d'un article après application d'une TVA de 20%. Le programme doit demander le prix hors taxe (HT) à l'utilisateur et afficher le prix toutes taxes comprises (TTC).","solution":"```python\nprix_ht_str = input(\"Entrez le prix hors taxe de l'article : \")\nprix_ht = float(prix_ht_str) # Conversion en float pour gérer les décimales\n\ntva = 0.20 # 20%\nprix_ttc = prix_ht * (1 + tva)\n\nprint(\"Le prix TTC de l'article est :\", round(prix_ttc, 2), \"euros.\")\n```","explanation":"Cet exercice combine la saisie utilisateur (`input()`), la conversion de type (`float()`), l'affectation de variables, et des opérations arithmétiques pour calculer le prix TTC. L'utilisation de `round(prix_ttc, 2)` permet d'afficher le prix avec deux décimales, ce qui est courant pour les montants monétaires.","difficulty":"medium","order":2},{"type":"practice","problemStatement":"Évaluez l'expression Python suivante et donnez le résultat : `resultat = 10 + 4 * 2 - 12 / 3`.","solution":"Le résultat est `15.0`.\n\nÉtapes de calcul :\n1. `4 * 2` = `8` (multiplication)\n2. `12 / 3` = `4.0` (division flottante)\n3. `10 + 8` = `18` (addition)\n4. `18 - 4.0` = `14.0` (soustraction)\n\nAh, erreur dans mon calcul initial, le résultat est 14.0. Corrigé ci-dessous.\n\n1. `4 * 2` = `8`\n2. `12 / 3` = `4.0`\n3. `10 + 8` = `18`\n4. `18 - 4.0` = `14.0`","explanation":"L'ordre des opérations est crucial : multiplication et division sont effectuées avant l'addition et la soustraction. La division `/` renvoie toujours un `float`, ce qui rend le résultat final un `float`.","difficulty":"medium","order":3},{"type":"problem","problemStatement":"Écrivez un programme qui demande à l'utilisateur un nombre entier, puis affiche si ce nombre est pair ou impair en utilisant l'opérateur modulo.","solution":"```python\nnombre_str = input(\"Entrez un nombre entier : \")\nnombre = int(nombre_str)\n\nreste = nombre % 2\n\n# Pour cet exercice, on peut juste afficher le reste, \n# mais pour être complet, on pourrait utiliser une condition (vue plus tard)\nprint(\"Le reste de la division par 2 est :\", reste)\nprint(\"Si le reste est 0, le nombre est pair. Sinon, il est impair.\")\n```","explanation":"Cet exercice utilise la fonction `input()` pour obtenir un entier, la conversion `int()` et l'opérateur modulo (`%`). Si le reste de la division par 2 est 0, le nombre est pair ; sinon, il est impair. C'est une application classique du modulo.","difficulty":"medium","order":4},{"type":"application","problemStatement":"Un programmeur a écrit le code suivant pour calculer la moyenne de trois notes. Il y a une erreur logique. Identifiez-la et corrigez le code.\n\n```python\nnote1 = input(\"Entrez la première note : \")\nnote2 = input(\"Entrez la deuxième note : \")\nnote3 = input(\"Entrez la troisième note : \")\n\nmoyenne = (note1 + note2 + note3) / 3\n\nprint(\"La moyenne est :\", moyenne)\n```","solution":"L'erreur logique est que les variables `note1`, `note2`, `note3` sont des chaînes de caractères (`str`) après l'utilisation de `input()`. L'opérateur `+` sur des chaînes effectue une concaténation, pas une addition numérique. Il faut convertir ces chaînes en nombres (par exemple `float`) avant de faire le calcul.\n\n```python\nnote1_str = input(\"Entrez la première note : \")\nnote1 = float(note1_str) # Conversion en float\n\nnote2_str = input(\"Entrez la deuxième note : \")\nnote2 = float(note2_str) # Conversion en float\n\nnote3_str = input(\"Entrez la troisième note : \")\nnote3 = float(note3_str) # Conversion en float\n\nmoyenne = (note1 + note2 + note3) / 3\n\nprint(\"La moyenne est :\", round(moyenne, 2))\n```","explanation":"Cette erreur est très fréquente chez les débutants. La fonction `input()` renvoie toujours une chaîne de caractères. Pour effectuer des opérations arithmétiques, il est impératif de convertir ces chaînes en types numériques (`int` ou `float`) à l'aide des fonctions `int()` ou `float()`.","difficulty":"hard","order":5}]},"image":{"alt":"Illustration d'un ordinateur avec des boîtes étiquetées représentant des variables, des flèches montrant des instructions, et un écran affichant des résultats.","prompt":"An educational illustration showing a computer screen displaying Python code. Around the computer, there are several labeled boxes representing 'variables' (e.g., 'age', 'name', 'price') with values inside. Arrows indicate 'instructions' flowing from the code to these boxes (affectation) and from the boxes to the screen (print). The overall scene should convey the concept of variables storing data and instructions manipulating them, in a clear and simple style suitable for high school students. No text overlay on the image itself."},"generatedAt":"2026-05-04T17:45:34.667Z","standardGrade":"high_1"}};