Ch. 01 · Leçon 1
Série de révision : structures de données et structures simples
Ce que vous saurez faire
- →Réviser les notions de variables et d'identificateurs
- →Manipuler les chaînes de caractères en Python
- →Traduire des expressions algorithmiques en Python à l'aide de modules
- →Implémenter des structures conditionnelles simples et imbriquées
id: 33-1542-serie-revision-structures-donnees-si slug: 33-1542-serie-revision-structures-donnees-si titre: 'Série de révision : structures de données et structures simples' chapitre: 1 chapitre_titre: Structures de données et structures simples lecon: 1 niveau: 4eme-sci ordre: 1 prerequis: [] duree_estimee_min: 60 mots_cles:
- variables
- chaines
- modules python
- structure conditionnelle
- sous-chaine
- identificateurs langages:
- analyse
- python objectifs:
- Réviser les notions de variables et d'identificateurs
- Manipuler les chaînes de caractères en Python
- Traduire des expressions algorithmiques en Python à l'aide de modules
- Implémenter des structures conditionnelles simples et imbriquées status: published source_pdf: 33_1542.pdf source_pages:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9 kind: exercices
Cette série de révision propose six exercices couvrant les structures de données (variables, chaînes) et les structures simples (séquence, conditionnelle). Chaque exercice est accompagné de son corrigé masqué.
Exercice 1 — Vrai ou Faux sur les structures de données
Évaluer chacune des propositions suivantes par « vrai » si elle est valide ou « faux » sinon.
- Le contenu d'une variable peut être changé à tout moment dans un programme.
Aetasont deux variables différentes en Python.- Pour saisir une donnée dans l'étape d'algorithme, on utilise l'action lire.
- L'action
print("4ième", sciences)permet d'afficher le message"4ième sciences". N ← ent(5.8) mod 2 + arrondi(6.7) div 10permet d'affecter àNla valeur0.
Voir le corrigé
- Vrai — une variable est, par définition, modifiable.
- Vrai — Python est sensible à la casse.
- Vrai — en algorithme, on saisit avec lire.
- Faux —
sciencesest interprété comme une variable (non définie) et non comme une chaîne ; il faudrait écrireprint("4ième", "sciences"). - Faux — calcul :
ent(5.8) = 5,5 mod 2 = 1;arrondi(6.7) = 7,7 div 10 = 0; doncN = 1 + 0 = 1(et non 0).
Exercice 2 — QCM sur les chaînes de caractères
Soit la chaîne Ch = "html 5 ". Pour chacune des propositions suivantes, cocher la ou les bonnes réponses.
a) Ch.upper() donne :
"HTML""HTML 5 ""Html 5 "
b) Pour copier "html", on écrit :
Ch[0:4]Ch[:4]Ch[1:4]
c) print(Ch[0] * 3) permet d'afficher :
p*30*3"hhh"
d) Ch.find("H") :
- Donne l'entier
0 - Donne l'entier
1 - Donne l'entier
-1
e) int(Ch[5]) :
- Donne l'entier
5 - Donne le caractère
5 - Donne le réel
5
f) chr(randint(65, 90)) :
- Retourne un entier aléatoire
- Retourne une lettre en minuscule
- Retourne une lettre en majuscule
Voir le corrigé
a) ✅ "HTML 5 " — upper() met toute la chaîne en majuscules.
b) ✅ Ch[0:4] et ✅ Ch[:4] — les deux écritures sont équivalentes pour extraire les 4 premiers caractères.
c) ✅ "hhh" — Ch[0] vaut 'h', et 'h' * 3 répète la chaîne 3 fois.
d) ✅ Donne l'entier -1 — la méthode find est sensible à la casse, et 'H' (majuscule) n'apparaît pas dans "html 5 ".
e) ✅ Donne l'entier 5 — Ch[5] est le caractère '5', converti en entier par int.
f) ✅ Retourne une lettre en majuscule — les codes ASCII de 65 à 90 correspondent aux lettres 'A' à 'Z'. Exemple : chr(66) = 'B'.
Exercice 3 — Implémentation des modules Python
Implémenter les expressions algorithmiques suivantes en Python et les évaluer (type et résultat).
| Instruction en algorithme |
|---|
Ok ← estnum(20.5) et estnum("20,5") |
Ch ← souschaine("python", 2, long("python")) |
x ← arrondi(5.3) + abs(-7) div 6 * racine_carrée(16) |
Ch ← "html#2emeinfo" puis z ← efface(Ch, pos("#", Ch), 9) |
Voir le corrigé
Ligne 1 :
Ok = "20.5".isdigit() and "20,5".isdigit()
- Type : booléen
- Résultat :
True and False = False
Ligne 2 :
ch = "python"[2:]
- Type :
str - Résultat :
"thon"
Ligne 3 :
from math import *
x = round(5.3) + abs(-7) // 6 * sqrt(16)
- Type :
int(oufloatselon Python) - Calcul :
5 + 7 // 6 * 4 = 5 + 1 * 4 = 5 + 4 = 9
Ligne 4 :
z = ch[:ch.find("#")] + ch[9:]
- Type :
str - Résultat :
"htmlinfo"
Exercice 4 — Traduction et trace d'une structure conditionnelle
Écrire la séquence suivante en Python puis donner l'affichage à l'écran après son exécution.
A ← -7
Si A > 0 alors
C ← A + A
Sinon Si A = 0
C ← A + 10
Sinon
C ← A
C ← abs(C)
Finsi
Ecrire("A=", A)
Ecrire("C=", C)
Voir le corrigé
Traduction en Python :
A = -7
if A > 0:
C = A + A
elif A == 0:
C = A + 10
else:
C = A
C = abs(C)
print("A=", A)
print("C=", C)
Trace d'exécution :
| N° | Instruction | A | C |
|---|---|---|---|
| 01 | ··· | ? | ? |
| 02 | ··· | ? | ? |
| 03 | ··· | ? | ? |
| 04 | ··· | ? | ? |
Affichage à l'écran :
A= -7
C= 7
Exercice 5 — Heure après une minute
On propose d'écrire un programme qui saisit l'heure sous la forme hh:mm puis l'affiche après une minute.
Exemples :
09:45→ on affiche09:4612:59→ on affiche13:0023:59→ on affiche00:00
Voir le corrigé
Analyse :
| Objet | Type / Nature |
|---|---|
heure | chaîne |
hh, mm | entier |
h, m | chaîne |
Algorithme (extrait) :
Nom : Montre
Début
Ecrire("Donner l'heure"), lire(heure)
Si pos(":", heure) = 2 alors
h ← sous-chaine(heure, 0, 2)
m ← sous-chaine(heure, 3, 5)
hh ← valeur(h)
mm ← valeur(m)
Si (0 ≤ hh ≤ 23) et (0 ≤ mm ≤ 59) alors
Si (mm < 59) et (hh ≠ 23) alors
mm ← mm + 1
Sinon Si (hh ≠ 23) et (mm = 59)
mm ← 0
hh ← hh + 1
Sinon
mm ← 0
hh ← 0
Finsi
Si 0 ≤ mm ≤ 9 alors m ← "0" + convch(mm) Finsi
Si 0 ≤ hh ≤ 9 alors h ← "0" + convch(hh) Finsi
Ecrire("L'heure devient : ", h, ":", m)
Sinon
Ecrire("erreur")
Finsi
Sinon
Ecrire("erreur")
Finsi
Fin
Implémentation Python :
heure = input('donner une heure')
if heure.find(':') == 2:
h = heure[:2]
m = heure[3:]
m = int(m)
h = int(h)
if 0 <= m <= 59 and 0 <= h <= 23:
if m < 59:
m = m + 1
else:
if h != 23:
m = 0
h = h + 1
else:
m = 0
h = 0
if 0 <= m <= 9:
m = '0' + str(m)
if 0 <= h <= 9:
h = '0' + str(h)
heure = str(h) + ':' + str(m)
print("apres une minute l'heure devient", heure)
else:
print("verifier les heures ou les minutes")
else:
print('Time n est pas sous la forme hh:mm')
Exercice 6 — Type d'un fichier selon son extension
Un fichier est identifié par son nom et son extension sous la forme : nom.extension.
Écrire une analyse et un algorithme nommé « Fichier » permettant de saisir dans une seule chaîne de caractères le nom et l'extension d'un fichier (en supposant la saisie correcte), et afficher le type du fichier.
On se limite aux types suivants selon l'extension :
Txt,doc→ texteJpeg,gif,png,jpg→ imageMp3,wav→ audioMp4→ vidéoExe→ application
Exemple : pour le fichier "Devoir.mp3", on affiche : Devoir est de type audio.
Voir le corrigé
Analyse :
| Objet | Type / Nature |
|---|---|
nom, f, ext | chaîne |
p | entier |
Algorithme :
Nom : Fichier
Début
Ecrire("Donner le fichier"), lire(f)
p ← pos(".", f)
nom ← sous-chaine(f, 0, p)
ext ← sous-chaine(f, p+1, long(f))
ext ← majus(ext)
Si ext = "TXT" ou ext = "DOC" alors
Ecrire(nom, " est de type texte")
Sinon Si ext = "JPEG" ou ext = "GIF" ou ext = "PNG" ou ext = "JPG" alors
Ecrire(nom, " est de type image")
Sinon Si ext = "MP3" ou ext = "WAV" alors
Ecrire(nom, " est de type audio")
Sinon Si ext = "MP4" alors
Ecrire(nom, " est de type vidéo")
Sinon Si ext = "EXE" alors
Ecrire(nom, " est de type application")
Sinon
Ecrire("Type de fichier inconnu")
Finsi
Fin
Implémentation Python :
ch = input('donner un fichier')
p = ch.find('.')
nom = ch[:p]
print(nom)
ext = ch[p+1:]
ext = ext.upper()
print(ext)
if ext == 'TXT' or ext == 'DOC':
print(nom, ' est de type texte')
elif ext == 'JPG' or ext == 'PNG' or ext == 'GIF' or ext == 'JPEG':
print(nom, ' est de type image')
elif ext == 'MP3' or ext == 'WAV':
print(nom, ' est de type audio')
elif ext == 'MP4':
print(nom, ' est de type vidéo')
elif ext == 'EXE':
print(nom, ' est une application')
else:
print(nom, 'ce type est inconnu')