2018-2019/PreStSauveur/Programmation/4-Simulations_repetitions.ipynb

233 lines
8.2 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simulation et évaluation\n",
"\n",
"Dans ce TP les consignes en orange correspondent à consignes qui seront évaluées. Comme d'habitude, vous avez tout à faire le droit d'échanger avec vos voisins et d'aller chercher des informations dans les TPs précédents.\n",
"\n",
"## Echauffement et pyramide\n",
"\n",
"D'après wikipedia:\n",
"\n",
" La pyramide de Khéops ou grande pyramide de Gizeh est un monument construit par les Égyptiens de l'Antiquité, formant une pyramide à base carrée. Tombeau présumé du pharaon Khéops, elle fut édifiée il y a plus de 4 500 ans, sous la IVe dynastie, au centre du complexe funéraire de Khéops se situant à Gizeh en Égypte. \n",
" \n",
" Ce monument forme une pyramide à base carrée de 440 coudées royales anciennes, soit environ 230,5 mètres. Il est constitué d'environ 2 000 000 blocs de pierre calcaire d'environ 2,5tonnes chacuns. \n",
" \n",
"\n",
"<div style=\"background-color: #fa8258;\">\n",
"Ecrire un programme qui présente cette pyramide. Il devra aussi calculer la périmètre de la base de la pyramide ainsi qu'une estimation de son poid total.\n",
" \n",
"Critères d'évaluations:\n",
"<ul>\n",
" <li> Réspect de la consigne (présentation et grandeurs à calculer)</li>\n",
" <li> Utilisation de variables pour le calcul du périmètre et du poids de la pyramide. </li>\n",
" <li> <strong>Bonus:</strong> le calcule du périmètre se fera avec une fonction.\n",
"</ul>\n",
" <strong> Sauver votre programme dans \"Ordinateur > Ma classe > Restitution de Devoirs\" en le nommant</strong> <code>nom-prénom-pyramide.py</code> (Mettre les 2 noms de familles si vous travaillez à 2).\n",
"</div> \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Simulation de dés\n",
"\n",
"<div style=\"background-color: #fa8258;\">\n",
"Copier-coller le bloc le programme suivant. Puis commenter (avec #) pour expliquer ce que fait chaque ligne.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from random import randint # Import de randint qui génère un entier aléatoire entre 2 nombres.\n",
"print(\"--- Simulateur de lancer de dés ---\")\n",
"print(\"Première situation\")\n",
"de1 = randint(1, 6)\n",
"de2 = randint(1, 10)\n",
"resulat1 = de1 * de2\n",
"print(\"La première situation donne\", resulat1)\n",
"print(\"Deuxième situation\")\n",
"resulat2 = randint(1, 8) * randint(1, 8)\n",
"print(\"La deuxième situation donne\", resulat2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div style=\"background-color: #fa8258;\">\n",
"Transformer le programme pour qu'il simule les deux situations suivantes:\n",
"<ul>\n",
" <li> Situation 1: On fait la somme des résultats des lancers de 2 dés à 18 faces.</li>\n",
" <li> Situation 2: On fait le produit des résultats des lancers de deux dés à 3 faces et d'un dé à 4 faces.</li>\n",
"</ul>\n",
"</br>\n",
"Vous ètes invités à apporter toutes les améliorations qui vous semblent interessantes.\n",
"</br>\n",
"</br>\n",
"Vous serez noté suivant les critères suivants:\n",
"<ul>\n",
" <li> Qualité des commentaires qui expliquent le fonctionnement du programme.</li>\n",
" <li> Fonctionnement de votre programme et respect de la consigne.</li>\n",
" <li> Qualité des améliorations apportées.</li>\n",
"</ul>\n",
"<strong> Sauver votre programme dans \"Ordinateur > Ma classe > Restitution de Devoirs\" en le nommant</strong> <code>nom-prénom-simlulation.py</code> (Mettre les 2 noms de familles si vous travaillez à 2).\n",
"</div> \n",
" \n",
"- [ ] Copier-coller le bloc à la suite. Puis commenter."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"if resulat1 > resulat2:\n",
" print(\"La première situation gagne\")\n",
"else:\n",
" print(\"La deuxième situation gagne\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [ ] Quelle situation semble donner le score le plus grand?\n",
"- [ ] Ouvrir un nouveau fichier, copier-coller le programme suivant puis commenter chaque ligne pour expliquer son fonctionnement."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from random import randint\n",
"\n",
"print(\"--- Simulateur de lancer de dés ---\")\n",
"\n",
"for i in range(10):\n",
" print(\"---------------------\")\n",
" print(\"# Simulation numéro\", i+1)\n",
" \n",
" print(\"Première situation\")\n",
" de1 = randint(1, 6)\n",
" de2 = randint(1, 10)\n",
" resulat1 = de1 * de2\n",
" print(\"La première situation donne\", resulat1)\n",
" \n",
" print(\"Deuxième situation\")\n",
" resulat2 = randint(1, 8) * randint(1, 8)\n",
" print(\"La deuxième situation donne\", resulat2)\n",
" \n",
" if resulat1 > resulat2:\n",
" print(\"-> La première situation gagne.\")\n",
" else:\n",
" print(\"-> La deuxième situation gagne.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"Pour chaque problème qui suit, avant de vous lancer dans sa résolution, réfléchissez à la réponse que vous donneriez intuitivement.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dés de Efrons\n",
"\n",
"On dispose de 3 dés à 6 faces équilibrés avec les nombres suivants sur leurs faces.\n",
"\n",
"- A : 1, 6, 11, 12, 13, 14\n",
"- B : 2, 3, 4, 15, 16, 17\n",
"- C : 5, 7, 8, 9, 10, 18\n",
"\n",
"**On souhaite savoir si un dé est plus avantageux que les autres.**\n",
"<div style=\"background-color: #fa8258;\">\n",
"\n",
"**Vous enregistrez votre programme dans \"Ordinateur > Ma classe > Restitution de Devoirs\" sous le nom** `nom-prénom-deEfron.py`\n",
"\n",
"</div>\n",
"\n",
"Proposition d'étapes pour répondre à cette question\n",
"\n",
"1. Simuler le lancer de ces 3 dés.\n",
"2. Simuler en même temps les dés A et B. Lequel semble donner le meilleur score?\n",
"3. Faire la même chose avec les dés A et C puis avec les dés B et C.\n",
"4. Y a-t-il un dé plus fort que les autres?\n",
"5. Simuler le lancer des 3 dés en même temps lequel semble le plus fort?\n",
"\n",
"Astuces pour simuler les lancés de dés:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from random import choice\n",
"# On définit les valeurs inscrites sur chaque face\n",
"deA = [1, 6, 11, 12, 13, 14]\n",
"# Python choisi une face au hasard\n",
"print(choice(deA))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Les dés des Dudu\n",
"\n",
"Dans [le problème des dés des Dudu](https://mathix.org/video/problemes_ouverts/PB_DUDU/PBDUDU7-d%C3%A9.mp4), les deux frères ont chacun deux dés différents:\n",
"\n",
"- Le frère 1: a un dé qui va de 0 à 9 et un dé de 1 à 8.\n",
"- Le frère 2: a un dé de 1 à 12 et un dé classique 1 à 6.\n",
"\n",
"**On veut savoir qui sera le premier à faire 17 en ajoutant le résultat de ses 2 dés.**\n",
"\n",
"À vous de simuler cette situation pour répondre à la question."
]
}
],
"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.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}