Académique Documents
Professionnel Documents
Culture Documents
L1 MIASHS
Programmation
Algorithmique et Python
Année 2023/2024
L1 MIASHS
Programmation 2023/2024
TD 1 : Algorithmique
1 a = 3
2 a = 55
3 a = 12 = 11
4 a = a + 1
5 b = 11
6 b = b = 1
7 b = a *b
8 c = b % 6
9 d = b // 6
1 a = 5
2 b = 6
3 b = b = 1
4 c = a < b
5 d = True
6 e = c and d
7 c = e or d
8 print ( c )
2
Algorithmique TD 1
1.4 Triangle
Soit le programme suivant :
1 cote1 = 4
2 cote2 = 3
3 cote3 = 5
4 p r i n t ( ” S o i t une t r i a n g l e r e c t a n g l e de c o t e s c o t e 1 , c o t e 2 , c o t e 3 ”)
5 x = cote1 + cote2 + cote3
6 y = cote2 * cote1 / 2
1.7 Siècle
1. Ecrire un algorithme qui définit une année et affiche le siècle dont fait partie cette année. Par exemple,
si l’année est 1456, l’algorithme doit afficher 15. Note : on simplifie ici le problème en considérant que
l’année 1900 appartient au XXème siècle.
2. Remplir un tableau d’execution de cet algorithme pour vérifier son bon fonctionnement.
3
Python TD 1
1 annee = 2012
2 bissextile = . . .
3 p r i n t ( ” l ’ anné e ” , annee , ” e s t = e l l e bissextile ?”, bissextile )
4
L1 MIASHS
Programmation 2023/2024
TD 2 : Python
1 p r i n t (6 = 4)
2 p r i n t (4 = 6)
3 p r i n t (6 + 4 . 2 )
4 p r i n t (6+4 ,2)
5 p r i n t (4 + 3 * 6)
6 p r i n t ((4+3) * 6 )
7 print (20/3)
8 p r i n t ( 2 0 // 3 )
9 p r i n t (20%3)
5
Python TD 2
1. Exécuter les instructions suivantes l’une après l’autre. Essayer de prédire à chaque fois quel va être
le résultat affiché.
1 n = 7
2 p r i n t ( n , type ( n ) )
3 n = ”Coucou ! ! ”
4 p r i n t ( n , type ( n ) )
5 n= ( 3 / 2 ) / ( 2 / 3 )
6 p r i n t ( n , type ( n ) )
7 n = 6 > 3
8 p r i n t ( n , type ( n ) )
2. En vous basant sur vos observations, répondez aux questions suivantes : une variable peut-elle changer
de valeur ? Peut-elle changer de type ?
3. Définir une variable u avec la chaine "1.23", une variable v avec la chaine "445" et une variable w
avec la chaine "True". Afficher ces variables et leurs types, qui doit être String.
4. En utilisant les fonctions float(), int() et bool(), transformer les types de u, v, w respectivement
en booléen, entier et flottant. Afficher ces variables et leur nouveau type pour vérifier.
2.4 Débogueur
Créer un nouveau fichier exercice3.py dans lequel vous réaliserez les questions suivantes. Cet exercice
fait référence à l’exercice 1.3.
1. Saisir le code de l’exercice 1.3.
2. Utiliser le débogueur pour exécuter pas à pas ce code, et comparer avec vos prédictions réalisées lors
du TD précédent.
3. Etudier le comportement des variables dans le débogueur en modifiant de différentes manières l’ini-
tialisation de a, b ou d. Que peut-on dire de la valeur affichée en fonction de d ?
2.5 Durées 1
Créer un nouveau fichier durees1.py dans lequel vous réaliserez les questions suivantes.
1. Ecrire un programme qui définit une durée en heures, minutes, secondes (3 variables) puis calcule et
affiche la durée totale correspondante en secondes.
2. Vérifier à l’aide du débogueur l’état des différentes variables pour 6 heures 20 minutes et 12 secondes.
2.6 Durées 2
Créer un nouveau fichier durees2.py dans lequel vous réaliserez les questions suivantes.
1. Ecrire un programme qui définit une durée en secondes, puis calcule et affiche la durée correspondante
en heures, minutes, secondes.
2. Vérifier à l’aide du débogueur l’état des différentes variables pour 7982 secondes.
6
Algorithmique TD 2
2.10 RIB
Créer un nouveau fichier rib.py dans lequel vous réaliserez les questions suivantes.
Un relevé d’indentité bancaire (RIB) est composé de plusieurs séries de chiffres : le code banque, le code
guichet, le numéro de compte. La clé est une valeur calculée par application d’une formule sur les autres
chiffres. Elle permet entre autres de s’assurer qu’il n’y a pas eu d’erreur de saisie.
La formule de calcul de la clé est la suivante : Clé RIB = 97 - ( (89 x Code banque + 15 x Code guichet
+ 3 x Numéro de compte ) modulo 97 ).
1. Ecrire un programme qui définit les trois éléments d’un RIB et affiche la clé.
2. Suivre pas à pas l’exécution sur le cas de l’image d’exemple, en vérifiant la valeur des variables dans
le débogueur. Que peut-on dire du chiffre flouté ?
7
L1 MIASHS
Programmation 2023/2024
TD 3 : Algorithmique
Expressions conditionnelles
1 a = 5
2 b = 10
3 c = 15
4 i f a>b :
5 b = a
6 i f a<=b :
7 b = c
8 i f c != a and c > b :
9 c = 0
10 else :
11 if c < b :
12 c = 20
13 else :
14 c = 30
15 print (a , b , c )
Remplir le tableau d’exécution de cet algorithme. Quelles sont les valeurs affichées à la fin ?
3.2 Maximum
1. Ecrire un algorithme qui demande deux entiers à l’utilisateur et affiche le maximum des deux entiers.
2. Remplir un tableau d’exécution de cet algorithme.
3.3 Mention
Soit l’algorithme :
1 p r i n t ( ” S a i s i r une n o t e ”)
2 note = i n t ( input ( ) )
3 i f n o t e >= 1 0 :
4 p r i n t ( ”admis ”)
5 else :
6 p r i n t ( ” r e c a l é ”)
7 i f n o t e >= 1 2 :
8 p r i n t ( ” a s s e z b i e n ”)
9 i f n o t e >= 1 4 :
10 p r i n t ( ” b i e n ”)
8
Python TD 3
1 a = 8
2 b = 7
3 if a > b:
4 i f a > 10:
5 print (1)
6 else :
7 i f b < 10:
8 print (2)
9 else :
10 i f a == b :
11 print (3)
12 else :
13 print (4)
3.5 Météo
L’ouverture d’un viaduc aux véhicules est soumise à des conditions météo. Ainsi, il sera fermé s’il y a
un vent violent. Le pont sera également fermé s’il gèle par temps de pluie. On considère que trois variables
booléennes de la météo sont définies dans le programme : vent, pluie, gel.
1. Quelle est l’expression booléenne correspondant au pont ouvert ?
2. En appliquant les lois de De Morgan, déduire quelle est l’expression booléenne correspondant au pont
fermé.
3. Ecrire un programme permettant d’afficher le message ”Attention viaduc fermé” si le pont est fermé,
mais qui n’affiche rien sinon.
4. Le pont peut rester ouvert en cas d’extrème urgence. Considérant que l’on définit en plus une variable
urgence dans le programme, mettre à jour l’expression booléenne pour la fermeture du pont.
3.6 Livres
Ecrire un algorithme permettant d’afficher le tarif d’une commande de livres sachant que le prix unitaire
du livre est de 32 euros si l’on commande moins de 5 livres, 30 euros si on commande de 5 à 29 livres,
de 25 euros si on commande de 30 à 49 livres, de 22 euros si on commande 50 livres ou plus. On fixera
arbitraitrement dans une variable nb le nombre de livres commandés.
9
L1 MIASHS
Programmation 2023/2024
TD 4 : Python
Expressions conditionnelles
4.2 Bissextile
Créer un fichier bissextile.py pour cet exercice.
1. Ecrire un programme qui demande une année à l’utilisateur, et affiche si cette année est bissextile ou
non. On rappelle qu’une année est bissextile si :
— cette année est multiple de 4,
— elle n’est pas multiple de 100, sauf si elle est multiple de 400.
Par exemple, une sortie attendue serait :
L’année 2000 est bissextile.
2. Tester avec des exemples pertinents. Combien de tests faut-il faire au minimum pour cette fonction ?
4.3 Maximum
Créer un fichier maximum.py pour cet exercice.
On cherche à évaluer le maximum de trois nombres.
1. Ecrire un programme qui :
— définit trois nombres a, b et c,
— affiche le maximum des trois nombres. Par exemple, une sortie attendue serait : Le maximum des
nombres 12, 28 et 36 est 36.
Comment réaliser ce programme avec seulement deux comparaisons, sans utiliser la fonction max ?
2. Tester ce programme avec des exemples pertinents, et vérifier son déroulement dans le débogueur.
Combien de tests faut-il faire au minimum pour cette fonction ?
10
Algorithmique TD 4
4.4 Rideau
Créer un fichier rideau.py pour cet exercice.
On souhaite un programme qui permet de calculer le prix à payer pour l’achat d’un rideau. Les trois
premiers mètres sont vendus au prix unitaire, les 4 suivants avec une réduction au mètre de 10%, les autres
avec une réduction au mètre de 20%.
1. Rédiger une tel programme qui affichera le prix à payer, sachant qu’on considère deux variables pré-
définies, indiquant le prix au mètre ainsi que la longueur de rideau souhaitée. Par exemple, une sortie
attendue serait : Pour 10 mètres de rideau à 20 euros le mètre unitaire, la facture sera de 180.0 euros.
2. Tester pour différentes longueurs d’un rideau dont le prix unitaire est de 20 euros le mètre. Utiliser
le débogueur pour vérifier que votre code passe bien par les différentes expressions conditionnelles.
4.6 Mention
Créer un fichier mention.py pour cet exercice.
1. En s’inspirant de l’exercice 3.3, rédiger un programme permettant de demander une note à l’utilisa-
teur et d’indiquer la mention associée (Recalé, Passable, Assez bien, Bien, Très bien). Attention à
l’imbrication des conditionnelles !
2. Tester pour différentes notes. Utiliser le débogueur pour vérifier que votre code passe bien par les
différentes expressions conditionnelles.
11
L1 MIASHS
Programmation 2023/2024
TD 5 : Algorithmique
Répétitives et itérations
5.1 Répétitive
Soit l’algorithme ci-dessous :
1 k = 16
2 somme = 0
3 w h i l e k> 1 :
4 somme = somme + k
5 k = k // 2
6 p r i n t ( somme )
Remplir le tableau d’exécution de cet algorithme. Quelle est la valeur affichée à la fin ?
5.2 Itération
Soit l’algorithme ci-dessous :
1 total = 0
2 f o r i in range ( 0 , 4 ) :
3 total = total + i
4 print ( total )
Remplir le tableau d’exécution de cet algorithme. Quelle est la valeur affichée à la fin ?
1 f o r i in range ( 0 , 20 ) :
2 i f i % 2 == 0 :
3 print ( i )
12
Python TD 5
1 f o r i in range ( 0 , 3 ) :
2 f o r j in range ( 0 , 3 ) :
3 p r i n t ( f ”{ i } + { j } = { i+j } ”)
5.5 Carrés
Ecrire un algorithme qui définit un nombre n qui affiche les valeurs au carré des n premiers nombres. Par
exemple, n vaut 5, le programme affichera 1, 4, 9, 16, 25.
5.7 Affichages
Par défaut, l’instruction print inclut systématiquement un retour à la ligne après la chaine de caractères
affichée. La variante print(contenu,end=’’) permet d’afficher le contenu sans effectuer de retour à la ligne.
Soit le programme ci-dessous :
1 nb = 6
2 f o r i i n r a n g e ( 0 , nb ) :
3 f o r j in range (0 , i ) :
4 p r i n t ( ” * ” , end= ’ ’ )
5 print ()
Quel est l’affichage produit par ce programme ? On pourra rédiger une version simplifiée du tableau
d’exécution si nécessaire.
13
L1 MIASHS
Programmation 2023/2024
TD 6 : Python
Répétitives et itérations
6.2 Moyenne
L’objectif est de coder les deux versions de moyennes vues dans l’exercice 5.6.
1. Créer un fichier moyenne1.py pour cette question. Coder l’algorithme de l’exercice 5.6.1.
2. Tester avec deux nombres de notes différents.
3. Créer un fichier moyenne2.py pour cette question. Coder l’algorithme de l’exercice 5.6.2.
4. Tester avec des nombres de notes différents. Vérifier notamment que la moyenne calculée est correcte.
14
Algorithmique TD 6
15
L1 MIASHS
Programmation 2023/2024
TD 7 : Algorithmique
Listes
7.3 Cumul
1. Ecrire un algorithme permettant de faire la somme des nombres contenu dans une liste. On définira
la liste à l’intérieur du programme.
2. Remplir le tableau d’exécution pour la liste [4,7,9]
16
Python TD 7
7.4 Comptage
Ecrire un programme qui définit une liste l1 ainsi qu’un nombre nb. Ce programme doit afficher le nombre
d’éléments de la liste qui sont des multiples de nb.
Par exemple, avec l1=[12,6,5,24,3] et nb=4, le programme affichera 2.
7.6 Rang
Ecrire un programme qui définit une liste l1 et qui affiche le rang de la plus petite valeur de la liste.
Par exemple, l1=[12,6,5,24,3,9], le programme affichera 4 (qui est l’indice de la valeur 3).
17
L1 MIASHS
Programmation 2023/2024
TD 8 : Python
Listes
8.1 Multiple
Créer un fichier multiple.py pour cet exercice.
Ecrire un programme qui definit une liste l1 ainsi qu’un nombre nb. Ce programme doit afficher les
éléments de la liste qui sont des multiples de nb. Par exemple, avec l1=[12,6,5,24,3] et nb=4, le programme
affichera 12 et 24.
8.2 Moyenne
Créer un fichier moyenne.py pour cet exercice.
On considère le problème du calcul d’une moyenne de notes déjà vu dans les TDs précédents. Cette
fois, on considère que les notes sont stockées dans une liste l notes définie dans le programme. Ecrire un
programme qui calcule et affiche la moyenne des notes contenues dans la liste.
On produira un affichage du type : La moyenne des notes [12, 13, 8, 7, 15, 5, 10] est 10.0.
18
Algorithmique TD 8
A B C
D E F
G H I
Chaque valeur est séparée par des tabulations. Ce programme devra fonctionner pour toute autre liste en
entrée, quel que soit le nombre de lignes et de colonnes.
8.7 Harshad
Créer un fichier harshad.py pour cet exercice.
Ecrire un programme qui définit deux valeurs a et b et construit la liste de tous les nombres de Harshad
compris entre a et b.
Par exemple, un affichage produit serait : Il y a 10 nombres de Harshad entre 1400 et 1450 : [1400, 1404,
1410, 1413, 1416, 1417, 1422, 1431, 1440, 1450].
19
L1 MIASHS
Programmation 2023/2024
TD 9 : Algorithmique
Fonctions
1 d e f c h i f f r e u n i t e s ( nombre ) :
2 u n i t e = nombre % 10
3 return unite
4 d e f c h i f f r e d i z a i n e s ( nombre ) :
5 dz = nombre // 10
6 r e t u r n dz
7
8 nb = 48
9 c h i f f r e 1 = c h i f f r e u n i t e s ( nb )
10 c h i f f r e 2 = c h i f f r e d i z a i n e ( nb )
11 t o t a l = c h i f f r e 1 * 10 + c h i f f r e 2
12 print ( total )
1 d e f demander nombre ( ) :
2 nb = i n t ( i n p u t ( ” S a i s i r un nombre e n t i e r ”) )
3 r e t u r n nb
4 d e f e s t p o s i t i f ( nbr ) :
5 p o s i t i f = nbr > 0
6 return p o s i t i f
7 d e f a f f i c h e s y m b o l e ( symb ) :
8 p r i n t ( symb , symb , symb , symb )
9 v a l = demander nombre ( )
10 i f e s t p o s i t i f ( val ) :
11 a f f i c h e s y m b o l e ( ”+”)
12 else :
13 a f f i c h e s s y m b o l e ( ”= ”)
20
Algorithmique TD 9
1 def calcul (a , b , c ) :
2 t o t a l = a *b + c
3 return total
4
5 a = 10
6 b = 15
7 c = 24
8 x = 12
9 y = 5
10 z = 20
11 print ( calcul (x , y , z ) )
12 total = calcul (a ,b , c )
13 print ( calcul (c ,b , a) )
14 print ( total )
9.4 Affichage
1 def fonction1 () :
2 p r i n t ( ”a ”)
3
4 def fonction2 (b) :
5 return fonction4 (b , b)
6
7 def fonction3 ( c ) :
8 p r i n t ( ”c ”)
9 print ( c )
10
11 def fonction4 (a , b) :
12 r e t u r n a *b
13
14 a = 4
15 b = 5
16 fonction1 ()
17 a = fonction2 (7)
18 print (a)
19 fonction3 (8)
21
Python TD 9
4. Écrire un programme qui définit une liste maliste = [1245,351,6,52], l’affiche élément par élément,
puis calcule la liste des sommes de chiffres et l’affiche élément par élement.
9.7 Suite
Soit la suite définie par :
Un = Un−1 ∗ n + 3
U0 = 1
1. Écrire une fonction récursive suite qui permet d’évaluer la valeur de Un pour une valeur de n passée
en paramètre.
2. Ecrire un programme qui définit une valeur nb, calcule puis affiche la valeur de Unb .
22
L1 MIASHS
Programmation 2023/2024
TD 10 : Python
Fonctions
Pérsentation du problème
Ce TD est inspiré du jeu de société ”Turing Machine”, dans lequel les joueurs collectent des indices pour
trouver un nombre à troix chiffres, ABC. A est le chiffre des centaines, B le chiffre des dizaines et C le chiffre
des unités. A, B et C varient entre 1 et 5.
A B C
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Par exemple, si les contraintes collectées sont :
— la somme des chiffres vaut 6,
— le chiffre B vaut 2,
— les chiffres A, B, C sont décroissants strictement (A>B>C),
alors il existe une seul nombre possible qui est ...
L’objectif du TD est de résoudre automatiquement cette enigme. Pour cela, l’idée est de générer la liste
de toutes les valeurs possibles : [111, 112, 113, ... , 224, 225, 231, 232, ..., 553, 554, 555] ; puis d’appliquer
au fur et à mesure les contraintes pour réduire la liste aux valeurs compatibles.
23
Algorithmique et Python TD 10
24
L1 MIASHS
Programmation 2023/2024
TD 11 : Algorithmique et Python
Révisions
11.1 Coccinelles
On étudie l’évolution d’une population de coccinelles. Cette population augmente de 5% tous les ans, et
50 coccinelles meurent chaque année. Cette année, on a recensé 5000 individus.
1. Écrire un programme coccinelles1.py permettant de déterminer la population de coccinelles au
bout de N années. Par exemple, un affichage produit sera : Au bout de 10 ans, la population sera de
7512 coccinelles.
2. Écrire un programme coccinelles2.py permettant de déterminer combien d’années sont nécessaires
pour que la population augmente d’au moins une valeur P%. Par exemple, un affichage produit pour
P = 20% sera : La population aura augmenté de 20% au bout de 5 ans (avec 6104 coccinelles).
11.2 Algorithmique
Soit le code suivant.
25
Algorithmique et Python TD 11
11.3 Etoiles
Créer un fichier etoiles.py pour cet exercice.
Écrire un programme qui définit un nombre nb et affiche une structure d’étoiles selon le modèle suivant.
Ici, la figure est affichée pour nb=5.
*****
*
*
*
*
*
*****
***
*
*
*
***
4 14 15 1
9 7 6 12
5 11 10 8
16 2 3 13
1. Dans le programme principal, définir une variable carre contenant le carré magique ci-dessus. On
choisit de représenter le carré comme une liste de lignes, chaque ligne étant une liste d’entiers.
2. Écrire une fonction affiche_carre qui prend en entrée un carré (une liste de listes) et l’affiche le
carré de la manière ci-dessous.
26
Algorithmique et Python TD 11
4 14 15 1
9 7 6 12
5 11 10 8
16 2 3 13
27