ajout representation construits
This commit is contained in:
279
representation_construits/chapitre_2/td/TD.ipynb
Normal file
279
representation_construits/chapitre_2/td/TD.ipynb
Normal file
@@ -0,0 +1,279 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# TD - Les dictionnaires"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 1 - Fruits\n",
|
||||
"\n",
|
||||
"On considère le dictionnaire suivant qui contient différents fruits ainsi que leurs quantités."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fruits = {\"pommes\": 8, \"melons\": 3, \"poires\": 6}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"1. Quelle instruction permet d'accéder au nombre de melons ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"2. On a acheté 16 clémentines et utilisé 4 pommes pour faire une tarte. Quelles instructions permettent de mettre à jour le dictionnaire ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 2 - Encore des fruits"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Répondez aux questions suivantes __sans exécuter les scripts proposés__. \n",
|
||||
"\n",
|
||||
"_Vous les exécuterez pour vérifier vos réponses._\n",
|
||||
"\n",
|
||||
"1. Qu'affiche le programme suivant ?\n",
|
||||
"```python\n",
|
||||
"fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}\n",
|
||||
"for c in fruits.keys():\n",
|
||||
" print(c)\n",
|
||||
"```\n",
|
||||
"2. Qu'affiche le programme suivant ?\n",
|
||||
"```python\n",
|
||||
"fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}\n",
|
||||
"for cle, valeur in fruits.items():\n",
|
||||
" print(cle, \"->\", valeur)\n",
|
||||
"```\n",
|
||||
"3. Qu'affiche le programme suivant ?\n",
|
||||
"```python\n",
|
||||
"fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}\n",
|
||||
"for v in fruits.values():\n",
|
||||
" print(v)\n",
|
||||
"```"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 3 - Agenda\n",
|
||||
"\n",
|
||||
"Dans un agenda, un contact est modélisé par un dictionnaire :\n",
|
||||
"\n",
|
||||
"- La clé du dictionnaire est le nom des contacts. \n",
|
||||
"- La valeur du dictionnaire est un tuple dont la première valeur est leur âge (type int) et la seconde leur ville natale (str).\n",
|
||||
"\n",
|
||||
"Voici une petite liste de contact :\n",
|
||||
"\n",
|
||||
"* Pierre a 37 ans et est né à Lille.\n",
|
||||
"* Zoé a 21 ans et est née à Nice.\n",
|
||||
"* Ali a 54 ans et est né à Bordeaux.\n",
|
||||
"* Aymeric a 72 ans et est né à Nice.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"1. Définissez le dictionnaire de contacts.\n",
|
||||
"2. Donnez les commandes pour :\n",
|
||||
" 1. accéder à l'âge de Zoé\n",
|
||||
" 2. accéder à la ville natale d'Ali.\n",
|
||||
" 3. décider si 'Jean' est dans le dictionnaire ou pas.\n",
|
||||
"3. Écrire le prédicat `est_present(dic, nom)` qui renvoie `True` si le _nom_ est présent dans le dictionnaire _dic_ e t`False` sinon.\n",
|
||||
"\n",
|
||||
"4. Écrire la fonction `renvoyer_age(dic, nom)` qui, si le _nom_ est présent dans le dictionnaire _dic_, renvoie son âge.\n",
|
||||
"\n",
|
||||
"5. Écrire la fonction `renvoyer_ville(dic, nom)` qui, si le _nom_ est présent dans le dictionnaire _dic_, renvoie sa ville natale.\n",
|
||||
"\n",
|
||||
"6. Écrire la fonction `renvoyer_noms(dic, ville)` qui renvoie un tableau de tous les noms dont la ville de naissance est _ville_.\n",
|
||||
"\n",
|
||||
"7. Écrire la procédure `ajouter(dic, nom, age, ville)` qui, si le _nom_ est n'est pas présent dans le dictionnaire _dic_, l'y ajoute.\n",
|
||||
"\n",
|
||||
"> _Remarques :_\n",
|
||||
">\n",
|
||||
"> * Documentez les fonction\n",
|
||||
"> * Réalisez les doctests significatifs."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 1\n",
|
||||
"\n",
|
||||
"# Question 2.A\n",
|
||||
"\n",
|
||||
"# Question 2.B\n",
|
||||
"\n",
|
||||
"# Question 2.C\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 4 - le SCRABBLE\n",
|
||||
"\n",
|
||||
"Voici un descriptif des valeurs des lettres au scrabble français. \n",
|
||||
"\n",
|
||||
"- 0 point : **Joker** ×2 (appelés en français *jokers* ou *lettres blanches*)\n",
|
||||
"- *1 point* : **E** ×15, **A** ×9, **I** ×8, **N** ×6, **O** ×6, **R** ×6, **S** ×6, **T** ×6, **U** ×6, **L** ×5\n",
|
||||
"- *2 points* : **D** ×3, **M** ×3, **G** ×2\n",
|
||||
"- *3 points* : **B** ×2, **C** ×2, **P** ×2\n",
|
||||
"- *4 points* : **F** ×2, **H** ×2, **V** ×2\n",
|
||||
"- *8 points* : **J** ×1, **Q** ×1\n",
|
||||
"- *10 points* : **K** ×1, **W** ×1, **X** ×1, **Y** ×1, **Z** ×1\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"1. Définissez un dictionnaire _score_ qui prend les lettres majuscules en clés et leur score en valeur\n",
|
||||
"2. Écrire une fonction `calculer_score` qui prend une chaîne de caractère _mot_ en paramètre et renvoie le score du mot s'il est possible de l'écrire avec les lettres du scrabble et `None` sinon.\n",
|
||||
"3. Écrire une fonction `calculer_scores` qui prend un tableau de _mots_ et renvoie un tableau de score de chaque mot.\n",
|
||||
"\n",
|
||||
"> _Remarques :_\n",
|
||||
">\n",
|
||||
"> * Documentez la fonction\n",
|
||||
"> * Réalisez les doctests significatifs.\n",
|
||||
"> * Pour tester vos fonctions, il est possible d'utiliser la liste de mots suivante :\n",
|
||||
"\n",
|
||||
"```python\n",
|
||||
"liste_mots = ['extenue', 'ligner', 'serier', 'delasse', 'doperas', 'drapes', 'gelee', 'doucir', 'lamparo', 'salee', 'gueri', 'mulots', 'trolley', 'houppe', 'hesitez', 'vogues', 'embelli', 'etonnez', 'mers', 'riviere', 'risquer', 'grogner', 'postale', 'beler', 'lofer', 'rincent', 'boni', 'charter', 'censeur', 'glaise','sauts', 'striee', 'perclus', 'dessous', 'tireras', 'gommant', 'cooptes', 'bombyx', 'gauches', 'filiere', 'devoree', 'viriez', 'murit', 'miteux', 'empenne', 'soudez', 'cochers', 'dejoua', 'tuer', 'present']\n",
|
||||
"```"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 3"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.7"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
394
representation_construits/chapitre_2/td/correction.ipynb
Normal file
394
representation_construits/chapitre_2/td/correction.ipynb
Normal file
@@ -0,0 +1,394 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# TD - Les dictionnaires"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 1 - Fruits\n",
|
||||
"\n",
|
||||
"On considère le dictionnaire suivant qui contient différents fruits ainsi que leurs quantités."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fruits = {\"pommes\": 8, \"melons\": 3, \"poires\": 6}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"1. Quelle instruction permet d'accéder au nombre de melons ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fruits['melons']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"2. On a acheté 16 clémentines et utilisé 4 pommes pour faire une tarte. Quelles instructions permettent de mettre à jour le dictionnaire ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fruits['clementines'] = 16\n",
|
||||
"fruits['pommes'] = fruits['pommes'] - 4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 2 - Encore des fruits"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Répondez aux questions suivantes __sans exécuter les scripts proposés__. \n",
|
||||
"\n",
|
||||
"_Vous les exécuterez pour vérifier vos réponses._\n",
|
||||
"\n",
|
||||
"1. Qu'affiche le programme suivant ?\n",
|
||||
"```python\n",
|
||||
"fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}\n",
|
||||
"for c in fruits.keys():\n",
|
||||
" print(c)\n",
|
||||
"```\n",
|
||||
"2. Qu'affiche le programme suivant ?\n",
|
||||
"```python\n",
|
||||
"fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}\n",
|
||||
"for cle, valeur in fruits.items():\n",
|
||||
" print(cle, \"->\", valeur)\n",
|
||||
"```\n",
|
||||
"3. Qu'affiche le programme suivant ?\n",
|
||||
"```python\n",
|
||||
"fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}\n",
|
||||
"for v in fruits.values():\n",
|
||||
" print(v)\n",
|
||||
"```"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 3 - Agenda\n",
|
||||
"\n",
|
||||
"Dans un agenda, un contact est modélisé par un dictionnaire :\n",
|
||||
"\n",
|
||||
"- La clé du dictionnaire est le nom des contacts. \n",
|
||||
"- La valeur du dictionnaire est un tuple dont la première valeur est leur âge (type int) et la seconde leur ville natale (str).\n",
|
||||
"\n",
|
||||
"Voici une petite liste de contact :\n",
|
||||
"\n",
|
||||
"* Pierre a 37 ans et est né à Lille.\n",
|
||||
"* Zoé a 21 ans et est née à Nice.\n",
|
||||
"* Ali a 54 ans et est né à Bordeaux.\n",
|
||||
"* Aymeric a 72 ans et est né à Nice.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"1. Définissez le dictionnaire de contacts.\n",
|
||||
"2. Donnez les commandes pour :\n",
|
||||
" 1. accéder à l'âge de Zoé\n",
|
||||
" 2. accéder à la ville natale d'Ali.\n",
|
||||
" 3. décider si 'Jean' est dans le dictionnaire ou pas.\n",
|
||||
"3. Écrire le prédicat `est_present(dic, nom)` qui renvoie `True` si le _nom_ est présent dans le dictionnaire _dic_ e t`False` sinon.\n",
|
||||
"\n",
|
||||
"4. Écrire la fonction `renvoyer_age(dic, nom)` qui, si le _nom_ est présent dans le dictionnaire _dic_, renvoie son âge.\n",
|
||||
"\n",
|
||||
"5. Écrire la fonction `renvoyer_ville(dic, nom)` qui, si le _nom_ est présent dans le dictionnaire _dic_, renvoie sa ville natale.\n",
|
||||
"\n",
|
||||
"6. Écrire la fonction `renvoyer_noms(dic, ville)` qui renvoie un tableau de tous les noms dont la ville de naissance est _ville_.\n",
|
||||
"\n",
|
||||
"7. Écrire la procédure `ajouter(dic, nom, age, ville)` qui, si le _nom_ est n'est pas présent dans le dictionnaire _dic_, l'y ajoute.\n",
|
||||
"\n",
|
||||
"> _Remarques :_\n",
|
||||
">\n",
|
||||
"> * Documentez les fonction\n",
|
||||
"> * Réalisez les doctests significatifs."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"21\n",
|
||||
"Bordeaux\n",
|
||||
"False\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Question 1\n",
|
||||
"contacts = { 'Pierre' : (37, 'Lille'), 'Zoé' : (21, 'Nice'), 'Ali' : (54, 'Bordeaux'), 'Aymeric' : (72, 'Lorient')}\n",
|
||||
"\n",
|
||||
"# Question 2.A\n",
|
||||
"print(contacts['Zoé'][0])\n",
|
||||
"\n",
|
||||
"# Question 2.B\n",
|
||||
"print(contacts['Ali'][1])\n",
|
||||
"\n",
|
||||
"# Question 2.C\n",
|
||||
"print('Jean' in contacts)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 3\n",
|
||||
"def est_present(dic, nom):\n",
|
||||
" '''\n",
|
||||
" Détermine si un nom est présent dans le dictionnaire\n",
|
||||
" :param dic: (dict) un dictionnaire\n",
|
||||
" :param nom: (str) un nom de contact\n",
|
||||
" :return: (bool) True si le nom est dans le dictionnaire, False sinon\n",
|
||||
" :doctest:\n",
|
||||
" >>> est_present({}, 'Thomas')\n",
|
||||
" False\n",
|
||||
" >>> est_present({ 'Thomas' : (15, 'Cannes')}, 'Thomas')\n",
|
||||
" True\n",
|
||||
" >>> est_present({ 'Tham' : (15, 'Cannes')}, 'Thomas')\n",
|
||||
" False\n",
|
||||
" '''\n",
|
||||
" return nom in dic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 4\n",
|
||||
"def renvoyer_age(dic, nom):\n",
|
||||
" '''\n",
|
||||
" Renvoie l'âge du contact, s'il est présent dans le dictionnaire\n",
|
||||
" :param dic: (dict) un dictionnaire\n",
|
||||
" :param nom: (str) un nom de contact\n",
|
||||
" :return: (int) L'âge du contact\n",
|
||||
" :doctest:\n",
|
||||
" >>> renvoyer_age({}, 'Thomas')\n",
|
||||
" None\n",
|
||||
" >>> renvoyer_age({ 'Thomas' : (15, 'Cannes')}, 'Thomas')\n",
|
||||
" 15\n",
|
||||
" '''\n",
|
||||
" if est_present(dic, nom):\n",
|
||||
" return dic[nom][0]\n",
|
||||
" return None"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 5\n",
|
||||
"def renvoyer_ville(dic, nom):\n",
|
||||
" '''\n",
|
||||
" Renvoie la ville natale du contact, s'il est présent dans le dictionnaire\n",
|
||||
" :param dic: (dict) un dictionnaire\n",
|
||||
" :param nom: (str) un nom de contact\n",
|
||||
" :return: (str) La ville natale du contact\n",
|
||||
" :doctest:\n",
|
||||
" >>> renvoyer_ville({}, 'Thomas')\n",
|
||||
" None\n",
|
||||
" >>> renvoyer_ville({ 'Thomas' : (15, 'Cannes')}, 'Thomas')\n",
|
||||
" 'Cannes'\n",
|
||||
" '''\n",
|
||||
" if est_present(dic, nom):\n",
|
||||
" return dic[nom][1]\n",
|
||||
" return None"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 6\n",
|
||||
"def renvoyer_noms(dic, ville):\n",
|
||||
" '''\n",
|
||||
" Renvoie un tableau de tous les noms dont la ville de naissance est ville\n",
|
||||
" :param dic: (dict) un dictionnaire\n",
|
||||
" :param ville: (str) ville natale des contacts\n",
|
||||
" :return: (list) tableau de tous les noms de contacts nés dans la ville\n",
|
||||
" :doctest:\n",
|
||||
" >>> renvoyer_noms({}, 'Nice')\n",
|
||||
" []\n",
|
||||
" >>> renvoyer_noms({ 'Pierre' : (37, 'Lille'), 'Zoé' : (21, 'Nice'), 'Ali' : (54, 'Bordeaux'), 'Aymeric' : (72, 'Lorient')}\n",
|
||||
", 'Nice')\n",
|
||||
" ['Zoé', 'Aymeric']\n",
|
||||
" '''\n",
|
||||
" noms = []\n",
|
||||
" for contact in dic:\n",
|
||||
" if dic[contact][1] == ville:\n",
|
||||
" noms.append(contact)\n",
|
||||
" return noms"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 7\n",
|
||||
"def ajouter(dic, nom, age, ville):\n",
|
||||
" '''\n",
|
||||
" Ajoute un contact s'il n'est pas présent dans le dictionnaire\n",
|
||||
" :param dic: (dict) un dictionnaire\n",
|
||||
" :param nom: (str) nom du contact\n",
|
||||
" :param age: (int) age du contact\n",
|
||||
" :param ville: (str) ville natale du contact\n",
|
||||
" :return: (None)\n",
|
||||
" :Effet de bord: Ajoute le contact au dictionnaire\n",
|
||||
" '''\n",
|
||||
" if not est_present(dic, nom):\n",
|
||||
" dic[nom] = (age, ville)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercice 4 - le SCRABBLE\n",
|
||||
"\n",
|
||||
"Voici un descriptif des valeurs des lettres au scrabble français. \n",
|
||||
"\n",
|
||||
"- 0 point : **Joker** ×2 (appelés en français *jokers* ou *lettres blanches*)\n",
|
||||
"- *1 point* : **E** ×15, **A** ×9, **I** ×8, **N** ×6, **O** ×6, **R** ×6, **S** ×6, **T** ×6, **U** ×6, **L** ×5\n",
|
||||
"- *2 points* : **D** ×3, **M** ×3, **G** ×2\n",
|
||||
"- *3 points* : **B** ×2, **C** ×2, **P** ×2\n",
|
||||
"- *4 points* : **F** ×2, **H** ×2, **V** ×2\n",
|
||||
"- *8 points* : **J** ×1, **Q** ×1\n",
|
||||
"- *10 points* : **K** ×1, **W** ×1, **X** ×1, **Y** ×1, **Z** ×1\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"1. Définissez un dictionnaire _score_ qui prend les lettres majuscules en clés et leur score en valeur\n",
|
||||
"2. Écrire une fonction `calculer_score` qui prend une chaîne de caractère _mot_ en paramètre et renvoie le score du mot s'il est possible de l'écrire avec les lettres du scrabble et `None` sinon.\n",
|
||||
"3. Écrire une fonction `calculer_scores` qui prend un tableau de _mots_ et renvoie un tableau de score de chaque mot.\n",
|
||||
"\n",
|
||||
"> _Remarques :_\n",
|
||||
">\n",
|
||||
"> * Documentez la fonction\n",
|
||||
"> * Réalisez les doctests significatifs.\n",
|
||||
"> * Pour tester vos fonctions, il est possible d'utiliser la liste de mots suivante :\n",
|
||||
"\n",
|
||||
"```python\n",
|
||||
"liste_mots = ['extenue', 'ligner', 'serier', 'delasse', 'doperas', 'drapes', 'gelee', 'doucir', 'lamparo', 'salee', 'gueri', 'mulots', 'trolley', 'houppe', 'hesitez', 'vogues', 'embelli', 'etonnez', 'mers', 'riviere', 'risquer', 'grogner', 'postale', 'beler', 'lofer', 'rincent', 'boni', 'charter', 'censeur', 'glaise','sauts', 'striee', 'perclus', 'dessous', 'tireras', 'gommant', 'cooptes', 'bombyx', 'gauches', 'filiere', 'devoree', 'viriez', 'murit', 'miteux', 'empenne', 'soudez', 'cochers', 'dejoua', 'tuer', 'present']\n",
|
||||
"```"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 1\n",
|
||||
"score = {'A' : 1, 'B' : 3, 'C': 3, 'D': 2, 'E' : 1, 'F' : 4, 'G': 2, 'H': 4, 'I': 1, 'J': 8, 'K': 10, 'L': 1, 'M': 2, 'N': 1, 'O': 1, 'P': 3, 'Q': 8, 'R': 1, 'S': 1, 'T': 1, 'U': 1, 'V': 4, 'W': 10, 'X': 10, 'Y': 10, 'Z': 10}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 2\n",
|
||||
"def calculer_score(mot):\n",
|
||||
" '''\n",
|
||||
" Détermine le score d'un mot\n",
|
||||
" :param mot: (str) un mot\n",
|
||||
" :return: (int) Le score du mot\n",
|
||||
" '''\n",
|
||||
" _score = 0\n",
|
||||
" for lettre in mot.upper():\n",
|
||||
" _score += score[lettre]\n",
|
||||
" return _score"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Question 3\n",
|
||||
"def calculer_scores(mots):\n",
|
||||
" '''\n",
|
||||
" Détermine les scores d'un tableau de mots\n",
|
||||
" :param mot: (str) un mot\n",
|
||||
" :return: (list) Le tableau des scores des mots\n",
|
||||
" '''\n",
|
||||
" scores = []\n",
|
||||
" for mot in mots:\n",
|
||||
" scores.append(calculer_score(mot))\n",
|
||||
" return scores"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.7"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
Reference in New Issue
Block a user