Course Website
Cours : Jeudi 8h15–9h00, CM 1 4
Exercices : Jeudi 9h15–11h, INF 3, BC 07-08
Cette série a pour objectif de pratiquer l’usage des différentes structures de données disponibles en Python, ainsi que les list comprehenions.
Avant de commencer cette série, il est prévu que vous ayez suivi le tutoriel de cette semaine :
Nous vous recommandons de créer un nouveau projet Python pour chaque série d’exercices. Cela vous permettra d’isoler plus facilement le contenu des différentes semaines.
Cette série contient 2 exercices :
Dans le jeu de société Brass: Birmingham, on construit des industries sur des villes, ainsi que des chemins de fer pour connecter les villes entre elles. Quand on construit une industrie, elle n’est pas encore “rentabilisée”. C’est seulement si on la vend plus tard qu’elle rapportera des points.
En fin d’ère, on gagne des points en fonction :
Plus précisément :
On compte les points comme suit. Chaque joueur ou joueuse gagne :
Modélisez la situation de jeu ci-dessus.
Puis implémentez la fonction compute_score(player: Player) -> int
qui calcule le nombre de points gagnés par un joueur ou joueuse.
Essayez de réaliser cette implémentation sans boucle (ni fonction récursive), donc en exploitant au maximum les comprehensions.
La fonction sum()
de Python calcule la somme des éléments d’une liste d’entiers.
Pour des analyses lexicographiques, on veut produire un graphe du nombre d’occurrences des mots dans un texte.
Il y a deux fichiers, dont on peut supposer qu’on reçoit le contenu sous forme d’une seule str
chacun :
Vous devez découper le texte à analyser en mots :
\n
délimitent les mots ;.,;:!?
des mots ainsi découpés.Ensuite, vous devez compter combien de fois apparaît chaque mot dans le texte. Vous devez éviter de compter les mots à ignorer. On suppose que le texte a été écrit entièrement en minuscules.
Présentez les résultats en ordre décroissants sous la forme suivante :
1234 je
932 tu
456 mange
23 pomme
1 alambique
à savoir :
N’hésitez pas à consulter la documentation de Python, par exemple la fonction sorted
et la classe str
.
Si vous n’êtes pas convaincu-e par l’aspect “tout en minuscule”, je vous invite à consulter la fonction str.casefold
en particulier.
Faites une analyse de complexité de votre implémentation.
Testez votre programme sur le texte complet de l’Odyssée d’Homer. Téléchargez la version “Unicode (664K)”.