Retour à la page d'accueilSNT · Seconde · Changer de matière
Commencer gratuitement
Seconde · SNT
Programmation et robotique · Programmation textuelle

Programmation textuelle en Python

Au collège, tu as assemblé des blocs Scratch. Maintenant, tu écris les mêmes idées avec du texte : chaque ligne est un ordre précis, et l'ordinateur l'exécute exactement comme elle est écrite, sans deviner ce que tu voulais dire. Une seule virgule oubliée suffit à tout bloquer. Comment écrire un programme qui marche du premier coup ? On y revient à la fin de la page.

Variables, types de données et entrées-sorties

Variable comme une boîte avec étiquette : trois lignes de code créent la boîte points avec un 0, ajoutent 1 puis affichent sa valeur à l'écran. Code 1 points = 0 2 points = points + 1 3 print(points) Variable (boîte) points 0 → 1 range 0 lit, ajoute 1, range 1 Écran

Ce n'est pas une erreur d'écrire points = points + 1 : en informatique, le signe = ne veut pas dire « égal » comme en mathématiques, il veut dire « range dans ». Python calcule d'abord le membre de droite, puis range le résultat dans la variable de gauche.

Dans un programme de magasin, un entier compte des articles, un décimal stocke un prix, un texte garde le nom du client, un booléen note si la carte de fidélité est valide.

Entraîne-toi★☆☆Pas commencé
Expliquer ce qu'est une variable avec la comparaison d'une boîte avec une étiquette et décrire ce que fait chaque ligne : puntos = 0, puntos = puntos + 1, print(puntos).…

Expliquer ce qu'est une variable avec la comparaison d'une boîte avec une étiquette et décrire ce que fait chaque ligne : puntos = 0, puntos = puntos + 1, print(puntos). Quelle valeur apparaît à l'écran et pourquoi n'est-ce pas une erreur d'ajouter quelque chose à une variable qui « avait déjà » une valeur ?

Résoudre
Entraîne-toi★☆☆Pas commencé
Classer ces valeurs selon leur type de donnée (entier, décimal, texte ou booléen) et donner un exemple d'utilisation pour chaque type dans un programme de magasin : 13,…

Classer ces valeurs selon leur type de donnée (entier, décimal, texte ou booléen) et donner un exemple d'utilisation pour chaque type dans un programme de magasin : 13, 3.75, "Ana", True.

Résoudre
Entraîne-toi★☆☆Pas commencé
Expliquer ce que font les instructions input() et print() en Python, quelle différence il y a entre elles et écrire un programme de deux lignes qui demande votre prénom…

Expliquer ce que font les instructions input() et print() en Python, quelle différence il y a entre elles et écrire un programme de deux lignes qui demande votre prénom et vous salue en l'utilisant.

Résoudre
Entraîne-toi★★☆Pas commencé
Prévoir la sortie de ce programme sans l'exécuter, en suivant la valeur des variables ligne par ligne : a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Écrire la…

Prévoir la sortie de ce programme sans l'exécuter, en suivant la valeur des variables ligne par ligne : a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Écrire la trace complète (la valeur de chaque variable après chaque ligne) et pas seulement le résultat.

Résoudre
Entraîne-toi★★☆Pas commencé
Écrire un programme de trois lignes qui demande le prénom et l'âge d'une personne et affiche une phrase complète les utilisant (par exemple, « Mei a 14 ans »). Expliquer…

Écrire un programme de trois lignes qui demande le prénom et l'âge d'une personne et affiche une phrase complète les utilisant (par exemple, « Mei a 14 ans »). Expliquer quel type de donnée input() renvoie toujours et à quoi sert int() lorsqu'on demande l'âge.

Résoudre

Instructions conditionnelles : `if`, `elif`, `else`

Code Python avec une instruction conditionnelle if/else : si age est supérieur ou égal à 12, on affiche « Tu peux », sinon « Pas encore ». Les lignes de chaque bloc sont indentées. age = int(input("Age : ")) if age >= 12: print("Tu peux") else: print("Pas encore") ← condition si elle est vraie ← sinon si elle est fausse sans indentation

Les deux-points : à la fin des lignes if et else annoncent qu'un bloc indenté va suivre. Pour comparer, on utilise == (égal), != (différent), <, >, <=, >=.

Entraîne-toi★☆☆Pas commencé
La figure montre un algorigramme et, à côté, le programme qui fait la même chose, mais avec la condition masquée. Écrire la condition manquante dans la ligne du if (elle…

La figure montre un algorigramme et, à côté, le programme qui fait la même chose, mais avec la condition masquée.

début demander l'âge âge ≥ 12? oui vous pouvez participer non presque ! edad = int(input("Edad: ")) if ?: print("Puedes") else: print("Aún no")

Écrire la condition manquante dans la ligne du if (elle doit comparer la variable edad à $12$), expliquer ce que fait int(input("Edad: ")) et pourquoi les lignes à l'intérieur du if et du else sont décalées vers la droite (indentées).

Résoudre
Entraîne-toi★☆☆Pas commencé
Expliquer ce qu'est une instruction conditionnelle avec un exemple de la vie quotidienne (s'il pleut, je prends le parapluie ; sinon, les lunettes de soleil) et l'écrire…

Expliquer ce qu'est une instruction conditionnelle avec un exemple de la vie quotidienne (s'il pleut, je prends le parapluie ; sinon, les lunettes de soleil) et l'écrire en trois lignes de pseudo-code : la condition, ce qui se passe si elle est remplie et ce qui se passe sinon.

Résoudre
Entraîne-toi★☆☆Pas commencé
Ce programme contient trois erreurs typiques : nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Trouver chaque erreur (un guillemet non fermé, un = qui…

Ce programme contient trois erreurs typiques : nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Trouver chaque erreur (un guillemet non fermé, un = qui devrait être == en expliquant la différence), réécrire le programme corrigé et indiquer quel message d'erreur donnerait l'ordinateur dans chaque cas.

Résoudre
Entraîne-toi★★☆Pas commencé
Écrire un programme qui demande un nombre et indique s'il est positif, négatif ou nul. Indiquer quelle structure vous utilisez (une instruction conditionnelle à deux…

Écrire un programme qui demande un nombre et indique s'il est positif, négatif ou nul. Indiquer quelle structure vous utilisez (une instruction conditionnelle à deux branches ou à trois), quelles comparaisons vous faites et le tester mentalement avec les valeurs $7$, $-3$ et $0$.

Résoudre
Entraîne-toi★★☆Pas commencé
Un programme convertit la note chiffrée en appréciation : moins de $5$ : « insuffisant », de $5$ à $6{,}9$ : « passable » et à partir de $7$ : « bien ». L'écrire avec…

Un programme convertit la note chiffrée en appréciation : moins de $5$ : « insuffisant », de $5$ à $6{,}9$ : « passable » et à partir de $7$ : « bien ». L'écrire avec if, elif et else, expliquer pourquoi l'ordre des conditions est important et ce qui se passerait si la première condition était nota > 5.

Résoudre

Boucles : `for` et `while`

Comparaison d'une boucle for et d'une boucle while : à gauche, for i in range(1, 11) affiche 3 × i pour dix tours ; à droite, while n supérieur à 0 affiche n puis le diminue de 1 jusqu'à ce que la condition devienne fausse. for : nombre de tours fixé for i in range(1, 11): print(3 * i) 10 tours, 10 lignes affichées while : jusqu'à ce que… n = 5 while n > 0: print(n) n = n - 1 5 tours : 5, 4, 3, 2, 1
Entraîne-toi★☆☆Pas commencé
Expliquer la différence entre une boucle for (répéter un nombre de fois connu) et une boucle while (répéter tant qu'une condition est remplie), et donner un exemple de…

Expliquer la différence entre une boucle for (répéter un nombre de fois connu) et une boucle while (répéter tant qu'une condition est remplie), et donner un exemple de la vie courante pour chacune : faire dix tours de la cour par opposition à continuer de ramer jusqu'à atteindre la rive.

Résoudre
Entraîne-toi★★☆Pas commencé
Écrire une boucle for qui affiche la table de multiplication de $3$ (de $3 \cdot 1$ à $3 \cdot 10$), indiquer combien de fois le corps de la boucle est répété et…

Écrire une boucle for qui affiche la table de multiplication de $3$ (de $3 \cdot 1$ à $3 \cdot 10$), indiquer combien de fois le corps de la boucle est répété et expliquer ce que vous changeriez pour afficher la table de $7$ sans réécrire tout le programme.

Résoudre
Entraîne-toi★★☆Pas commencé
Lire ce programme et expliquer ce qu'il fait : n = 5, while n > 0:, print(n), n = n - 1, et à la fin print("¡Ya!"). Écrire l'affichage complet à l'écran et expliquer ce…

Lire ce programme et expliquer ce qu'il fait : n = 5, while n > 0:, print(n), n = n - 1, et à la fin print("¡Ya!"). Écrire l'affichage complet à l'écran et expliquer ce qui se passerait si l'on oubliait la ligne n = n - 1.

Résoudre
Entraîne-toi★★☆Pas commencé
Un camarade écrit un programme qui demande des mots de passe jusqu'à trouver le bon : clave = "", while clave != "sol":, et à l'intérieur seulement print("incorrecta").…

Un camarade écrit un programme qui demande des mots de passe jusqu'à trouver le bon : clave = "", while clave != "sol":, et à l'intérieur seulement print("incorrecta"). Expliquer pourquoi le programme ne se termine jamais, quelle ligne manque dans la boucle (redemander le mot de passe) et la règle générale sur les boucles while : quelque chose doit pouvoir modifier la condition.

Résoudre
Entraîne-toi★★★Pas commencé
Pour sélectionner les qualifiés d'un tournoi de robotique, on lit cinq notes (de $0$ à $10$). Un camarade a proposé ce code pour compter combien sont supérieures ou…

Pour sélectionner les qualifiés d'un tournoi de robotique, on lit cinq notes (de $0$ à $10$). Un camarade a proposé ce code pour compter combien sont supérieures ou égales à $5{,}0$ :

aprobados = 0

for i in range(5):

    nota = float(input("Introduce nota: "))

    if nota >= 5:

        aprobados = aprobados + 1

    else:

        aprobados = 0

print("Total de aprobados:", aprobados)
  1. a) Prévoir ce qui s'affichera si l'utilisateur saisit successivement les notes : $6{,}0$, $8{,}0$, $4{,}0$, $9{,}0$ et $7{,}0$. Justifier pourquoi le résultat final n'est pas celui attendu en repérant l'erreur de logique dans la structure conditionnelle.
  2. b) Corriger le code et le modifier pour qu'il écarte du décompte les notes erronées (inférieures à $0$ ou supérieures à $10$), en affichant un message d'avertissement spécifique sans additionner ni réinitialiser le compteur.
Résoudre

Fonctions

Avantage : on n'écrit les lignes qu'une seule fois, au lieu de les copier partout. S'il y a une erreur, on la corrige à un seul endroit. Par exemple, on définit une fonction puis on l'appelle autant de fois que nécessaire :

def saluer():

    print("Bonjour !")

saluer()

saluer()
Une fonction comme une machine : la même fonction aire_carre reçoit 5 et renvoie 25, puis reçoit 2,5 et renvoie 6,25, avec les carrés de côté 5 et 2,5 dessinés sur un quadrillage. appel résultat def aire_carre(cote): return cote * cote aire_carre(5) aire_carre(2.5) 25 5 × 5 6,25 2,5 × 2,5
Entraîne-toi★☆☆Pas commencé
Expliquer ce qu'est une fonction dans un programme et quel avantage il y a à écrire une seule fois def saludar(): et à pouvoir l'appeler de nombreuses fois, plutôt que…

Expliquer ce qu'est une fonction dans un programme et quel avantage il y a à écrire une seule fois def saludar(): et à pouvoir l'appeler de nombreuses fois, plutôt que de copier les mêmes lignes encore et encore.

Résoudre
Entraîne-toi★★☆Pas commencé
Analyser cette fonction : def area_cuadrado(lado): et à l'intérieur return lado * lado. Expliquer ce qu'est le paramètre, ce qu'est la valeur renvoyée et ce…

Analyser cette fonction : def area_cuadrado(lado): et à l'intérieur return lado * lado. Expliquer ce qu'est le paramètre, ce qu'est la valeur renvoyée et ce qu'afficherait chaque appel : print(area_cuadrado(5)), print(area_cuadrado(2.5)).

Résoudre
Entraîne-toi★★★Pas commencé
Une équipe développe le logiciel d'une caisse enregistreuse à l'aide de fonctions : a) À l'exécution de ce code, Python produit l'erreur : TypeError: unsupported operand…

Une équipe développe le logiciel d'une caisse enregistreuse à l'aide de fonctions :

def calcular_iva(precio):

    total = precio * 1.21

    pass  # El programador olvidó añadir la última línea de esta función

def aplicar_descuento(total, rebaja):

    resultado = total - rebaja

    return resultado

precio_base = 100.0

precio_con_iva = calcular_iva(precio_base)

precio_final = aplicar_descuento(precio_con_iva, 10.0)

print("Precio final:", precio_final)
  1. a) À l'exécution de ce code, Python produit l'erreur : TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'. Interpréter le message et expliquer exactement comment la valeur None circule dans les variables du programme.
  2. b) Un camarade soutient : « Pour corriger, il suffit de remplacer la ligne de la première fonction par print(precio * 1.21) ». Réfuter son affirmation en expliquant la différence fonctionnelle entre afficher une valeur à l'écran et renvoyer une valeur à l'appel principal.
  3. c) Corriger le code et ajouter une fonction es_valido(precio) qui renvoie une valeur booléenne (True ou False) pour vérifier que le montant de base n'est pas négatif avant de le traiter.
Résoudre

Erreurs de syntaxe et erreurs de logique

Deux fenêtres de code : avec une erreur de syntaxe (guillemet non fermé) le programme ne démarre pas ; avec une erreur de logique (note1 + note2 / 2) il démarre mais donne 7 au lieu de 5. Erreur de syntaxe input("Ton prénom : ) ne démarre pas Erreur de logique moy = note1 + note2 / 2 note1 = 4 note2 = 6 résultat : 7 attendu : 5 il démarre, résultat faux

Retour au début : pour qu'un programme marche du premier coup, on le teste mentalement (trace) avec quelques valeurs choisies, on lit les messages d'erreur ligne par ligne et on distingue ce qui empêche de démarrer (syntaxe) de ce qui donne un mauvais résultat (logique).

Entraîne-toi★★★Pas commencé
Dans le jeu « deviner un nombre secret de $1$ à $100$ », votre camarade affirme : « Avec une boucle à nombre d'essais fixe, il est impossible de garantir que…

Dans le jeu « deviner un nombre secret de $1$ à $100$ », votre camarade affirme : « Avec une boucle à nombre d'essais fixe, il est impossible de garantir que l'utilisateur trouve ; on est toujours obligé d'utiliser un while infini jusqu'à ce qu'il trouve ».

  1. a) Réfuter son affirmation : justifier mathématiquement pourquoi $7$ essais suffisent pour deviner à coup sûr n'importe quel nombre entre $1$ et $100$ si l'on utilise une stratégie de recherche dichotomique (toujours interroger le point milieu).
  2. b) Concevoir en Python ou en pseudo-code le jeu avec une limite de $7$ vies. Le programme doit s'arrêter aussi bien si l'utilisateur trouve avant d'avoir épuisé ses essais que s'il n'a plus de vies, en affichant des messages finaux différents. Justifier la condition d'arrêt logique choisie.
Résoudre
Entraîne-toi★★★Pas commencé
Un magasin applique la politique suivante : les achats inférieurs à $30\ \text{€}$ paient $4{,}50\ \text{€}$ de frais de livraison ; les achats entre $30\ \text{€}$ et…

Un magasin applique la politique suivante : les achats inférieurs à $30\ \text{€}$ paient $4{,}50\ \text{€}$ de frais de livraison ; les achats entre $30\ \text{€}$ et $50\ \text{€}$ bénéficient de la livraison gratuite ; les achats supérieurs à $50\ \text{€}$ bénéficient de la livraison gratuite et d'une remise de $10\ \%$ sur le prix de l'achat.

Un élève a programmé ce code :

precio = float(input("Total compra: "))

if precio > 50:

    total = precio * 0.90

if precio >= 30:

    total = precio

else:

    total = precio + 4.50

print("Total a pagar:", total)
  1. a) Effectuer la trace avec un achat de $60{,}00\ \text{€}$. Quel prix final le programme affiche-t-il ? Justifier pourquoi cette erreur de logique se produit lorsqu'on enchaîne les instructions conditionnelles.
  2. b) Réécrire correctement le programme en utilisant une structure conditionnelle imbriquée ou avec elif, et inclure une vérification qui avertit si l'on saisit un prix négatif ou nul.
Résoudre
Entraîne-toi★★★Pas commencé
Observer le programme suivant, dont l'objectif est de demander l'âge à l'utilisateur et de déterminer s'il a l'âge légal pour voter (à partir de $18$ ans révolus) : a)…

Observer le programme suivant, dont l'objectif est de demander l'âge à l'utilisateur et de déterminer s'il a l'âge légal pour voter (à partir de $18$ ans révolus) :

if edad >= "18":

print("Puedes votar")

edad = input("Dime tu edad: ")

else:

    print("No puedes votar")
  1. a) Si vous essayez d'exécuter le programme tel quel, à quelle ligne l'interpréteur Python s'arrêtera-t-il et pourquoi n'exécutera-t-il pas la ligne du input ?
  2. b) Identifier et classer toutes les erreurs présentes en distinguant les erreurs de syntaxe (qui empêchent l'interprétation) et les erreurs de type ou de logique à l'exécution.
  3. c) Réécrire le code corrigé et introduire une vérification pour éviter que le programme plante si l'utilisateur saisit son âge en toutes lettres (par exemple, en écrivant « dix-huit »).
Résoudre
Entraîne-toi★★★Pas commencé
Pour réguler un carrefour devant une école, on propose cet algorithme en pseudo-code pour un feu tricolore avec bouton-poussoir piéton : a) Repérer un grave défaut de…

Pour réguler un carrefour devant une école, on propose cet algorithme en pseudo-code pour un feu tricolore avec bouton-poussoir piéton :

mientras verdadero:

    verde_coches = ON, rojo_peatones = ON

    si pulsador_activado == 1:

        esperar(5)

        verde_coches = OFF, ambar_coches = ON

        esperar(3)

        ambar_coches = OFF, rojo_coches = ON

        rojo_peatones = OFF, verde_peatones = ON

        esperar(10)

        verde_peatones = OFF, rojo_peatones = ON
  1. a) Repérer un grave défaut de sécurité routière dans la transition de retour : lorsque le vert des piétons s'éteint, que se passe-t-il immédiatement pour la circulation des véhicules à l'itération suivante de la boucle ?
  2. b) Concevoir une amélioration de l'algorithme (en pseudo-code ou en texte structuré) qui corrige ce défaut et qui empêche en outre la paralysie de la circulation : si les piétons appuient plusieurs fois de suite sur le bouton, le feu doit toujours garantir un minimum de $20$ secondes ininterrompues de vert pour les voitures entre deux cycles.
Résoudre
Entraîne-toi★★★Pas commencé
Concevoir l'algorithme d'un terminal de rechargement et de paiement de la cantine scolaire en respectant les exigences techniques suivantes : La carte part d'un solde…

Concevoir l'algorithme d'un terminal de rechargement et de paiement de la cantine scolaire en respectant les exigences techniques suivantes :

  • La carte part d'un solde initial de $20{,}00\ \text{€}$ et chaque menu coûte $4{,}50\ \text{€}$.

  • Dans une boucle, le programme demande combien de menus on souhaite consommer dans la journée.

  • Si le solde disponible ne suffit pas à payer la quantité demandée, l'opération est annulée, le montant manquant est indiqué et le solde n'est pas modifié.

  • Si le solde est suffisant, le montant est déduit et l'on vérifie si le solde restant est inférieur à $5{,}00\ \text{€}$, en affichant dans ce cas l'avertissement « Solde bas : rechargez bientôt ».

  • Le programme doit se terminer automatiquement lorsque le solde restant est inférieur au prix d'un seul menu ($4{,}50\ \text{€}$).

  • Justifier quel type de boucle vous avez utilisé et expliquer comment vous empêchez un utilisateur de saisir un nombre négatif de menus pour augmenter artificiellement son solde.

Résoudre
Entraîne-toi★★★Pas commencé
Un système de notation calcule la note finale en appliquant les coefficients suivants : travail en classe ($20\ \%$), travaux pratiques en atelier ($30\ \%$) et…

Un système de notation calcule la note finale en appliquant les coefficients suivants : travail en classe ($20\ \%$), travaux pratiques en atelier ($30\ \%$) et évaluation théorique ($50\ \%$). Le professeur a programmé la formule ainsi :

trabajo = float(input("Note travail : "))

taller = float(input("Note atelier : "))

examen = float(input("Note examen : "))

nota_final = trabajo * 0.20 + taller * 0.30 + examen * 0.50 / 3

if nota_final > 5:

    print("Admis")

else:

    print("Refusé")
  1. a) Prévoir le résultat qu'affichera le programme si l'élève obtient $10{,}0$ aux trois évaluations. Interpréter la priorité des opérateurs pour justifier la valeur numérique erronée stockée dans nota_final.
  2. b) Justifier pourquoi cette erreur est une erreur de logique et non de syntaxe, et expliquer pourquoi les erreurs de logique représentent un risque bien plus grand dans les programmes d'ingénierie ou de contrôle que les erreurs de syntaxe.
  3. c) Repérer une seconde erreur de logique dans la condition du if par rapport au critère habituel de réussite (obtenir la moyenne avec $5{,}0$) et écrire la version définitive du programme corrigé.
Résoudre
Entraîne-toi★★★Pas commencé
Défi du thème. Jeune analyste de données, ta mission est de créer un programme en Python pour analyser l'impact thermique dans ton environnement et proposer des…

Défi du thème. Jeune analyste de données, ta mission est de créer un programme en Python pour analyser l'impact thermique dans ton environnement et proposer des habitudes efficaces.

  1. Recueil de données : Accéder au site officiel de Météo-France et relever la température maximale enregistrée dans ta commune pendant les $5$ derniers jours consécutifs.

  2. Programmation textuelle : Dans un éditeur en ligne gratuit comme Trinket.io, écrire un script en Python qui enregistre ces $5$ valeurs dans une liste. À l'aide d'une boucle for et d'instructions conditionnelles if-else, programmer le calcul automatique de la température moyenne ($\bar{x}$) et l'identification du jour le plus chaud.

  3. Compte rendu et proposition : Produire un document bref comprenant le code source commenté, une capture d'écran du résultat dans la console et une proposition justifiée de deux mesures de climatisation domestique si la moyenne dépasse $21,5$ °C.

Seront évalués :

  • La correction syntaxique du code (manipulation des listes, boucles et structures conditionnelles).

  • La précision de l'importation des données réelles de Météo-France et l'exactitude du calcul mathématique.

  • La clarté des commentaires dans le programme et la faisabilité technique de la proposition énergétique.

Résoudre

L'essentiel

Voir tous les exercices de cette partie