Projet 1 : Régression Linéaire – Moindre Carrés
L’objectif de ce projet est d’écrire un programme réalisant la régression linéaire
en utilisant la méthode des moindres carrés. Pour ce faire :
1. charger les données x depuis le fichier xRegLinMC.txt ;
2. charger les données y depuis le fichier yRegLinMC.txt ;
3. représenter le nuage de points y en fonction de x;
4. calculer dans une variable a la valeur du coefficient directeur de la droite
régression linéaire ;
5. calculer dans une variable b la valeur de l’ordonnée à l’origine de la droite
régression linéaire ;
6. en utilisant la technique des listes compréhension, créer une liste x_new de
100 valeurs allant 0 à 30 ;
7. en utilisant la technique des listes compréhension, créer une liste y_new de
100 valeurs, les valeurs y_new étant les prédictions respectives des valeurs de
x_new par la régression linéaire ;
8. enregistrer les données x_new dans le fichier x_newRegLinMC.txt avec la
virgule comme séparateur ;
9. enregistrer les données y_new dans le fichier y_newRegLinMC.txt avec la
virgule comme séparateur;
10. Tracer dans le même repère y en fonction de x et y_new en fonction
x_new.
Projet 2 : Régression Linéaire – Méthode de Mayer
L’objectif de ce projet est d’écrire un programme réalisant la régression linéaire
en utilisant la méthode de Mayer. Pour ce faire :
1. charger les données x depuis le fichier xRegLinMay.txt ;
1
2. charger les données y depuis le fichier yRegLinMay.txt ;
3. représenter le nuage de points y en fonction de x;
4. calculer dans une variable a la valeur du coefficient directeur de la droite de
Mayer ;
5. calculer dans une variable b la valeur de l’ordonnée à l’origine de la droite de
Mayer ;
6. en utilisant la technique des listes compréhension, créer une liste x_new de
100 valeurs allant 0 à 40 ;
7. en utilisant la technique des listes compréhension, créer une liste y_new de
100 valeurs, les valeurs y_new étant les prédictions respectives des valeurs de
x_new par la méthode de Mayer ;
8. enregistrer les données x_new dans le fichier x_newRegLinMay.txt avec la
virgule comme séparateur ;
9. enregistrer les données y_new dans le fichier y_newRegLinMay.txt avec la
virgule comme séparateur;
Tracer dans le même repère y en fonction de x et y_new en fonction x_new.
Projet 3 : K-Means – Distance euclidienne
L’objectif de ce projet est d’écrire un programme réalisant le clustering d’un jeu
de donnés en utilisant l’algorithme K-Means avec la distance euclidienne. Pour
ce faire :
1. charger les données x depuis le fichier xkMeansDE.txt ;
2. charger les données y depuis le fichier ykMeansDE.txt ;
3. représenter le nuage de points y en fonction de x;
4. initialiser de façon aléatoire les centres des deux clusters C1 et C2 ;
5. de façon itérative, afficher :
les centres des deux clusters,
2
les distances euclidiennes entre les points et les centres des deux
clusters ;
chaque cluster avec ses points ;
6. arrêter les itérations lorsque les clusters ne changent plus.
7. enregistrer les données x du cluster C1 dans le fichier xC1MeansDE.txt et les
données x du cluster C2 dans le fichier xC2MeansDE.txt avec la virgule
comme séparateur ;
8. enregistrer les données y du cluster C2 dans le fichier yC1MeansDE.txt et les
données y du cluster C2 dans le fichier yC2MeansDE.txt avec la virgule
comme séparateur ;
9. Tracer dans le même repère les points de deux clusters ( C1 en bleu et C2 en
rouge).
Projet 4 : K-Means – Distance de Manathan
L’objectif de ce projet est d’écrire un programme réalisant le clustering d’un jeu
de donnés en utilisant l’algorithme K-means avec la distance euclidienne. Pour
ce faire :
1- charger les données x depuis le fichier xkMeansDM.txt ;
2- charger les données y depuis le fichier ykMeansDM.txt ;
3- représenter le nuage de points y en fonction de x;
4- initialiser de façon aléatoire les centres des deux clusters C1 et C2 ;
5- de façon itérative, afficher :
les centres des deux clusters ;
les distances de Manathan entre les points et les centres des deux
clusters ;
chaque cluster avec ses points ;
6- arrêter les itérations lorsque les clusters ne changent plus.
3
7- enregistrer les données x du cluster C1 dans le fichier xC1MeansDM.txt
et les données x du cluster C2 dans le fichier xC2MeansDE.txt avec la
virgule comme séparateur ;
8- enregistrer les données y du cluster C2 dans le fichier yC1MeansDM.txt
et les données y du cluster C2 dans le fichier yC2MeansDE.txt avec la
virgule comme séparateur ;
9- Tracer dans le même repère les points de deux clusters (C1 en bleu et C2
en rouge).
Projet 5 : K-NN – Distance de Euclidienne
L’objectif de ce projet est d’écrire un programme réalisant la classification d’un
jeu de donnés en utilisant l’algorithme K-NN avec la distance euclidienne. Pour
ce faire :
1- charger les données x de la classe A depuis le fichier xAkNNDE.txt ;
2- charger les données y de la classe A depuis le fichier yAkNNDE.txt ;
3- charger les données x de la classe B depuis le fichier xBkNNDE.txt ;
4- charger les données y de la classe B depuis le fichier yBkNNDE.txt
5- représenter le nuage de points y en fonction de x (A en bleu et B en
rouge) ;
6- trier de façon aléatoire dix points dont les coordonnées sont entre le
minimum et le maximum des points chargés depuis les fichiers ;
7- calculer la distance euclidienne entre chacun des dix points pris de façon
aléatoire et chacun des points chargés depuis les fichiers ;
8- donner la classe de chacun des points pris aléatoirement avec trois, quatre
et cinq points
9- représenter le nuage de points y en fonction de x (A en bleu et B en
rouge) et ajouter les nouveaux points classés;
4
Projet 6 : K-NN – Distance de Manathan
L’objectif de ce projet est d’écrire un programme réalisant la classification d’un
jeu de donnés en utilisant l’algorithme K-NN avec la distance de Manathan.
Pour ce faire :
1- charger les données x de la classe A depuis le fichier xAkNNDM.txt ;
2- charger les données y de la classe A depuis le fichier yAkNNDM.txt ;
3- charger les données x de la classe B depuis le fichier xBkNNDM.txt ;
4- charger les données y de la classe B depuis le fichier yBkNNDM.txt
5- représenter le nuage de points y en fonction de x (A en bleu et B en
rouge) ;
6- trier de façon aléatoire dix points dont les coordonnées sont entre le
minimum et le maximum des points chargés depuis les fichiers ;
7- calculer la distance de Manathan entre chacun des dix points pris de façon
aléatoire et chacun des points chargés depuis les fichiers ;
8- donner la classe de chacun des points pris aléatoirement avec trois, quatre
et cinq points
9- représenter le nuage de points y en fonction de x (A en bleu et B en
rouge) et ajouter les nouveaux points classés.
Projet 7 : Chiffre de Vigenère
L’objectif de ce projet est d’écrire un programme réalisant le cryptage d’un texte
avec le chiffre de Vigenère. Pour ce faire :
1- charger le texte à crypter depuis le fichier texte.txt ;
2- écrire une fonction codeCesar() qui prend en argument un caractère et une
clef et renvoie le caractère crypté correspondant;
5
3- écrire une fonction decodeCesar() qui prend en argument un caractère
crypté et une clef et renvoie le caractère correspondant;
4- proposer une fonction de cryptage pour les caractères non alphabétiques ;
5- combiner les fonctions pour crypter avec le chiffre de Vigenère le texte
du fichier texte.txt en utilisant la clef « JePasseIUM »;
6- enregistrer le texte crypté dans un fichier texte_cryte.txt ;
7- combiner les fonctions pour décrypter le texte du fichier texte_cryte.txt
en utilisant la même ;
8- enregistrer le texte décrypté dans un fichier texte_decryte.txt.
Projet 8 : Statistiques d’un texte
L’objectif de ce projet est d’écrire un programme réalisant les statistiques d’un
texte. Pour ce faire :
1- charger le texte dans une variable texte depuis le fichier texte.txt ;
2- présenter les statistiques du texte par rapport aux mots : les différents mots
utilisés, leurs nombres d’apparition ainsi que leurs occurrences dans le
texte ;
3- présenter les statistiques du texte par rapport aux caractères : les différents
caractères utilisés, leurs nombres d’apparition ainsi que leurs occurrences
dans le texte ;
4- supprimer dans le texte tous les caractères non alphabétiques ;
5- présenter les statistiques du texte par rapport aux caractères en remplaçant
chaque lettre de l’alphabet par son numéro ( 1 pour « a » et 26 pour « z » )
les différents caractères utilisés, leurs nombres d’apparition ainsi que leurs
occurrences dans le texte ;
6- donner la moyenne, l’écart-type, le mode, la médiane, le premier et le
troisième quartile du texte ;
7- tracer le diagramme cumulative des fréquences des caractères.
6
Projet 9 : Jeu de Morpion
L’objectif de ce projet est d’écrire un programme réalisant le jeu Morpion.
Le Morpion, aussi appelé “tic-tac-toe” ou “oxo” en Belgique, est un jeu très
courant et facile à jouer. Le principe du jeu est simple. C’est un jeu au tour par
tour, où le but est d’aligner un trio de cercles ou de croix en diagonale,
horizontalement ou verticalement sur une grille de 3×3 carrés pour obtenir la
victoire.
Le défi de la création de ce jeu consiste principalement à se familiariser avec
l’indexation des tableaux en 2D et à comprendre comment vérifier les
alignements en diagonale. Une fois ces problèmes résolus, le codage devrait être
simplifié.
La figure ci-dessous illustre le résultat escompté.
Les deux joueurs jouent tour à tour en choisissant leurs cases à travers des
nombres. Le jeu doit indiquer à la fin le gagnant ou le match nul.
Le programme doit permettre deux modes de jeu : le mode 2 joueurs et le mode
jouer avec l’ordinateur.
7
Projet 10 : Jeux de Puissance 4
L’objectif de ce projet est d’écrire un programme réalisant le jeu Puissance 4.
Le but du jeu est d'aligner une suite de 4 pions de même couleur sur une grille
comptant 6 rangées et 7 colonnes. Chaque joueur dispose de 21 pions d'une
couleur (par convention, en général jaune ou rouge). Tour à tour, les deux
joueurs placent un pion dans la colonne de leur choix, le pion coulisse alors
jusqu'à la position la plus basse possible dans ladite colonne à la suite de quoi
c'est à l'adversaire de jouer. Le vainqueur est le joueur qui réalise le premier un
alignement (horizontal, vertical ou diagonal) consécutif d'au moins quatre pions
de sa couleur. Si, alors que toutes les cases de la grille de jeu sont remplies,
aucun des deux joueurs n'a réalisé un tel alignement, la partie est déclarée nulle.
Les deux joueurs jouent tour à tour en choisissant leurs colonnes à travers des
nombres. Le jeu doit indiquer à la fin le gagnant ou le match nul.
Le programme doit permettre deux modes de jeu : le mode 2 joueurs et le mode
jouer avec l’ordinateur.
Exercice 1 : Segmentation en mots
Dans le fichier mot.py, définissez la fonction decoupe() qui prends en argument
une phrase en chaine de caractère str et renvoie une liste de str comprenant tous
les mots de la phrase. Appeler la fonction dans le fichier.
Exemple de fonctionnement :
Entrez une chaîne :
" heuu bonjour, voici ma chaîne ! "
Les mots de " heuu bonjour, voici ma chaîne ! " sont :
'heuu'
8
'bonjour,'
'voici'
'ma'
'chaîne'
'!'
Attention !!! Ne pas utiliser la fonction split().
Exercice 2 : Questionnaire QCM
Dans un programme qcm.py, définissez un dictionnaire comprenant 10
associations clé valeur : chaque clé est une question et la valeur est une liste de 3
réponses possibles. Définissez un autre dictionnaire comprenant 10 associations
clé-valeur : chaque clé est une question (les mêmes questions que pour le
premier dictionnaire) et la valeur est la bonne réponse. Pour terminer :
1. Posez les questions une à une ;
2. Comptez le nombre de bonnes réponses ;
3. Donnez le score à la fin.
Exemple d'exécution pour une question :
Combien de dents possède un éléphant adulte ?
1- 32
2- de 6 à 10
3- beaucoup
Entrez un nombre entier compris entre 1 et 3 : 2
Exercice 3 : Devine le nombre
Dans un fichier devine.py, écrivez un programme jeu visant à faire deviner un
nombre compris entre 0 et 100 à l’utilisateur.
Pour cela :
1- initialiser de façon aléatoire le nombre à deviner
2- demander à l’utilisateur d’entrer un nombre au clavier ;
9
3- dire à l’utilisateur si son nombre est supérieur ou inférieur au nombre à
deviner ;
4- reprendre jusqu’à ce que l’utilisateur trouve le nombre ;
5- afficher en combien de coups l’utilisateur a réussi à deviner le nombre ;
6- fixer un nombre de coups maximal à l’issu duquel l’utilisateur a perdu la
partie.
Exercice 4 : Classement dans un dictionnaire
Dans un fichier classement.py, créer un dictionnaire ayant les clés suivantes :
"positif ", "nul", "négatif ", "pair", "impair", " int", "float", chaque clé ayant pour
valeur une liste vide. Charger les nombres du fichier classement.txt. Pour chaque
nombre, ajouter le à la liste de la clé correspondante, un nombre pouvant être
ajouter à plusieurs listes à la fois. Présenter le dictionnaire à la fin du
programme.
Exercice 5 : Palindrome
Dans un fichier palindrome.py, écrire un programme qui vérifie si un texte
qu’on lui donne au clavier est un palindrome. Le texte tapé peut être un nombre,
un mot ou une phrase. Un texte palindrome est un texte qui reste pareil quand on
le retourne. Par exemple, 11 et 545 sont des palindromes. 123 n’en est pas un.
Exercice Commun : Gestion des notes d’une matière
Écrivez un programme notes.py qui affiche des statistiques des notes d’une
matière. Les notes sont enregistrées dans le fichier notes.txt sous le format
suivant : « Nom_Prénom Interro1,Interro2,Interro3;Devoir1;Devoir2 ».
Afficher les résultats de chaque élève sous la forme :
« Nom_Prénom MoyInterro;Devoir1;Devoir2---MoyGén ».
On précise que MoyInterro = (Interro1+Interro2+Interro3) /3 et
MoyGén = (MoyInterro + 2*Devoir1 + 3*Devoir2) /6.
Enregistrer les résultats dans un fichier resultat.txt .
10
Afficher les résultats de la classe, la plus faible moyenne et quel élève l’a
obtenu, la plus forte moyenne et quel élève l’a obtenu, le nombre d'élèves ayant
la moyenne, le nombre d'élèves n’ayant pas la moyenne.
11