Sujet 1
Exercice 1 : (4 points)
1. Donner deux exemples de fonctions Built-in et deux exemples de méthodes de chaine
de caractères en python (2 points)
2. Quelle est la différence entre les méthodes read() et readline()? (2 points)
1. Deux exemples de fonctions Built-in en Python :
len() : retourne la longueur d'un objet (par exemple une liste ou une chaîne de
caractères).
type() : retourne le type d'une variable ou d'un objet.
2. Deux exemples de méthodes de chaîne de caractères :
upper() : convertit tous les caractères d'une chaîne en majuscules.
replace(old, new) : remplace une sous-chaîne par une autre.
3. Différence entre read() et readline() :
read() lit tout le contenu du fichier (ou un nombre donné de caractères si on précise un
argument).
readline() lit une seule ligne du fichier à chaque appel.
Exercice 2 : (12 points)
Un examen a un code, un libelle, une date (jour, mois et année) et le nom du module
concerné. Compléter le programme suivant qui permet de :
1. Créer une fonction qui permet d’enregistrer les informations de n examens.
Le code, le libelle et le module sont des chaines de caractères. Le jour, le mois et l’année
sont des entiers.
2. Créer une fonction qui permet d’afficher les infos d’un examen.
3. Utiliser les fonctions déjà définies dans le programme principal pour :
Enregistrer n examens.
Afficher les examens passés dans la même date (la date est donnée par l’utilisateur)
def enregistrer_examens(n):
examens = []
for i in range(n):
print(f"\n‐‐‐ Enregistrement de l'examen {i+1} ‐‐‐")
code = input("Code de l'examen : ")
libelle = input("Libellé de l'examen : ")
jour = int(input("Jour : "))
mois = int(input("Mois : "))
annee = int(input("Année : "))
module = input("Module : ")
examen = {
"code": code,
"libelle": libelle,
"jour": jour,
"mois": mois,
"annee": annee,
"module": module
[Link](examen)
return examens
def afficher_examen(examen):
print(f"\n‐‐‐ Informations de l'examen ‐‐‐")
print(f"Code : {examen['code']}")
print(f"Libellé : {examen['libelle']}")
print(f"Date : {examen['jour']:02d}/{examen['mois']:02d}/{examen['annee']}")
print(f"Module : {examen['module']}")
# Programme principal
n = int(input("Combien d'examens voulez‐vous enregistrer ? "))
# Enregistrement des examens
examens = enregistrer_examens(n)
# Demander la date à rechercher
print("\n‐‐‐ Recherche des examens par date ‐‐‐")
jour_recherche = int(input("Jour : "))
mois_recherche = int(input("Mois : "))
annee_recherche = int(input("Année : "))
# Affichage des examens qui correspondent à la date recherchée
print(f"\nExamens passés le {jour_recherche:02d}/{mois_recherche:02d}/{annee_recherche} :")
examen_trouve = False
for examen in examens:
if (examen['jour'] == jour_recherche and
examen['mois'] == mois_recherche and
examen['annee'] == annee_recherche):
afficher_examen(examen)
examen_trouve = True
if not examen_trouve:
print("Aucun examen trouvé à cette date.")
Exercice 3 : (4 points)
1. Ecrire une fonction qui retourne le plus grand entre deux nombres réels (2pts)
2. Utiliser la fonction déjà définie dans le programme principal pour trouver le plus grand
nombre entre 10 nombres donnés par l’utilisateur. (2pts)
def plus_grand(a, b):
if a > b:
return a
else:
return b
# Programme principal
plus_grand_nombre = float(input("Entrez le 1er nombre : "))
for i in range(2, 11):
nombre = float(input(f"Entrez le {i}e nombre : "))
plus_grand_nombre = plus_grand(plus_grand_nombre, nombre)
print(f"\nLe plus grand nombre parmi les 10 est : {plus_grand_nombre}")
Sujet 2
Exercice 1 : (8 points)
Une ville est caractérisée par un nom, une altitude, les températures de 12 mois. Compléter
le programme suivant qui permet de :
1. Créer une fonction qui permet d’enregistrer les informations de 10 villes.
Le nom de la ville est une chaine de caractères. L’altitude et les températures de 12 mois
sont des réels.
2. Créer une fonction pour calculer la ville la plus froide au cours de l’année
3. Créer une fonction pour afficher les informations de la ville la plus froide
def enregistrer_villes():
villes = []
for i in range(10):
print(f"\n--- Enregistrement de la ville {i+1} ---")
nom = input("Nom de la ville : ")
altitude = float(input("Altitude de la ville (en mètres) : "))
temperatures = []
for mois in range(1, 13):
temp = float(input(f"Température pour le mois {mois} : "))
[Link](temp)
ville = {
"nom": nom,
"altitude": altitude,
"temperatures": temperatures
[Link](ville)
return villes
def ville_la_plus_froide(villes):
ville_froide = villes[0]
temp_min = min(villes[0]['temperatures'])
for ville in villes[1:]:
ville_temp_min = min(ville['temperatures'])
if ville_temp_min < temp_min:
temp_min = ville_temp_min
ville_froide = ville
return ville_froide, temp_min
def afficher_ville(ville):
print("\n--- Informations de la ville la plus froide ---")
print(f"Nom : {ville['nom']}")
print(f"Altitude : {ville['altitude']} mètres")
print("Températures sur 12 mois :", ville['temperatures'])
# Programme principal
villes = enregistrer_villes()
ville_froide, temperature_minimale = ville_la_plus_froide(villes)
afficher_ville(ville_froide)
print(f"\nTempérature la plus basse enregistrée : {temperature_minimale}°C")
Exercice 2 : (8 points)
Une salle est caractérisée par son code, son libellé, nombreTables et son type. Compléter le
programme suivant qui permet de :
1. Enregistrer les informations de 20 salles (3pts)
Le code, le libelle et le type sont des chaines de caractères.
2. Afficher les informations de la salle qui a le plus petit nombre de tables. (3pts)
def enregistrer_salles():
salles = []
for i in range(2):
print(f"\n--- Enregistrement de la salle {i+1} ---")
code = input("Code de la salle : ")
libelle = input("Libellé de la salle : ")
nombre_tables = int(input("Nombre de tables : "))
type_salle = input("Type de la salle : ")
salle = {
"code": code,
"libelle": libelle,
"nombre_tables": nombre_tables,
"type": type_salle
[Link](salle)
return salles
def afficher_salle_min_tables(salles):
salle_min = salles[0]
min_tables = salles[0]['nombre_tables']
for salle in salles[1:]:
if salle['nombre_tables'] < min_tables:
min_tables = salle['nombre_tables']
salle_min = salle
print("\n--- Salle avec le plus petit nombre de tables ---")
print(f"Code : {salle_min['code']}")
print(f"Libellé : {salle_min['libelle']}")
print(f"Nombre de tables : {salle_min['nombre_tables']}")
print(f"Type : {salle_min['type']}")
# Enregistrement des 20 salles
salles = enregistrer_salles()
# Affichage de la salle avec le minimum de tables
afficher_salle_min_tables(salles)