{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c95d8392",
   "metadata": {},
   "source": [
    "# TP 2 — Variables et structures de données\n",
    "\n",
    "Écrivez votre code dans les cellules prévues. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e553d32c",
   "metadata": {},
   "source": [
    "## Exercice 1 — Préparer le budget d'une enquête\n",
    "\n",
    "Une plateforme d'enquête fournit les informations brutes suivantes :\n",
    "\n",
    "- titre : `Usages numériques 2026` ;\n",
    "- nombre de réponses reçues : `384` ;\n",
    "- nombre de questionnaires complets : `351` ;\n",
    "- durée moyenne d'une réponse : `12.5` minutes ;\n",
    "- coût de traitement d'une réponse complète : `0.18` euro.\n",
    "\n",
    "Les quatre valeurs numériques ont été importées sous forme de chaînes de caractères."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "437f0f5b",
   "metadata": {},
   "source": [
    "1. Créez cinq variables contenant exactement les valeurs brutes ci-dessus. Affichez la valeur et le type de chacune d'elles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6c8adfc0",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c69c0467",
   "metadata": {},
   "source": [
    "2. Convertissez les quatre valeurs numériques dans les types adaptés. Conservez les valeurs converties dans de nouvelles variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5eb91376",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "de39d32b",
   "metadata": {},
   "source": [
    "3. Calculez le taux de questionnaires complets, en pourcentage, ainsi que le coût total de leur traitement."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "35bc95bb",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "977715ed",
   "metadata": {},
   "source": [
    "4. Calculez la durée totale représentée par les 384 réponses. Exprimez le résultat en heures entières et en minutes restantes à l'aide de `//` et `%`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4c76837a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "fb067366",
   "metadata": {},
   "source": [
    "5. Affichez une phrase récapitulative avec une f-string. Elle doit mentionner le titre de l'enquête, le nombre de réponses, le taux de questionnaires complets arrondi à une décimale et le coût total arrondi à deux décimales."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4631b77c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "ff200128",
   "metadata": {},
   "source": [
    "## Exercice 2 — Organiser un lot de folios\n",
    "\n",
    "On travaille sur la liste suivante : `['12r', '12v', '13r', '13v', '14r', '14v']`, qui contient des folios issus de manuscrit médiévaux."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd505d4e",
   "metadata": {},
   "source": [
    "1. Créez la liste `folios`. Affichez son premier élément, son avant-dernier élément, puis la tranche allant de `12v` à `14r` inclus."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f562247",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c01910af",
   "metadata": {},
   "source": [
    "2. La cote `13v` est erronée : remplacez-la par `13v-bis`. Ajoutez ensuite `15r` à la fin de la liste et affichez sa nouvelle longueur."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9f4148c9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "2467af8b",
   "metadata": {},
   "source": [
    "3. Associez `lot_a` à `folios` avec une simple affectation, puis ajoutez `15v` à `lot_a`. Affichez les deux listes et expliquez le résultat dans une cellule Markdown."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c4f398ec",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "21a2816f",
   "metadata": {},
   "source": [
    "4. Créez maintenant `lot_b`, une copie indépendante de `folios`. Retirez son dernier élément avec `pop()`, puis vérifiez que `folios` n'a pas été modifiée."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "808d2a5f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "698c0092",
   "metadata": {},
   "source": [
    "5. Une zone d'image est décrite par le tuple `(120, 85, 940, 1260)`, dans l'ordre `(x_min, y_min, x_max, y_max)`. Créez ce tuple, puis calculez la largeur, la hauteur et l'aire de la zone. Créez enfin un nouveau tuple représentant la même zone décalée de 10 pixels vers la droite et de 20 pixels vers le bas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "55862775",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "23a8d7d1",
   "metadata": {},
   "source": [
    "## Exercice 3 — Construire un catalogue de documents\n",
    "\n",
    "Créez un catalogue à partir des informations suivantes :\n",
    "\n",
    "| Identifiant | Titre | Année | Langue | Nombre de pages | Mots-clés |\n",
    "|---|---|---:|---|---:|---|\n",
    "| D01 | Journal de voyage | 1884 | français | 216 | voyage, correspondance |\n",
    "| D02 | Notes de terrain | 1902 | français | 148 | enquête, ethnographie |\n",
    "| D03 | Field observations | 1902 | anglais | 173 | enquête, terrain |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10cb414b",
   "metadata": {},
   "source": [
    "1. Représentez chaque document par un dictionnaire. Les mots-clés doivent être stockés dans une liste."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "909656ae",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c94ba42b",
   "metadata": {},
   "source": [
    "2. Placez les trois dictionnaires dans une liste nommée `catalogue`. À partir de cette liste, affichez le titre du deuxième document et le second mot-clé du troisième document."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79f4bcbd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "22dd9542",
   "metadata": {},
   "source": [
    "3. Une vérification porte le nombre de pages de D03 à 181. Modifiez cette valeur. Ajoutez aussi au dictionnaire de D01 la paire clé-valeur `numérisé: True`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5e3f3828",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c121a3a4",
   "metadata": {},
   "source": [
    "4. Tentez de lire la clé `cote` de D02 avec `get()` en faisant renvoyer `non renseignée` si elle est absente. Ajoutez ensuite la cote `MS-204` et recommencez la lecture."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "af85298e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "66a9cfc4",
   "metadata": {},
   "source": [
    "5. Construisez, à partir des dictionnaires, l'ensemble des langues du catalogue, l'ensemble des années représentées et l'ensemble de tous les mots-clés. Vérifiez ensuite si `latin` et `enquête` appartiennent respectivement aux ensembles adaptés."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e05e90cc",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "bc7d5f47",
   "metadata": {},
   "source": [
    "## Exercice 4 — Restructurer les données d'un corpus\n",
    "\n",
    "Les données d'un petit corpus ont été saisies dans plusieurs listes parallèles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "17e9198b",
   "metadata": {},
   "outputs": [],
   "source": [
    "identifiants = [\"T01\", \"T02\", \"T03\", \"T04\"]\n",
    "titres = [\"Lettre de Lyon\", \"Chronique de Metz\", \"Discours de Paris\", \"Lettre de Metz\"]\n",
    "annees = [\"1872\", \"1891\", \"1888\", \"1904\"]\n",
    "villes = [\"Lyon\", \"Metz\", \"Paris\", \"Metz\"]\n",
    "genres = [\"lettre\", \"chronique\", \"discours\", \"lettre\"]\n",
    "nombres_mots = [\"1840\", \"3260\", \"2715\", \"2210\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52ce00cc",
   "metadata": {},
   "source": [
    "1. Convertissez toutes les années et tous les nombres de mots en entiers, puis remplacez les deux listes d'origine par les listes converties."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d5157d9b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "9f6cfb9c",
   "metadata": {},
   "source": [
    "2. Construisez quatre dictionnaires, un par texte, puis rassemblez-les dans une liste `corpus`. Chaque dictionnaire doit posséder les clés `id`, `titre`, `annee`, `ville`, `genre` et `nombre_mots`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7a272675",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "4e2d2763",
   "metadata": {},
   "source": [
    "3. Calculez le nombre total de mots du corpus, sa taille moyenne par texte et l'écart de longueur entre le texte le plus long et le texte le plus court."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "67367105",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "1494d6c8",
   "metadata": {},
   "source": [
    "4. Construisez l'ensemble des villes et l'ensemble des genres. Utilisez leurs longueurs pour déterminer combien de villes et de genres différents sont représentés."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "afd44dd4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "ccbc9478",
   "metadata": {},
   "source": [
    "5. Créez un dictionnaire `index` dont les clés sont les quatre identifiants et dont chaque valeur est un tuple `(titre, année)`. Utilisez ensuite uniquement `index` pour afficher une phrase indiquant le titre et l'année de T03."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5f3e7668",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
