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
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.
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 ?
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.
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.
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.
É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.
Instructions conditionnelles : `if`, `elif`, `else`
Les deux-points : à la fin des lignes if et else annoncent qu'un bloc indenté va suivre. Pour comparer, on utilise == (égal), != (différent), <, >, <=, >=.
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.
É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).
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.
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.
É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$.
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.
Boucles : `for` et `while`
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.
É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.
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.
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.
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)
- 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.
- 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.
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()
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.
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)).
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)
- 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 valeurNonecircule dans les variables du programme. - 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. - c) Corriger le code et ajouter une fonction
es_valido(precio)qui renvoie une valeur booléenne (TrueouFalse) pour vérifier que le montant de base n'est pas négatif avant de le traiter.
Erreurs de syntaxe et erreurs de logique
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).
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 ».
- 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).
- 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.
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)
- 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.
- 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.
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")
- 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? - 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.
- 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 »).
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
- 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 ?
- 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.
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.
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é")
- 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. - 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.
- c) Repérer une seconde erreur de logique dans la condition du
ifpar rapport au critère habituel de réussite (obtenir la moyenne avec $5{,}0$) et écrire la version définitive du programme corrigé.
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.
-
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.
-
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
foret d'instructions conditionnellesif-else, programmer le calcul automatique de la température moyenne ($\bar{x}$) et l'identification du jour le plus chaud. -
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.