Voici une première liste d’exercices pour comprendre les bases de la construction d’un programme. Ils portent sur la déclaration de variables, les types de données, les structures de contrôle, et les fonctions.
L’objectif de cette activité est de vous familiariser avec les concepts fondamentaux de la programmation, en vous concentrant sur la construction d’algorithmes simples.
Certains exercices demandent de concevoir un algorithme pour résoudre un problème spécifique, puis de le coder en Python pour le tester. L’étape de conception est cruciale pour comprendre comment aborder un problème de programmation. Elle impose de réfléchir à la logique de l’algorithme avant de se lancer dans le codage.
Chaque programme Python conçu doit être évalué pour s’assurer qu’il fonctionne correctement et qu’il répond aux exigences de l’exercice.
Important
Le but de cette séance est de vous aider à maîtriser des notions importantes en informatique. Un assistant de programmation intelligent tel que GitHub Copilot sera capable de vous fournir une solution à ces exercices uniquement à partir d’un nom de fichier judicieusement choisi.
Pour comprendre et apprendre, vous ne devez pas utiliser ces outils pour l’instant.
Prendre le temps de réfléchir, de concevoir des algorithmes et de les coder vous-même est essentiel pour acquérir les compétences nécessaires.
Contenu de l’activité
Conversion
Complétez le code Python ci-dessous qui étant donné un entier exprimant un temps en secondes supposé correct :
le convertit en heures, minutes, secondes ;
l’affiche sous la forme …H, …MN, …SEC.
🏁 Avant de commencer à programmer, réfléchissez à la manière dont vous pourriez aborder ce problème.
Copier/coller
Vous pouvez copier le code présenté ci-après en cliquant sur l’icône située en haut à droite de la fenêtre de code.
# Affichage de la demande de saisieprint("Entrez une durée en secondes :")
# Lecture de la durée en secondesduree_en_secondes = int(input())
# A vous de programmer la conversion
À faire
Complétez le code ci-dessus.
Correction
Cliquez ici pour afficher la correction.
# Affichage de la demande de saisieprint("Entrez une durée en secondes :")
# Lecture de la durée en secondesduree_en_secondes = int(input())
# Conversion en heures, minutes et secondesheures = duree_en_secondes //3600minutes = (duree_en_secondes %3600) //60secondes = duree_en_secondes %60
Calcul du grade
Complétez le code Python ci-dessous pour qu’il puisse :
lire trois notes entières
vérifier leur validité (entre 0 et 20)
afficher leur moyenne et la mention correspondante (insuffisant, passable, bien, très bien,
excellent), ou un message d’erreur.
Les seuils correspondant aux mentions possibles doivent être déclarés comme des constantes entières (valeurs de votre choix).
🏁 Avant de commencer à programmer, réfléchissez à la manière dont vous pourriez aborder ce problème.
# Constantes de seuils pour les mentionsPASSABLE =8BIEN =14TRES_BIEN =16EXCELLENT =18# lecture, vérification des notes et affichageprint("Saisissez 3 notes entières entre 0 et 20 (une à la fois)");
note1 = int(input())
note2 = int(input())
note3 = int(input())
# A vous de programmer le calcul de la moyenne et l'affichage de la mention
À faire
Complétez le code ci-dessus.
Correction
Cliquez ici pour afficher la correction.
Complétez le code Python ci-dessous pour qu’il puisse:
lire trois notes entières
vérifier leur validité (entre 0 et 20)
afficher leur moyenne et la mention correspondante (insuffisant, passable, bien, très bien,
excellent), ou un message d’erreur.
Les seuils correspondant aux mentions possibles doivent être déclarés comme des constantes entières (valeurs de votre choix).
# Constantes de seuils pour les mentionsPASSABLE =8BIEN =14TRES_BIEN =16EXCELLENT =18# lecture, vérification des notes et affichageprint("Saisissez 3 notes entières entre 0 et 20 (une à la fois)");
note1 = int(input())
note2 = int(input())
note3 = int(input())
# Vérification de la validité des notesif note1 <0or note1 >20:
print("Note 1 invalide")
elif note2 <0or note2 >20:
print("Note 2 invalide")
elif note3 <0or note3 >20:
print("Note 3 invalide")
else:
# Calcul de la moyenne moyenne = (note1 + note2 + note3) /3 print(f"Moyenne: {moyenne:.2f}, ")
# Détermination de la mentionif moyenne < PASSABLE:
mention ="Insuffisant"elif moyenne < BIEN:
mention ="Passable"elif moyenne < TRES_BIEN:
mention ="Bien"elif moyenne < EXCELLENT:
mention ="Très bien"else:
mention ="Excellent" print(f"Mention: {mention}")
Calcul de salaire
Complétez le code Python pour calculer le salaire hebdomadaire d’un employé, sachant que :
celui-ci a effectué n heures dans la semaine,
le taux horaire TAUX_HORAIRE est applicable aux heures normales – jusqu’à HORAIRE_LEGAL (35 heures) –, et que ce taux est majoré de MAJORATION_TAUX (par exemple 50%) pour les heures supplémentaires.
Le nombre d’heures sera lu au clavier (cf. exercice 1).
# Constantes HORAIRE_LEGAL =35TAUX_HORAIRE =12.5MAJORATION_TAUX =0.5# A vous de compléter le code
À faire
Complétez le code ci-dessus.
Correction
Cliquez ici pour afficher la correction.
Le nombre d’heures sera lu au clavier (cf. exercice 1).
# Constantes HORAIRE_LEGAL =35TAUX_HORAIRE =12.5MAJORATION_TAUX =0.5# Lecture du nombre d'heures travailléesprint("Entrez le nombre d'heures travaillées dans la semaine :")
n = int(input())
# Calcul du salairemajoration =0if n > HORAIRE_LEGAL:
majoration = (n - HORAIRE_LEGAL) * TAUX_HORAIRE * MAJORATION_TAUX
salaire = n * TAUX_HORAIRE + majoration
print(f"Salaire hebdomadaire: {salaire:.2f} euros")
Équation du second degré
Écrivez le code Python lisant les coefficients d’une équation du second degré dans $\mathbb{R}$$(ax^2 + bx + c = 0)$ et affichant les solutions éventuelles.
Pour calculer la racine carrée de nb : math.sqrt(nb). Cela nécessite d’importer la bibliothèque mathématique (cf. exemple ci-dessous).
D’autre part, de même que int(x) traite x comme un entier, vous pouvez utiliser float(x) pour obtenir un nombre à virgule flottante.
Aide
Pour résoudre l'équation du second degré, vous pouvez utiliser la formule du discriminant :
$$\Delta = b^2 - 4ac$$
- Si $\Delta > 0$, l'équation a deux solutions réelles distinctes.
Les solutions sont données par :
$$x_1 = \frac{-b - \sqrt{\Delta}}{2a}$$
$$x_2 = \frac{-b + \sqrt{\Delta}}{2a}$$
- Si $\Delta = 0$, l'équation a une solution réelle double.
La solution est donnée par :
$$x = \frac{-b}{2a}$$
- Si $\Delta < 0$, l'équation n'a pas de solution réelle.
# Importation de la bibliothèque mathématiqueimport math
# A vous de compléter le code
À faire
Complétez le code ci-dessus.
Correction
Cliquez ici pour afficher la correction.
Écrivez le code Python lisant les coefficients d’une équation du second degré dans $\mathbb{R}$$(ax^2 + bx + c = 0)$ et affichant les solutions éventuelles.
Pour calculer la racine carrée de nb : math.sqrt(nb).
# Importation de la bibliothèque mathématiqueimport math
# Lecture des coefficientsprint("Entrez les coefficients a, b et c :")
a = float(input())
b = float(input())
c = float(input())
# Calcul du discriminantdelta = b**2-4*a*c
# Affichage des solutionsif delta <0:
print("Pas de solution réelle.")
elif delta ==0:
x =-b / (2*a)
print(f"Solution unique : x = {x:.2f}")
else:
x1 = (-b - math.sqrt(delta)) / (2*a)
x2 = (-b + math.sqrt(delta)) / (2*a)
print(f"Solutions : x1 = {x1:.2f}, x2 = {x2:.2f}")
Nombre parfait
Un nombre est dit parfait s’il est égal à la somme de tous ses diviseurs, lui-même non compris ; par exemple $6 = 1 + 2 + 3$ et $28 = 1 + 2 + 4 + 7 + 14$ sont tous les deux parfaits.
Écrivez le code Python qui, étant donné un entier positif saisi au clavier, vérifie s’il est parfait.
Aide
Avant de révéler les étapes de l’algorithme, essayez de réfléchir à la manière dont vous pourriez aborder ce problème. Une feuille et un stylo peuvent être utiles pour concevoir un algorithme avant de le coder.
Cliquez ici pour révéler l’aide
Pour vérifier si un nombre est parfait, vous pouvez suivre ces étapes :
Initialisez une variable pour stocker la somme des diviseurs.
Parcourez tous les entiers de 1 à n-1 (où n est le nombre saisi) et vérifiez s’ils sont des diviseurs de n.
Si un entier est un diviseur, ajoutez-le à la somme.
À la fin, comparez la somme des diviseurs à n. Si elles sont égales, n est parfait.
# A vous de compléter le code
À faire
Complétez le code ci-dessus.
Correction
Cliquez ici pour afficher la correction.
Un nombre est dit parfait s’il est égal à la somme de tous ses diviseurs, lui-même non compris ; par exemple $6 = 1 + 2 + 3$ et $28 = 1 + 2 + 4 + 7 + 14$ sont tous les deux parfaits.
Écrivez le code Python qui, étant donné un entier positif saisi au clavier, vérifie s’il est parfait.
Aide
Avant de révéler les étapes de l’algorithme, essayez de réfléchir à la manière dont vous pourriez aborder ce problème. Une feuille et un stylo peuvent être utiles pour concevoir un algorithme avant de le coder.
Cliquez ici pour révéler l’aide
Pour vérifier si un nombre est parfait, vous pouvez suivre ces étapes :
Initialisez une variable pour stocker la somme des diviseurs.
Parcourez tous les entiers de 1 à n-1 (où n est le nombre saisi) et vérifiez s’ils sont des diviseurs de n.
Si un entier est un diviseur, ajoutez-le à la somme.
À la fin, comparez la somme des diviseurs à n. Si elles sont égales, n est parfait.
# Lecture du nombre entier positifprint("Entrez un nombre entier positif :")
n = int(input())
# Initialisation de la somme des diviseurssomme_diviseurs =0# Parcours des entiers de 1 à n-1 pour trouver les diviseursfor i in range(1, n):
if n % i ==0: # Si i est un diviseur de n somme_diviseurs += i # Ajout à la somme des diviseurs# Vérification si n est parfaitif somme_diviseurs == n:
print(f"{n} est un nombre parfait.")
else:
print(f"{n} n'est pas un nombre parfait.")
Numérologie
Écrivez le code qui calcule le chiffre de numérologie correspondant à une année ; on l’obtient en calculant la somme des chiffres composant l’année, jusqu’à obtenir un chiffre (nombre compris entre 1 et 9 inclus).
Pour cela, vous devez déclarer une fonction chiffre_de_numerologie(n) qui prend un entier n en argument et retourne le chiffre de numérologie correspondant.
À faire
Assurez-vous que votre programme peut aussi calculer le chiffre de numérologie d’un entier positif quelconque.
Assurez-vous que votre programme peut aussi calculer le chiffre de numérologie d’un entier positif quelconque.
# Lecture de l'année ou du nombre entier positifprint("Entrez une année ou un nombre entier positif :")
annee = int(input())
# Fonction pour calculer le chiffre de numérologiedefchiffre_numerologie(n):
while n >=10: # Répéter jusqu'à obtenir un chiffre unique n = sum(int(digit) for digit in str(n)) # Somme des chiffresreturn n
# Calcul du chiffre de numérologienumerologie = chiffre_numerologie(annee)
print(f"Le chiffre de numérologie pour {annee} est : {numerologie}")
Matrice
Etant donnée une matrice carrée de taille n (entier positif), vous devez écrire un programme Python qui effectue les opérations suivantes :
Initialiser une matrice n x n avec des zéros.
Remplir la matrice triangulaire supérieure avec les chiffres de 1 à k, diagonale exclue.
Afficher la matrice.
Vous devez déclarer trois fonctions, chacune effectuant l’une des opérations ci-dessus. La première fonction prend un entier n en argument et retourne une matrice n x n initialisée avec des zéros. La deuxième fonction prend une matrice carrée, détermine son ordre (nombre de lignes ou de colonnes) n puis remplit la matrice triangulaire supérieure avec tous les nombres distincts de 1 à k (k à calculer en fonction de n). La troisième fonction prend une matrice en argument et l’affiche.
Aide
En Python, vous pouvez utiliser des listes imbriquées pour représenter une matrice.
Cliquez ici pour révéler l’aide
Pour initialiser une matrice carrée de taille n, il existe plusieurs méthodes.
Vous pouvez utiliser une boucle pour créer une liste de listes.
matrice = []
for i in range(n):
ligne = [0] * n # Crée une ligne de zéros matrice.append(ligne) # Ajoute la ligne à la matrice
Vous pouvez également utiliser une compréhension de liste pour créer la matrice en une seule ligne.
matrice = [[0for _ in range(n)] for _ in range(n)]
À faire
Répondez à la question ci-dessus.
Correction
Cliquez ici pour afficher la correction.
Aide
En Python, vous pouvez utiliser des listes imbriquées pour représenter une matrice.
Cliquez ici pour révéler l’aide
Pour initialiser une matrice carrée de taille n, il existe plusieurs méthodes.
Vous pouvez utiliser une boucle pour créer une liste de listes.
matrice = []
for i in range(n):
ligne = [0] * n # Crée une ligne de zéros matrice.append(ligne) # Ajoute la ligne à la matrice
Vous pouvez également utiliser une compréhension de liste pour créer la matrice en une seule ligne.
matrice = [[0for _ in range(n)] for _ in range(n)]
# Lecture de la taille de la matriceprint("Entrez la taille de la matrice (n) :")
n = int(input())
# Fonction pour initialiser une matrice n x n avec des zérosdefinitialiser_matrice(n):
return [[0for _ in range(n)] for _ in range(n)]
# Fonction pour remplir la matrice triangulaire supérieuredefremplir_matrice(matrice):
n = len(matrice) # taille de la matrice k = n * (n -1) //2# Calcul de k compteur =1for i in range(n):
for j in range(i +1, n): # Remplissage de la partie triangulaire supérieure matrice[i][j] = compteur
compteur +=1# Fonction pour afficher la matricedefafficher_matrice(matrice):
for ligne in matrice:
for element in ligne:
print(element, end=' ')
print() # Nouvelle ligne après chaque ligne de la matrice# Initialisation de la matricematrice = initialiser_matrice(n)
# Remplissage de la matrice triangulaire supérieureremplir_matrice(matrice)
# Affichage de la matriceafficher_matrice(matrice)