From c92d7bbbb74ee0164e4805ee0d2088023a193c90 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sun, 22 Jan 2023 10:53:34 +0100 Subject: [PATCH] =?UTF-8?q?Feat(NSI):=20D=C3=A9but=20du=20chapitre=20sur?= =?UTF-8?q?=20les=20listes=20et=20les=20tuples?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1NSI/06_Listes_et_tuples/1B.tex | 14 + .../Découverte des listes et des tuples.ipynb | 585 ++++++++++++++++++ 1NSI/06_Listes_et_tuples/exercises.tex | 174 ++++++ 1NSI/06_Listes_et_tuples/index.rst | 28 + 1NSI/06_Listes_et_tuples/plan_de_travail.pdf | Bin 0 -> 39029 bytes 1NSI/06_Listes_et_tuples/plan_de_travail.tex | 45 ++ .../06_Listes_et_tuples/scripts/QCM_double.py | 6 + 1NSI/06_Listes_et_tuples/scripts/QCM_f.py | 2 + .../06_Listes_et_tuples/scripts/QCM_filtre.py | 6 + 1NSI/06_Listes_et_tuples/scripts/QCM_somme.py | 5 + 1NSI/06_Listes_et_tuples/scripts/QCM_t.py | 2 + .../scripts/QCM_tictactoe.py | 3 + 1NSI/06_Listes_et_tuples/scripts/QCM_tuple.py | 2 + 1NSI/06_Listes_et_tuples/solutions.tex | 28 + 14 files changed, 900 insertions(+) create mode 100644 1NSI/06_Listes_et_tuples/1B.tex create mode 100644 1NSI/06_Listes_et_tuples/Découverte des listes et des tuples.ipynb create mode 100644 1NSI/06_Listes_et_tuples/exercises.tex create mode 100644 1NSI/06_Listes_et_tuples/index.rst create mode 100644 1NSI/06_Listes_et_tuples/plan_de_travail.pdf create mode 100644 1NSI/06_Listes_et_tuples/plan_de_travail.tex create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_double.py create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_f.py create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_filtre.py create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_somme.py create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_t.py create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_tictactoe.py create mode 100644 1NSI/06_Listes_et_tuples/scripts/QCM_tuple.py create mode 100644 1NSI/06_Listes_et_tuples/solutions.tex diff --git a/1NSI/06_Listes_et_tuples/1B.tex b/1NSI/06_Listes_et_tuples/1B.tex new file mode 100644 index 0000000..c38d7e8 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/1B.tex @@ -0,0 +1,14 @@ +\documentclass[a4paper,10pt]{article} +\usepackage{myXsim} + +\author{Benjamin Bertrand} +\title{Listes et tuples - Cours} +\date{janvier 2023} + +\pagestyle{empty} + +\begin{document} + +\maketitle + +\end{document} diff --git a/1NSI/06_Listes_et_tuples/Découverte des listes et des tuples.ipynb b/1NSI/06_Listes_et_tuples/Découverte des listes et des tuples.ipynb new file mode 100644 index 0000000..43ab493 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/Découverte des listes et des tuples.ipynb @@ -0,0 +1,585 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ed3c16da", + "metadata": {}, + "source": [ + "# Découverte des listes et des tuples\n", + "\n", + "## Mise en situation\n", + "\n", + "On souhaite écrire un programme qui fait une moyenne de notes.\n", + "\n", + "1. Écrire une fonction `moyenne3` qui prend en argument 3 notes et qui renvoie la moyenne de ces trois notes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "352fd339", + "metadata": {}, + "outputs": [], + "source": [ + "# tests\n", + "assert moyenne3(1, 2, 3) == 2\n", + "assert moyenne3(10, 0, 5) == 5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ddd2db52", + "metadata": {}, + "outputs": [], + "source": [ + "# fonction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e58998e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "97396105", + "metadata": {}, + "source": [ + "2. Écrire une fonction `moyenne_question` qui prend en argument un nombre de notes puis renvoie la moyenne des notes entrée par l'utilisateur (avec input)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4dd1cb77", + "metadata": {}, + "outputs": [], + "source": [ + "# pas de tests à cause de l'utilisation du input" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "572a9917", + "metadata": {}, + "outputs": [], + "source": [ + "# fonction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "af965cbe", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "91486d89", + "metadata": {}, + "source": [ + "3. On voudrait maintenant écrire une fonction qui prend en argument plusieurs notes (qu'on ne connait pas à l'avance) et qui renvoie la moyenne de ces notes. Quels sont les obstacles qui empêchent de réaliser une telle fonction?" + ] + }, + { + "cell_type": "raw", + "id": "ac18a2ae", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "id": "28501a12", + "metadata": {}, + "source": [ + "## Les listes\n", + "\n", + "Les `list` sont un autre type de variable (au même titre que les `int`, `float`...). Ils ont la particularité de stocker un nombre arbitraire de variables. En voici des exemples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c8dd096", + "metadata": {}, + "outputs": [], + "source": [ + "liste1 = [1, 2, 3, 4, 5]\n", + "liste2 = [\"a\", \"c\" \"uio\", \"éé\"]\n", + "liste3 = [-1, 2.2, \"uio\", 10, 100, \"1000\"] " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28c340b2", + "metadata": {}, + "outputs": [], + "source": [ + "print(liste1)\n", + "print(liste2)\n", + "print(liste3)" + ] + }, + { + "cell_type": "markdown", + "id": "9dd742c8", + "metadata": {}, + "source": [ + "### Accéder à un élément de liste\n", + "\n", + "Pour accéder à un élément particulier d'une liste, on utilise les crochets`[]`.\n", + "\n", + "1. Deviner ce qui va être afficher par les commandes ci-dessous avant de l'exécuter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87fc0d29", + "metadata": {}, + "outputs": [], + "source": [ + "print(liste1[3])\n", + "print(liste2[2])\n", + "print(liste3[0])\n", + "print(liste1[-1])" + ] + }, + { + "cell_type": "markdown", + "id": "61cb8afe", + "metadata": {}, + "source": [ + "2. Écrire les commandes pour accéder au nombre 2 de la liste1, \"éé\" de la liste2 et \"uio\" de la liste3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f11b02a8", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "cadb6818", + "metadata": {}, + "source": [ + "3. Que se passe-t-il quand on essayer d'accéder à une valeur qui n'existe pas?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37903285", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "raw", + "id": "9a0e4586", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "id": "da97681e", + "metadata": {}, + "source": [ + "4. On peut aussi modifier un élément d'une liste" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f594935a", + "metadata": {}, + "outputs": [], + "source": [ + "liste1[1] = \"azert\"\n", + "print(list1)" + ] + }, + { + "cell_type": "markdown", + "id": "bd595043", + "metadata": {}, + "source": [ + "5. Construire une liste avec les nombres pairs inférieur à 10. Puis modifier la pour que les multiples de 4 soient remplacés par \"a\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4677cbb0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "f08d4c53", + "metadata": {}, + "source": [ + "### Ajouter/supprimer des éléments\n", + "\n", + "Pour ajouter des éléments, on utilise la méthode `.append(...)`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ff4e90a0", + "metadata": {}, + "outputs": [], + "source": [ + "liste3 = [-1, 2.2, \"uio\", 10, 100, \"1000\"]\n", + "print(liste3)\n", + "liste3.append(\"nsi\")\n", + "print(liste3)\n", + "liste3.append(\"azert\")\n", + "print(liste3)" + ] + }, + { + "cell_type": "markdown", + "id": "8a0f012c", + "metadata": {}, + "source": [ + "1. Écrire une fonction `table` qui prend en argument un nombre `a` et une longueure `n` et qui renvoie les multiples de a de 0 à a*n." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59a55bc2", + "metadata": {}, + "outputs": [], + "source": [ + "# Testes\n", + "assert table(2, 10) == [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", + "assert table(3, 5) == [0, 3, 6, 9, 12, 15]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "69fb46d6", + "metadata": {}, + "outputs": [], + "source": [ + "# Fonction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "04e04b5d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "36258d27", + "metadata": {}, + "source": [ + "Pour enlever un élément, on utilise la méthode `.remove(...)`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "549a996d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1, 2.2, 'uio', 10, 100, 10]\n", + "[-1, 2.2, 10, 100, 10]\n", + "[-1, 2.2, 100, 10]\n" + ] + } + ], + "source": [ + "liste3 = [-1, 2.2, \"uio\", 10, 100, 10]\n", + "print(liste3)\n", + "liste3.remove(\"uio\")\n", + "print(liste3)\n", + "liste3.remove(10)\n", + "print(liste3)" + ] + }, + { + "cell_type": "markdown", + "id": "0bc67d3c", + "metadata": {}, + "source": [ + "### Longueur d'une liste\n", + "\n", + "Pour mesurer la longueur d'une liste, on utilise la fonction `len(...)`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9c809de2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5\n", + "3\n", + "6\n" + ] + } + ], + "source": [ + "liste1 = [1, 2, 3, 4, 5]\n", + "print(len(liste1))\n", + "liste2 = [\"a\", \"c\" \"uio\", \"éé\"]\n", + "print(len(liste2))\n", + "liste3 = [-1, 2.2, \"uio\", 10, 100, \"1000\"] \n", + "print(len(liste3))" + ] + }, + { + "cell_type": "markdown", + "id": "88060355", + "metadata": {}, + "source": [ + "1. Écrire une fonction `somme` qui prend en argument une liste de nombres et qui renvoie la somme des nombres" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19510eb8", + "metadata": {}, + "outputs": [], + "source": [ + "# Tests\n", + "assert somme([1, 2, 3]) == 6\n", + "assert somme([1]) == 1\n", + "assert somme([1, 5, 10, 0, 4]) == 20\n", + "assert somme([1.2, 1, 1.5]) == 3.7" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "38c79fed", + "metadata": {}, + "outputs": [], + "source": [ + "# Fonction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4cd9cbf", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "3e7e0a3a", + "metadata": {}, + "source": [ + "2. Écrire une fonction `moyenne` qui prend en argument une liste de nombres et qui renvoie la moyenne de ces nombres" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e83df22f", + "metadata": {}, + "outputs": [], + "source": [ + "# Tests\n", + "assert moyenne([1, 2, 3]) == 2\n", + "assert moyenne([1]) = 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "750b4e2f", + "metadata": {}, + "outputs": [], + "source": [ + "# Fonctions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35efeef8", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "9bff74a3", + "metadata": {}, + "source": [ + "### Boucle for sur une liste\n", + "\n", + "Il est possible de faire une boucle `for` sur les éléments d'une liste.\n", + "\n", + "Par exemple, la fonction `moyenne` précédement rédigée peut être réécrite de la manière suivante" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c93f43d4", + "metadata": {}, + "outputs": [], + "source": [ + "def moyenne(notes:list)->float:\n", + " \"\"\"Calculer la moyenne des notes de la liste\"\"\"\n", + " total = 0\n", + " for note in notes:\n", + " total = total + note\n", + " return total / len(notes)" + ] + }, + { + "cell_type": "markdown", + "id": "53c180b6", + "metadata": {}, + "source": [ + "1. Ecrire une fonction `somme` qui prend en argument une liste de nombres et qui renvoie la somme de ces nombres." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f956b1ec", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "4ec924e6", + "metadata": {}, + "source": [ + "2. Ecrire une fonction `multiplie` qui prend en argument un nombre et une liste de nombres et qui renvoie la liste des nombres multipliées par l'autre nombre." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c90251a7", + "metadata": {}, + "outputs": [], + "source": [ + "#tests\n", + "assert multiplie(2, [1, 2, 3]) == [2, 4, 6]\n", + "assert multiplie(0, [1, 3, 6]) == [0, 0, 0]\n", + "assert multiplie(-1, [1, 10, 100, -1]) == [-1, -10, -100, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "81f3ebdf", + "metadata": {}, + "outputs": [], + "source": [ + "#Fonction" + ] + }, + { + "cell_type": "markdown", + "id": "bd7c1976", + "metadata": {}, + "source": [ + "3. Ecrire une fonction `filtre_impaire` qui prendre en argument une liste de nombres et qui renvoie une liste contenant uniquement les nombres impaires." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b484693e", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'filtre_impaire' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [6]\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#tests\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[43mfiltre_impaire\u001b[49m([\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m4\u001b[39m, \u001b[38;5;241m5\u001b[39m]) \u001b[38;5;241m==\u001b[39m [\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m5\u001b[39m]\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m filtre_impaire([\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m4\u001b[39m]) \u001b[38;5;241m==\u001b[39m []\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m filtre_impaire([]) \u001b[38;5;241m==\u001b[39m []\n", + "\u001b[0;31mNameError\u001b[0m: name 'filtre_impaire' is not defined" + ] + } + ], + "source": [ + "#tests\n", + "assert filtre_impaire([1, 2, 3, 4, 5]) == [1, 3, 5]\n", + "assert filtre_impaire([2, 4]) == []\n", + "assert filtre_impaire([]) == []" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c43261b1", + "metadata": {}, + "outputs": [], + "source": [ + "# Fonctions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc069c83", + "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 +} diff --git a/1NSI/06_Listes_et_tuples/exercises.tex b/1NSI/06_Listes_et_tuples/exercises.tex new file mode 100644 index 0000000..358fbce --- /dev/null +++ b/1NSI/06_Listes_et_tuples/exercises.tex @@ -0,0 +1,174 @@ +\begin{exercise}[subtitle={QCM}, step={2}, origin={Annales}, topics={Tuples et listes}, tags={tuple, liste}] + \begin{enumerate} + \item Quel est le type de l'expression \texttt{f(4)} si la fonction \texttt{f} est définie par + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_f.py} + \end{minipage} + \end{center} + + + \begin{tasks}(4) + \task un entier + \task un flottant + \task une liste + \task un tuple + \end{tasks} + + \item On dispose d'une liste définie par \mintinline{python}{L = [15, 17, 12, 23]}. + + Quelle est la valeur de L après l'instruction \mintinline{python}{L[2] = 25} + + \begin{tasks}(2) + \task \mintinline{python}{[15, 25, 12, 23]} + \task \mintinline{python}{[15, 17, 25, 12, 23]} + \task \mintinline{python}{[15, 25, 25, 23]} + \task \mintinline{python}{[15, 17, 12, 25, 23]} + \end{tasks} + + \item Après l'affectation suivante : + + \mintinline{python}{alphabet = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',] } + + quelle est l'expression qui permet d'accéder à la lettre E? + + \begin{tasks}(2) + \task \mintinline{python}{alphabet.E} + \task \mintinline{python}{alphabet['E']} + \task \mintinline{python}{alphabet[4]} + \task \mintinline{python}{alphabet[5]} + \end{tasks} + + \item On considère le script suivant: + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_t.py} + \end{minipage} + \end{center} + + Quelle est la valeur de t à la fin de son exécution? + + \begin{tasks}(4) + \task \mintinline{python}{[2, 13, 9, 2]} + \task \mintinline{python}{[2, 8, 14, 2]} + \task \mintinline{python}{[2, 13, 14, 2]} + \task \mintinline{python}{[2, 13, 9, 2]} + \end{tasks} + + + \item On considère la fonction suivante: + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_somme.py} + \end{minipage} + \end{center} + + Par quelle instruction faut-il remplacer les points de suspension pour que l'appel + + \mintinline{python}{somme([10, 11, 12, 13, 14])} renvoie 60? + + \begin{tasks}(2) + \task \mintinline{python}{s = tab[i]} + \task \mintinline{python}{s = s + tab[i]} + \task \mintinline{python}{tab[i] = tab[i] + s} + \task \mintinline{python}{s = s + i} + \end{tasks} + + \item On exécute le script suivant: + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_double.py} + \end{minipage} + \end{center} + + Quelle est la valeur de m à la fin de son exécution? + + \begin{tasks}(1) + \task \mintinline{python}{[ [0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8] ] } + \task \mintinline{python}{[ [0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6], [0, 4, 8] ] } + \task \mintinline{python}{[ [1, 1, 1], [2, 4, 6], [3, 6, 9], [4, 8, 12], [5, 10, 15] ] } + \task \mintinline{python}{[ [1, 1, 1, 1, 1], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25] ]} + \end{tasks} + + \item L est une liste d'entiers. On définit la fonction suivante + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_filtre.py} + \end{minipage} + \end{center} + + Que calcule cette fonction? + \begin{tasks}(1) + \task le maximum de la liste L passée en argument + \task le minimum de la liste L passée en argument + \task le premier terme de la liste L passée en argument + \task le dernier terme de la liste L passée en argument + \end{tasks} + + \item Quelle est la valeur de la variable r à la fin de l'exécution du script suivant? + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_tuple.py} + \end{minipage} + \end{center} + + \begin{tasks}(4) + \task -9 + \task 2 + \task 3 + \task 6 + \end{tasks} + + + \item On définit : \mintinline{python}{[10,9,8,7,6,5,4,3,2,1]} + + Quelle est la valeur de \mintinline{python}{L[L[3]]} + + \begin{tasks}(4) + \task 3 + \task 4 + \task 7 + \task 8 + \end{tasks} + + \item On considère la liste de listes suivantes + + \begin{center} + \begin{minipage}{0.9\linewidth} + \inputminted[bgcolor=base3]{python}{./scripts/QCM_tictactoe.py} + \end{minipage} + \end{center} + + Quelle instruction permet d'obtenir une diagonale de "X"? + + \begin{tasks}(2) + \task \mintinline{python}{tictactoe[3] = "X"} + \task \mintinline{python}{tictactoe[4] = "X"} + \task \mintinline{python}{tictactoe[1][1] = "X"} + \task \mintinline{python}{tictactoe[2][2] = "X"} + \end{tasks} + + \item On définit ainsi une liste M + + \begin{center} + \mintinline{python}{M = [['A','B','C','D'], ['E','F','G','H'], ['I','J','K','L']] } + \end{center} + Quelle expression vaut la chaîne de caractères 'H'? + + \begin{tasks}(4) + \task \mintinline{python}{M[1][3]} + \task \mintinline{python}{M[3][1]} + \task \mintinline{python}{M(7)} + \task \mintinline{python}{M(8)} + \end{tasks} + + + + \end{enumerate} +\end{exercise} diff --git a/1NSI/06_Listes_et_tuples/index.rst b/1NSI/06_Listes_et_tuples/index.rst new file mode 100644 index 0000000..5e091d0 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/index.rst @@ -0,0 +1,28 @@ +Listes et tuples +################ + +:date: 2023-01-22 +:modified: 2023-01-22 +:authors: Benjamin Bertrand +:tags: Listes, Python +:category: 1NSI +:summary: Découverte et manipulation de listes et de tuples + + +Éléments du programme +===================== + +Contenus +-------- + +Capacités attendues +------------------- + +Commentaires +------------ + +Progression +=========== + +Étape 1: +-------- diff --git a/1NSI/06_Listes_et_tuples/plan_de_travail.pdf b/1NSI/06_Listes_et_tuples/plan_de_travail.pdf new file mode 100644 index 0000000000000000000000000000000000000000..51eee8d5b54e89e60ef426bb8293a873e8b831a6 GIT binary patch literal 39029 zcmce-1F$W@vMsu7+qP}nwr$(?+6#Nx+{?CY+qP~0eeV13pA+#;+<5UL&Ydx5ch9V@ z${LZ`SurZJNfkuIXc_5Pp-3l}`WA;)X9tI&SO^#h?2W9Tcz6itRXiO`3FtNCjjT+K zT?puvU5#A+OCo0PWJ^H*kK=#c!AL+aBxLVFp#8Ti0|6t$|N7|?(90USI9dKf&iKDt z{_FTxu4L+L@9Jc1>P*1;SETfJC`%g`Q>VXY8$%aU5mRG(lfQapOzq5FEC?7`3HbO3 z{`UvU*~Q7!&=$&LeF1)2fns_W2mt&G@D|F{&gB1X`Fr(``Lq8W`F{=v$A1h5=l>`U z#(!AwKVuNae>lPaoJAO!{&PtFXMKzDKj&Ob|1kIeoK2Yi;R62|?_y&9pGESIF!>)s z!uCIluSov85YNK!uQC3gAwF4I);^d4rt5+F9z5lp8B!@!WJSrcMRv0| zyV$h^Z~4bR4LDG61P(dsm$C8Zc0->pm%|Cvb(MHoAg%|hD08I7+7?Yat|zB@c=x(1 zBL@<`GKlL}Q9X$Ftl~XQ-%$HAhV_d6)&*WbEWkWa>FOL<-!+Lzk0(JoZ#IuA_Zt|k zQ|C^;w~0&E`}qa> zx5*|$$BT9HO>*MOpd2r$V+*`{Sq{2CXjFk(0)jD}Yz9({{}vprh`?hL)i5n$!BGiE zWB^zO7x9!xUh{15lVkA}1EQvc74#jCY2I9fMrCE`hAW}%Gf`h6tPsjGWoTLI=718y zf&~tOT|Y(L8+869o@q~#EA2f8NW-C8SJl)!hZv@)80maS-DtaOq<@p$7+u0x7*Er8 z=?@T|72}yJ7@R5AlfA-(CceR`#9%G#1;u3iiI(YvRQ0Ak4*XVJAu?=gl+7TopI=$v;T9UW%)+OEm1dL{en!B$_-MO*q?)99iOlJ`}eD(g${Re1L4ct$Ez9iFTI~WNa1!Ds1%vn z>&L5)vljhIQS+)n<^;dv$MnbSCs)ZE^A%mbAJDaP^4^D=9lxcpNOv5R6~y?=?T(b> zp7~Xtlu*i{=;O5Ql7g;E0HM z;GwgDl#gP6FLFUg>!{rDXI(Vo46~9Uoh7GeN+>Uk?uVr?6!kl)!&3X!O1SaTncCD*WP-I)}?Qm@sVCBrTuD=k5g2+*OH@-QLFF4CRYw!(C+8BQd> zQ2B=#2y~5!`o=NA=3IbXgqCex7=ht^7X@8se|-e3P!;XqBiz!T0Rt-Ah!|D z4W2%z{)HR0YK6OgLtG1)#98!9*UUzUNhsVP(F_qsx*JGmc==5mLG8fT7XcH>ihQ7a ztV{SfmZBg;_9%cK{*pTI2L&n`pW@B7wI!E63KC%Y3?w$chs#_7VuHlbVc`X_qo=|8 zC^4T+%$lK+E5=?{P6X>mJySGZc5hoC~iWN_Kd5vzd8&ZDTKDC+$xtv-bwHoTzvxa8= zB7pR}g@<8&rW!wSLcHEiX+iBY_qRd3(0b zQL@ff;x33V?@ zq$U&q>bhPw&Cp?49k3HhPAjTX`?oJDH?{;mQ+bt#6v_AC7F4kkZ(GPyuZ;#^1OB+z z`{T6L#ryT=S+HNNs|tJGi{bm{Wi2Or*<`0w`62SIp8#YYoIv~qbLxn>6|bdcL1=Kj z;vmH5(4;O1OfNdr?uLpLY7BhiCh87ksHAon=$Co) zEo|558HYiM*G=n|8LOxDN-%xux|u);zq;|Sm*t9|uG(t7>yon(?b)gOoHmxrAS!cN zMrCs^w}cJ~JJrd-aF^nsl#vVt;glj@1bB;#Q-`KbGn^V+TdoHjjFBOlm{q9b)s?kzDR3ObVhuaiwViF zB12cpNw>+#pmOsb!gV{Q;iw7qxsb4ER7Ru9SE^LblBuJ^u*qxlSK7g{70-0M(+#7p zT%h)2ebWpVHS#W^FWM4bHQ2PD-HzF*O7x`~?^yphF3c;1e|{Pp{$1P-1=B?7A?AQx z_4q>8iIDO0;t|t;Nt(Jc{FvmZGrIGYUi1Wrs;*k$1I62x?1h5?fEwAN#*+n6owS$whi_IAidoE6s^a7Q%POcs;P7Vs@Is@J@YOopjRC|;b@ z>n(EjTOo?Q9i3~W>t?CN$jOBz4wH?6o2KgHm+M%`S1mW1( z&|U@Jl~}lYa;{m?qVPqLfp4UZllsPE0DIV^C&|G zy>NE%uJoHz=bfElAyYEX5x=Cb49OB5-&<@~VL5MuHwc|vIP1z`Htmh{Xr9HY6`$U; zUq?wk3hOUj0mfJB#bSJIa9Pu*CiB)}JSva;rL=-o@(=GaUZ%J6e3tZ`R?sb+GfLyJ zUF^xvjT|$@jOkhC{MV;EnUDOO^2Ke^g@q`QulFD0&BpHhHs8f!l*wt z++GYPibM(cjoIKdu9`Czuq(?~Jn4Dh8=mzY$f>eC&BU}gT&M+-{B$c?jTlsN z=}E*^Xam&+I`@5~(SGoANG8^OM7EdB@w_(Ler8cI3y?OHrEXy?rLf-9iWjPFBtF$# z-RvueXinGJEkU)NFBHMJ+=rFNY@IEWDUzPN)#E9W-+4qENJnE>8~1x?iMUcW(t=G% z3YPSP@r7tIZWQr#82IjMG*0e1)|92qUpc)30XVGmex2|S{+)X*=KZ5CDD?KT)}~1; z6t!Wnd78_XHn3CbwfCt~LZp}t*ZYrT9) zwV%Wh?q|8@PaF}Yol$c4r`uerKHurniTn=V=j%{tG$R!frvKaX1^B?v9J+IU9?dSP zg@RzmM9U7n|3@jSM%9>Q%>9$+ms74^Z7KgYKj|U;I^XY~jYo9PH|nYO8j;$VBAY7h z_p9>E3c=6xpZEEkE`|JtA8571rB`Ujp%l)Q5eZ|{KTEma-&ge5iQ~EaevpfY8W7_e z-gko3uzm-tGr4{M0U!1g?NFYd&sT9fbVKC&{%a{LSjjKdItyvP`fXX1O=Uy_zd!k^ zS)pukhMM#|Pt10O6u5dR=n908&3BO=FvH$1f6e2W?Rpg&q)p|l*-#VhH4EUYGx5cb zXU+yeUS_m7C{Pn%c9~32n_l@CVxwcsoPxn^ zh+WgMPhGFYOLF$>jukDzi8;rxs4&W^^JK{Dg&D_^QGqi*#aJyZz&7OyP*!G(o-|Rm zPO~pWVoopK$J^$$ju+3U`{?Z+TI#U>U_oAM8RP(T zcisb~yX?3f(`o4?N4O$bsnX!ZH@nok)Wg~41>A_lG@q>B0-2tbqr0f{kx|iIM8n}(t-qz#ypLop~SeTwS4DfzzL9MZx|pE2p6maK8>-70u7wS zC}Ixo8atC(?>LMJ{2Vj=j~nk0*E-l}CN=SMYr-8iM+!~!?5g8tRxUNa4iEkU@%j7< z+ZIR>i zH-8)+%p8#6>+kCQ71>n(75#C}jN|Y6m>NNEb^P0N3>uw|%I_(Q6y^ zllb8?qwYbgcj(9ePDS($i2WM=X8ei#0;`_dB?Bx5 zx}G$OL-^Q&Go^e=^dz1*lPHP>I91oMQuilz@i#0?DCH_rgSW$$GS;B)*S!n>@02G;_4?rKPZvaXmg0r9@8c7syWi z`0%owJYNm;;7O7@D0uQC;OOgq-+h3;>HPBE)nTcX-8a4;;ivEMd%a);YMHX+geKW} z^b)C;@2=+c^BK(;t79=8jCL-~3N|m&J|GyzrxxsWw^X z8x}Z>?^XM=bM9;o#2oyj&mE~Rhr=B^7hGhNzg=eh4pYMNwi`o>93nPHB?r=6Wa#Rf zl##Ndz&s5U;k;rr79&0~^;5BJTdV>)eNeuAHTAKt%&+?OlKiY)lFAdu=~kF4P9kb1+V`q-?wI zSLJ;U%tJ>=>MM#GR1GDEn_R(#IQe<*hy*T5hpZ$BF>2YIn6dM2+Q+BbL%ThX zt+a0{R2FLr3!c{+wkRk}zkl-i9oEtbKii&~TIYExfP-s$?_!4@a1u9v57 z!8-TG!B9Gei7S(0+dD)7`^g^((L*G^ZaBYcO>+@Y#7Qf!WWFM%PzOG|ssZC;e~|HI zLYnyxec^ISI$>A_W!;C09jQ!m5th8%CT7VU*gKWqxx+{$DEEDBBqc0V0IY#1O%L_~ zyuII^L{Ejgy7XAiB&qvodidJ2kYvAu6TFOT`vSXZVV<1sm}Vb@n68a>MD ztz$8nqPQ20>jblidF_c7DH_MgQ^~z1MpVN@pO!`$ItF2vFQBM;z#@}oF;xtei0gS0 z)FOlIULl<7ZGW-7Ae;iDU;Y7L5^o&k9Kfh|uk=K{4W!Cf7mJmK^XlgkshKsb+oidP zr}a9F+&97P4yUqRCOo0N)DFii54raN$q+PQm^eT$afSRHCpYNX9^!)*T$ku-*&yA< z1e>b;%dy;pZKS)r`OtaWYrp?EA6qYu57Ws01{ZZeilpWc`Xz}qnLBP1w-Bh`C|@r* zpaG#Q?=UzH4RVzaIAs)RUVB5HalU?|Zy&DvAGA|THV~azCnOWNCbPI8 zsBz{G49kNfe`$0|3>kHah&clR{q+HsP@@LQNSnY-`&ecTKzuJJ4*f%kwf(scRzaZs zVPa*TL2yrRXp0PDK+lEDM=`juZMv&l2PKfW?}o9 z20#BNsbc)EO#1&#f`^gipPY(-;GYQ|V}k$yw;@XafLDN?e>eWWrf&bg8WUkj5ixr^ zmwyzPFbMzm6(Ys}d6k65MP_NvWU!EnzCt8=uw~BXvO% z7FJ5O91rOdc7gAG<84mvI6l}+;&k2p@^=?9_htK}t6`_bqi*Kr1stq9wfijWYG<_^ zwjyesHxJFZ6{jrWT)pa9;fcEY+{vG{v9!IQ%viiWAbgl+?;=ch5qF& z1x_b6mtW&v&zoEaM7_CY@MG?|=1mLz?Xx@JMp~LIHA~}uK4C$6Tc^~+kx9abI;y4@zNTrJN;Az=h1^1QW#T)X4VPOqeqyvF@*v(*Mo zA^}UKW)>&1JW6t3DKf#j#VXUgRSea42MG1cmnTvpN+y~_>+f@1Iab$^!?W$nxaKM@ z0GUcR8ur0abUfuKSptF<<&;7NhC@TmS&od{DH+L_Fk8BB7u$yIQ6F<2R!Q}zrle*B z^*CFUQByThP$CR%$uUPl3J$%fARnoWXiSt+`A-NY)o+VeFrxI#)*wr(OfT=4N;>P} zIpfhGJXQP)SrKEL5!as^ew+q>k%&YKq8u_tM}>%zkhbGQyZN5qB9>zG((fSAXFo;p z*pg6tdx2>HwF*qdK|3N-%rxk`63YR>x*&7xszzx}WjaYR0OCv0ZH}DcZ8%i`QCgAx zgz*Wg(Ez#S(#1OYByj~Sx?M45vccv=;~B+5$N6l}EEUSD6;wD=CwqX*qT^DWS_us_ zOrn~Y)WYZewraG=<54!_iw=cgK!RSNmjM!nv3pb{1?Zl*^-z%3jySgHdj*>AU1pDWani;Yw1TbGRvtn%CTt(0dp;2=0OsM4d50V=8|ES19q8c zZUIy|$qz&&r^Y&ix0@?}EFMnSz(Uk!7ifw7RU{~3)gsfcxh8WE7v3peK#R|WlPHLb4J)bv9 z6scT(Ok>GTQvPH?sTDFwE<_>YT$;X? ztuZC`-y<$zLsV(D=$hIPUpV6iR7OB3GSU?fiSP`$P8U|l)e^#&1uy4e1lI$NO^D9w zzs$$bmpN0hgE;2BV-;Q)H4_JDa+C?LCz1G)hs^|JjH4mIrIWIskbzOCOn9aI-R~F$ z#ss>YOT~tqF;(;1l{yhp%eeq9I1JmIwOF38ROkGCUpz6a)4YuXgD?pM+@1FbLNgJi zQmLp-%r}Z7fGpt!u;6nX-oK&}T93oj+P1b4fnRnI&J}JwV_+q%bD8RrDXF-mg)baq|s2zm@kjDe~JM$_OkNF9Y(o@x^O z#55`&FWtvETb(8$^{b)I763a=vD>V%L~ANdVK4xQ+;F0rm|LEmTV*&UE{nUbA-lID z3DTtUr0#am=iFHvg2CDmPf~bm$$l-%U{ZBrsyy^pZ?_sSNsWY$^q zE{U9JY9CsNlH!xr@F;>O<}~0&3ZbxBVt9BE+0$eoaEv7EknV-0-UxtZV_JCLqx;uM zB06XzS=BPQl1gBHXt1X*;1~cF`C(41=&=`G|Ir=3YZNW z(u*O~$YM}w2F_s4$TRss2)_Y&3=y2uee_<`V70gpn)D4kF-O~p7Vb2ggKU-vxh@D; z7eNKzKGS*`pH1-Ookth!IslwugxswIa%_-j%#pzeZS?@XlGPhXD$ZwTSY&4KX zGN3L4PQ4c^cL#y8kuUlud;;nQ0R*G#L#>%*M!$MPn6$g?uv9ouv48yBB8dQvrXiVLy z&N&XhF`g9ePvM`Z*86lP&DcXvFsnLD_vPSY_V&yMfLCoC>MVC#xNrkYHJ$e9mxDa2 zRoF0)oTbtB0fdo2?Diz~5(u~tg*a+D*rpAfFA{vVFNb{R)}no;FNdb4^ zmzjQw=!63q6+JK$0CmetnP48@+F;v;xmewX*OG;;^R^w6kd=e$YB^{~+8*O~yJL%x z<{o4A{s;`BU`moTMk#075N1}EJkeP1C1Hrd(KR>(??&d!;4*9@^2SUaRO9%jTN0SggKv=iWT@DD?pnFiqI zuFo$`2xd{KRznmt1N@V+01OyN8PHXnupU7f*nXba;BX4^Y>DEF;!TQTkerZ2BPf~O zf-#V^Xu=R=j7P-)gag!<%c0uc_5P3mU5^ZB++PrT7!We~n9$G94%hD3AUzun^aGr% z!b3P{#hiP=_zP+y*IRAp;esDo zN4rzX+^fJB{oTj08@XL2O1dAFTm0RRF_<6A4}ppHt6sMq;n^|I>$A|yi-E!N&7gMl z*)?h_94*agxsy1nhE1GZ^$m2LMrLc7J@vrmKlf=1^_(aip4n$Q?^mwwtLi^=i;gGG z&$rHO{+mC`E(_Yv*Sk$K+!wZdkM0-A!s7lr&1aFvQ7V%$nvB%eA2;45Q+{nn-4Djk zPUgfACp|Znn~g^A3JyQ~dOlB}(0+;DZ_RMl^L)IPH);190}HY>^bJ3(XCRjgZV!JJ zJ{>1=<$1hF8fVsD8o>S6*@|RjSx;i^I(BMtrrVE>z15mDGf27oCK7C49pt!EwWkPb zyvFKQuITBT?3-(x=s58?-0jl8W+YFdtZJA=X7pMI&nzH)9wnbFYHvLp&tDI~<7BS6 zl3-2Uu9DPUKHHV9GTW_v&eAQl)8Mi=8*JA7T93L;cD%l>a_!ggoML4*$hGymPmD|G z8wbWW+mx-LvtFlGw7IX-%E3xLYo=H4Wfm&jI9snVOD4W!eYY6BpFVDsxes+tY>KC& zzGo+Mc00n&zh6rRD%fn|vxk6#>$g7bN(Z=fy6!1To7DYKJU-G*pEts@MVq(pTY_&o zF}aL*Ukk;JZEyItd^W7xfd6W%{ES=DwGAxE)$z?QX=pmAF1ebCeY?6S$^6!W1uMzs z)@I{F2}{GNkLC3_OtqzNCX+sJ-?42Pa>M^H2<_S+8^JMpX{zp?a;nyV_1JR!yq02B zbbcGe>>yut^@;Y?JoUV23y0@hLR;1Stj*B4y0nDN((s>X8bG`VP9*%eTdKl+6+J~= zs@PDc4gYgJM9*HMspY#rz7oXGqae#;QnT?ePfRPf|E*S${XxtA)+_w+a_ybh<@-M0 z@bP^8F|_?W@!aVCiCwu>y!Y>T#=n-f|F_v8PR@TJGXLZ;t_h0r{R}9fJ0H~5@Fcek z>hXdMCXoRo(Sj-wiaTQ7ePoro?N@>R_8Su{iaPbCJJW4fZ7ml%ytW10mTnkZI?f(_ z<1A_hEc!>J7cOXGETHG_h>8U^OXp}gm5A7t`P?&T>1wVs>CCjTF@wvlYb*o7^ZaN% z@GdQ{Xj6R6_A@tg!fj0JBFxT7h%cbps`%M=`tTfp-%toq`g3aIr`o6b&eL1r-n1vh zx3sD>d?P`vu&|SeZ+|NJ0m?*ti*HdvGh^ttv&yleWo}?I6}9 zMUV?f=X~=*kZB|BfMUQ!8VAzcBrL)m6O=0B2i$k#cD>aK>Xu=tvXn6*@x$g{eUpkP zeN|fr_-DTZa+al^K~=&pEB>8<|4}IYe?wINmOcO5R|=3{^?%mB@q<&pUbx`^DBZ!d z|DBe9O)~!fp{r~RtnB~P|4;WS(t^}bUTNlIB*7sbmcm+J&%i;fun=)9SF#m_NEkQi zt*gRH02UEKN(2a6Kfkh--h!(VzB-h^1qffS*bh({;#$lzJ9tkaRHQqJD0 zMAwxI6|MXDGTdsNWy|^%z02kLDLnFp3-A8fd~mk&xWaBG&;yd%F=#w9^#I9RIVaT9 z?W=#fRbzi?5F8(WQs?bU=bl4BqH)mK<0UHp z+X6X3M=m$sj1nO5zkblALOd3Pm4@feZf zcspiC+z1WCBMtiIT{xZBek>YAh&ImdA@x#$r5i(dX>OxpiRQ402_TXWCj$(s;2!(f zxTHZY!Mqg%T+mp$TePxZqRqRYw!dETi;uG0PO=a#GSWOa-ipz{ z;I1T+BaPCVufG({YU+2Q_w9t@(8Sbwv zIWX>6*thuIEdFLV9>~-u0&nT1@m6=YMOQ+x6tDhd@WeNsJ3Eg5kiI_e)3f*RyP8s9 z%y5~8t*pd{4!GMjg0GXYRKp*|tPt!CY7IEw{RXYdz?Bg47qmDSU&=WvIferDX)p3p zAqqyCuyxK*`ou4zFEkCHs4ss<*UZ#nj$ZOVa|o9sVG=s`!=RLY1QEj`5!Qa zoJ&dRkud~3^dx^uNWn6Rgdb5>yXI*I-bFfyz{0n)`N*Ua%o^$ft+J@Gv;@F)JL-K` z2S$z7p^^qCoP(;i9vYrO|3Xkv8xbao@m=wv&PMKp zZ&%%Nk4Eh~)`BMFq+`R-7>}pT%tozemn({jL7Nxx7U;v1E?PLUEW_Y7+m8KEu!XJ@ zx<-!!#MZK?!r8pFP&9UKnQYu06wodp22Y%)fA`;h%M5AOuujMM$@DbzFfoWgQvpvw zK&2*>F*9)3hs>8ixwZx!XQa|G_`{#)o-kZ^2`Z);UAq=SkSpWs(^}F3dP4pj%CWUl z;N}?$ie_$~GBE(Xj7$eltSq!EmS-22jcW#lK;kz1bp%=fU*qHPr&qXgiaK=c znGxKA2>Wd?SVLe8KVzG&X0@K2!%y+(ieg#Rt?sp3>u)h21NT=Qi%uNr(as4-i=;i? zyd~BL+HL7xgS2s@$P>j?t4q78i}aOE-7&ZB zkj6)wQG8L}=U)2=rutfPD-> zaCzP=HRGMZgc06td`P7CrvxH`prvv^e|Yglp?NL%htjLNIsKBq*E7=h)S9&G&*jr; z(wLDl8EsBXN;v@7Yqz54yFm&0d=?JjzbTDw6sH@gudbX}A4D2&E_jo!JveLe6 znOFlA^%}-2M@o855-Z)d4T?;24c_dh>1CP(Vwykd($qvX;c5h^_Rr*}l8dtfu*M zl`fXnvq@tS9|5kHg?BC8sRa>$WmXMQ|99$y)6~TwcF9Eho;1$Uq9FLKU#Xq0sxkIOo z79rr83)pP`kKWe{~frmsW-;!ftbB@Qnb{w|m5Ea)-8 z8bzDHZKL_KXKQsW=vjiWF^OVg@eH5?T% zi?WJ8g*>G^*&m-~cS5V7croAQ`Lgi)I^H~eL^m3nk8FR+y+l>3+c)T1w(i}~`$K9C z4Rgb??RUz$YQET-@^T9F4&_O`zuce4Z_O9=I3e#+w^p6r0Rj&qUI(FGiGQJS7pyE`vnvqgUWXOOk*{p zh3O{_IA|1*Hp7d+AW<-r@=J=Wtk2(_ z?19u5YUmrvIh1=vNN$ z2Si9be@we-G$01LSrO7 z&v3Vcr6SkcAw7x>^l#U%Q7;EQxvt8#4^|UP^o4j|UP1BNzwbmz98_Gpb{-rnw|}fc zLcXU;J_qi6O%{YBdYd|Q>UHCbS?m#W72t`nT;pEi^Jz$?vW!r5=ahv?&Wczh3h^Ew z=v0Inf}4b62k0c=hiP0zo!W;7C)^@@!G;KC_7nwYiJf1O{9HvUzquL&n}*=zm5iEr zeRvm?mTz}@aqrRlnMQf}O;Qg$rVrM)HR1(VhlYJIoKdg!W!_Gcz6qAjDP4h8R zcHF;a8|iCAM&9{3{|A}>j6vZi*_i2cnS_78ryz7gYCShf>^&hm$|uo@SB4*4^A-l? z1fCsRNE6NNI-tI$AD%tdD&$g{GA5%VoKTn=CpwI7_Gopc=X|se({&5p2nY+_w=q-Y zVMQz_-_~;D&+9iA(_7&Ro%!w76f;v~`pTwlR!LWb|B3s~RW1%Lub)lq~Ka`_^+{uwIktS-sxZfN58|3%<-YIJ&hdIQHIE=6&!tv?dNkZRaYg`x~u7% z4IdYj!r|t*on-@f7Xh@(`9(9&*0>cotLCVx$)Tu~GdNtWDEskV_QI;kkCS_|Wq~!p z-LCarz1CmE=NaM@`SudKLSG}+TK*(yW5Z_8%*f}K^jh+TsFl6<-H-4TDYUVzVzGjF ztD}q=?!gKhU3^=S{p&me-oS9WCE+Mm_25))z5QEzto#CVF~3__dKN``X-H4ue_Yh% z;o6^{E00;fA6%`iM(w`k-W}H!#d*i^Gk&C@Q4#RU-;OecV^7oWG%3B-A?2(M2^-;; zUSC#@A1~~uF@p!M?{>CmKkidLrCZC3aIGvEe=UCrO=p*Nj>DI$yoSZ%vcgqR4942J zdlI(_mhlU*WiFfDp0HEj&yeDrh1xR@FBrXt;Pt)tY|w7F0;g;y-9!N>LZ)l?0m%!M z_;@7CEh=Z;gAqOWgGVVS)D+yQzttoPq|uJM#Tt0(+`3?$6(!QRK^X!;F}_T_E^* zkINN?D}C}O(SO!I-j`RW#3@mNAKcxjLq21{$~Tw5dg*O8T2qvnbbXtPz|TXBvN(A1 zW~_6;rVX;KlVV*v<5#8)wv=_+CC+m*NB>FhQD0ae>tV@_R4F&VY+K3KIJS4z^+P*c zpNYwwx&=|YtaY6Q)BPBEvYv*yQsZJ!W6whI<1f)lI7%~GyS}*J!gv=t+H+RKt$XyybOYC=vLXlVQ-7ed}6j|hIK3$Z%m z!Ge2$0ogwV4b6ZnZGSOLhS6&y30FS_pdD20a=00oP-T%@d$&^!#*ulHwB>{8a!-Mq zvVT7b&p&rxc`u|IfY%Xq#CKJ7zUZx4pUY(WuI3i7Qn%k}_c*^Vz`7^YY!tyS(2=#&DFInjv(>4u zJhTGsE?DRQNuT|qa-lr#bcwkF4ed?85(wv)c&5R!>eOT*qAYiEMuu$7m6tL7an*`i zL{$xXK0NEGJ}I))11%2<42-RnpWMe6mdCl<0@%AvyV%t>uT!h!tL?@KO0zPjgP3b~yzur)z!sZ5`-r-JKFDMa>0#eEH_l*yj)_ zl>FCgb|Wm>5p<%(2_J+bu@FwZVvq-{neN;oPN?O2zP2R|hD(#l$axjF$JAtG>esj6 zB6dcD@wnCU2Cr@7jKWt_#KA@0!c#HS`nM=ZS()dYB=_UZP1s57#bN_{Uqz;YMDpdv z#J#;?yPE=ROdwwSgvri()yV6iY80oaee!fVtGU`Xw%s2OB8rLXTL&S{=N6mU+3wRn zBOK-Ur9Jg}9f$JVKORXqq#X%6al;S7oLN-ipHi46y2E%uJxPT!*+FhcjkqBcGgq1| z+Ao-t^px~R6;!Bgst4#EkgD-3WIeb;$mo)TR-}3mq#-%|f^n!8l>s@bepkbsNWjim zEU@B;bjeG5m8XBWg_>*1*Qeznd@0=xvh1KJ-v_%=@skTn@p>*^#2JHi9m1?1zq^H< zgjwC8nq{;yB1dzjh7gAd`A?_;BL)=a0~f2_(&(-_y+BE(wqLPL=bx`8?inyIC3aA%yO|o+$d2h`tDxvH>9Y1@qa;N> zmU+0%2%8BHXS#4qP9uqAn(`c88yTM7^o<_;5I1_A|jr zXHjmv&&cKm53esi)1$2D0K3siT-hURlV`mG6W$%VntgheTcUMsw{6?DZF9A4+qR9>w(ZrnZQHi3)$YId zzJJc%CwJeQlatKKtclE;NmV7^7|;7XV@*}tK*K_d@#}MiZ&JtbD{V1uJtMmVq9^4R5PN}$rRC7eXJV)(LLh4F6Y_5J0Ezf z>_eyM%%7Bq`$TRe?S8NO{4PvN0!)rvUL9<5C59__es*S+84kO*mrL>Fz}GP`EE_$cyf8H=o;+;3ul_U>|9=t&dlczewDepQYayp{2{bL*|`JG0~?jf=bFjn=oleQaW1RdmGw zn_SJ9VU`$O0wtu9{1@)g=p`_EvU z_32X=gQeYQgeku@+j-*q6l) z{zPuqYUn-RQSvViVP;CYRk_Ofxk{Zw-zvTUhr&VIcREP*=ocou##0^GXYj%V2PbT? zpQ=kw{2g{k{&HfDm^{#y0P!hYd%$%*w>i|7Fta%nuK=?-9PcBFC~rE#ygZ13DMKU( zlRONhaXyA50kncKMFa&CiYN+Z1W^QxDB?2M1%y>l)3DO*qB~R$mRz6G0j0Yo52##p z>F%F96du-`z|#NwVMZdltgh32|Ckk4FxWs2qZiilP$lzZR66CO##=C-RPLE?jAxqecDXDjZAr=zWe{GWqbHQE< zJBim3E^-kw?^)Lu>w3pu4)Z%}*UiTv@80{$CQDW4e(&N-X8~(-4?Hi>NJy^0|LLmz zpYqWEcG3Q~TxTzwIsgDJ0O)`E^?%ob{BJNB6U&b=>c4K5f88s^>N|EgYN*>T399X^ zplU@x8Npf=%5@lahKWMI)n9D`q`v)6K6y@hRr=^Rzl2lhUow^11&a`c7nAh8-&mpG)=8(O${oBp{+X?beJr0kTp&?{` zJ)YN^o7`8gr%C7@4kyVhE-i}AL*JAyU$?W}t09y2w}pMHM?0%K>W~w3sGOUV+=1%J5Ca?qh;zylsd)Aa55ts~P)A<8UP+UyTTEU>hD?+NXXFi9pV5(OnhxX~?Eunw=De}4_Ie1#s}T5eg~W#}|#m9WC**4#hU zJe04-yzBDJT7354)Q4K7XR2ADnIn3O6WUgDWlRwB+&@6rhakWI*_WX58kK``RK{ui zYphk$aJw)#OZKKvB=3DF)AM8$&_rciu+Rq$ zJM_@id@7-5Mi#dxi@y}9rT66dDPN*UqOq)xurcf@Jn9wo_`_sp{*DfX!PH1bfhdBXGsA85j(BMjn)idKy7s8ERP9G zyyFCgnWM+R^Xk-dHHYnP8j!v*4B8MG^OFGcNlrnL=R+UE+Uj-T*Fh{AOu%h*kp4_( z4v$63-7^9tWgN~kO!PYUQhKBO3iu;t36LC*UnjrFO4fU-{4=sV6i{F=mMy=Mc2-oK zc@y4)%Vb7YlU1=X<-q;R%hXji>a<+9Eb5Oi+cd#K;UvRmUBqqFg^QztslP<9{Eeh zod%R>9El%@Q=znnBC+XoJ$&3T`W-qsEqaf{U|}*A#Tg2Ng3g-mR-%k;R+EaDEP+QqqqT?zsrzHb!~cc&L{gFj5>-0G&<{ zT-Bg>ZiR3&sTA5z3uJw_P#Y2#mS#BkGXm0v=p0hA9l-N^%7yC7p45$A+oi6Ew#R4H z3Za?=2b&*kH2mN^r62endStskMTQm7GdW_5;VFbeER@JP;!l*!WZp5zZsCPCgc{vR;EI)w%1qrXhIA!jx`z1 z@@DH@F#|c)sKw?G8Ijkzogo<9B`=tP z>St7moy9?T3B@-DHOh!Whkd5xS;~r6pBh~sU)$s{P5wtNg0}+inEXv>Q%2l!7b`tMAvW4d`%7ZS>uX~^a?c4n@rU!@HWfEdtGO5y!%y)N!BM8Nyt3`i_cvhsp3*UKt2N(!_xx zTm?=-9Hba1EHaZ))NdjP$F&dUv52?chxgJeCCk%~gt&*ZeXnPNxkB|y2676Kk+oHZ zw_?%D!wSU7o>6eCJXh+TE9mjIW-~p=<-ChuF{2veNAMS99IFm#4M;hFxMns9*?7kb z17v4_>~_YRlV=<1G5VH7vcnFUG&=h2tH-#7!MLMJoc{kGVhw>dMEJB`$;A@rFtoAlTpDO>Ahc1;|r zttAWX(KFzi&bAL1%}R`EPiTDRteKtHj$RE44OJ0+Hl^Ad<*U=IzNqh6Tt2%Sjam%r z1Mg=BVVwi9%AOVX+A&6{Glx!5wLKn*ch z$~x|KY_z3A{^io0_u5G%CK$5Gw%QBG|s|;4G zF)h~CL3WE)sFmH8fL*`g6EJb|Rz5I04Q(@4Dvt;0XeWsDk-^LdSSRYV8%%Fa2dFlj z0ne>hs9IRm^050>ScI}DGnS)id3w20It1X@Xs&?LWIj^$xQM6o^ znAk5gW%~D)+v3_&hO7!o>;Q!%(UXrzS>&6ELjzTqvrhn3s++=sWr7@xt|Lu!Z|}aY zV6SDbsc!V!D%q6;0r`H}7swZVLx+SI-f`b_w*RDM?h1*%x}Q%6zsB}Da#?b^-!}_O zzd5@2z3uIfZukBO`@Xy{fUCjbnY!V_^7HxJ&V3PXeY|y4D3-4jSMu9 z`@C&PRpvEq!Nsj z*FfXSuQ;KUG;e=f>$74k^~SykZb6cwBTP{iyY4C7E3;l(<3iqeBft$7$7$~n?p?-7 zpa7#!Zc=|6N5hV>;#X()ktG%rO^^n=n$2PQJPk4>778h0 zE#sGK^ZvJNx7z;c{B2k5OvvNbDykln*l3**cjMYdYx`Mxqh>?bBY!yjwx!T8s~V_< zmU&{rO%DF3kch}LOjK0ldG3Kx!!~o|!r27UJ8CH9tQNwyot&rZ%Tzy93!$HRGv8As zXDV}u91^cDn_B&qqjX>*lg2gRhJTWkK>MjOVzfJth)Qv0L=%UNFf(?dxh>1vt-={S zNASis^RlGbA5TRxW$Iuj{&Mp6SYs0i9(t|WxoACb<}WmKRmnf$1>Y~Z=6CQ>sAj~?zF#Q;DvUiG~c75vYxR3Ntc zr4#$lT)lra*i!kmvi%pY;*pR(kkR2SfFus$Va!LxdW;2t1D*5*;j72%)=xvWESgMK zKQff_5NRAX<{dj9Q2?gtc4^}>WW~uoLGnQp8gOOlZyZd8BhY3=JH$t)QF-=w{N*La z9|72Sv7KjwVu0|<`%*64xLC1rO0{rMWU-Vb*+7X_7eFddt8)YaTRl0pd~Lq6z#Vel zGN4=0wX;p`Bx5%N?o~K@`*Oe<7p)_nH3*Q7{e#LHuyeg0%W2H;iej~Zq(T66TjFTd zv8b~wlZ1M`ptXTyV*D3AyX~Qs9Ib5y$N7Hc4h!^Vfc9(1AYL;z&d!#VU7&wJ&e@Z&B7oPi-v%j7F#nXU!Q)GiJz)l~>Ensi^&Q82u5RlV`*e zq>6*lVmq~~oyXVf4p3DQCV&g<=pcU-UHt>RuvdgVKWytDSF-mYAX99n;I>+HsQQWw zjKbx#c^0Ubk9Xe-1_(Es%8vw?SbPtx)Xpb2DPxnTdmpxWfHV)xd8Ib3#nkD`rdrJY z2o4XC0tDPFe`flFcWBn07N0BqD4YOfr`Z)4Udh3&F zFad+G1m4w@XW9kiP)p1-aMG124r{jdXIRurXf$#IYo*%uxipdUmx5hA7j)N;t51 z@E}%{(gb`82!9f%Sui2JZU;t_C947oBv7^;Q^f!54x{#W$lKa0E+TPYv%&5iP7mzH za~5b~o`M#I(UsRQpRm2XRBA64=4?Dtnx>tV;tp^FmB<_P1Vp2A&v^Tw1xaIlr%VWK zw`xs329Z;0Di>>tLu{;B;wBl8zy^lJbf2&+{C#;=swf(IPu6#AR(m3JX5W6nJPa1! z(#NU4fioI6d^jg8_yC&@44xxnNpby_gLaBRAT>JepC=OXwL-3UI_qiilzq^%K>s+y z0@DX{DF9qhKnc?K$S#|P;0W3sPwgKQu=hdR1-T=E1K)UJXYw>?dIbDcba@cMY=Cx} zD~~SJ-I8-v?|6wOjv?Qsl5teO8@L?2Ad^i=Xb&i#x*-;Z$?YFJZoX-Y-f4dn5)Txr zULnqum{SNPAcFOR493Wx$iLK;jhFu=o%abevEg6oWFw?YtR>joPRL~^XvvWaJ>C-o ziIbSaGqgZ8zVPJ=XwTCbcLQ{@*2zO_Mh_!YT?)k@@A33&KHK*6gf632-ejiUJnv60 zT)3})2ClPVz_i2#QQYgUSjQnkL|QY1>WQ%a|?_NZI+}dYQ5Ipm? z&fJxZOP_MMGXii_oHV>5%0YhA_3Xw$(6FU5u%0=ghW@g>CJCEHfv3t111sP5-GuSA z1irPs$)L>{6d+xwS^P_@!F*3dQ$Hwv(Df^Nl#)NPTB!as+_>>tw|}nRE@74%>0bR zym&WE6wOl^MHiOuAEk6M0HP#9P6U|b6CJbJFix2>*bY6H|CpI^b(B+JmAP?^V#IcVkf>1k~}~dRT8G$U}eMn)p`2(Wi*c9WC;b&olqb{ zS-AJ46_I z<&{>R)zcpj! zD7{hxLMu6P5UZkc6(3;3SOo`y`b;5ro7?uu-!s_WyEE8d9p)9xG7Op)HlENJFN%zo zC9Df6kOnN1QZOTpM!Kf!%(!VWlQ$SSXXDOBLg@@-S-4EFq#2WiNSKH*5U0;gVw9w<^;?^`jxUe1f%qUcGMTF&5Ep8` zGx?n1r-d>tq!XE*imwJpGM`on5_0Xz~a*rV&T^#LD zhf=#zb}Pv$Un_kjHZ>&Et~b93E{P^rW)ymE-gl)qY4O3}A$QWfNL09Kp*F9tkCz@V zl2&my=B&I4TtHWSualKdeKs%amPvcdlLhV6q=4oh8}20zwhM`BZ0T{5&-S>;1NBVUVxkdmTOU|CCYH*bDa`s^zL1^E_qmsabWHZ5^@AMkI>@9 zPkTvF5!n&WPe>x^5!=;TGGU)2jm7L0A6>_BhNg9s`d`2IaA|kVHx~JM&qZ&;m$|x7Awh7ZuX5&H=N>4o`&h8!uB1X~iK!B-Cyh zN9?jHQt2%$ku8zPr7$VO>*eURRfUcyd)A5<1g|*XO>HAW!^MG)P3^bOgRx-;_AV!L z*bUMHtaZ2UQ}wD_ZQw_hZQ93(3XX0tJ&~hAb&gU<4}XZ4AE}o!YE3z8yKX z$(7RHlfSnRId%TNaP^nwGL$vap^q&&$we+D6Ta7w>kXV#M|W1gI`GGw{4%4F>Z|E( zx#w86nA7vb^>iYyxLdMq)sC>OTf8$70i{~46Ui6tk~7&JHT2RbRFWsDc)j!Fe%u;E z+OgeX`LN{j%#Lv`Qes&s3jV6@bBgyVKzx&WUwN%7<; zhSKAu<+ca@R!4Rg$m)%caeFuDdZuV^cifrAEJ_#PO29KG!uphWJE>&W^>x==125j) zba}4>{wT=|7ap^pFZJS|mvJ*f{JZd{LOr0PiirLKSq4+*H`5Ughe$bvb!vHeh_VVc zkjfF1GHUlir*D<<_^`y6Byqh*?BJA{P%Rd-olai_Hr7rbx#abz`|Gg`xazg=PGOgk z0*o@tSu0)isHq7tcE+TxMxg-pT=|e5jYfy%QhPG_-*0<>J^e?kd0Gm1R|v^0w&i}y zYn_^oF&T}U?Pi;+&}eL@6}e?ouTHvbPj+LAFNZqeoXZE-mRZ`YSbkwvl5aX9sa%m~ z;d{4pE_?Og)OAtH<4ef1l-k}%C)x2je~LxdzERp@Bk$r8jUlE7*ryjmC>MKvV8Kx< z5Bzg@)mgKqx30C!^a|haOX2Yg&4YVBC>IMw!`nkv{MQCU%4`j2h2)65h!V8iQc=R)yo7xB0-VYRrOb@QZ^A>|0%P_& za3s7%Joh;{z}?L$Vur-#VZ`Hb_KB+eg^ilrA~-g`$n1{=vg~6z1sj7eB#6d3j7Q}+ zp<7nU8+wCrQQfsbcLzFpQl(e(dzsPqr$-R3`}cQTxP^5WkSYpNyl3`o{FDtfq9Ymh z-sbYTSlJTY938Si&VL>_ps3$*k3-B&6SJk}YyG^yb|X8|MzJd6;HfaY3}-ko91eIr zzwOP?;6WSrNK!cfue?aagx(!t;f8Ju7Br9~oezs!Bv8(F{9WfZ8}>t(>*qIKI=BV( zzIt_7H|>ou`>zmeozV80A!f=hc)|84lyy3upxUEi%y6a5VsjF(<=}NtWBhl1WyXh7 zAdaE$@J0RNUwqFV>yjtI(n9jfQn|ScJB)PQA?5*8+Z`*~Cl^VHWa2?q6QY@}Ny$n^-qf2jG_du`_4NIxk8k$}w z%H{P#%ZOH&+H0rfx>WfhwS|ti@G6M+2%^3Ga=2I0yVmqVtvh<(G;$$MQgDLIhz!rE z(wWW=b61}mB1$n&I=K3MEs_*bzg$RM>G{#A_#p)<8$xow$J-KEj_$DZP>rH04Ey&5 ztvwEiT9HxM^Hee3V;F=zvJ_ta?Y!FYrOa`o9Xj_a$meqT);EYeAy0k_#Q19zO8E;9 zqKcb}TNT)6VIZE3Rp(Y~{YGKwyq=29B~u&2F548Oz?uz={b32GGcxl+w(x4f&8*hM z>##63MiUPf-s|yFa*?aaY+J&tdbJG+AvCM9Pux3WK5?}#-ZV8Fsi*oA3-_(l8@eLB z+ud|-(xhQ+BH|-EWG9ceG8_yc)v-TgPD(tWmiTL11M`JALl}D^!hb0 zVhC>Ys2z^44%jwdT~l_QfO9>Hjdoqz*?VK0N;#@|TKkEwqfqEtld+BhTeEp>4~uQ0 zEstHuI!Z`KKrv=7Tl}u|pg%s2IQ6HczWsOUR)%6>8~gh&67&$QnNAP*k(w8k$ZI#f z_w~}sWAfq7BxlV)$=SDh`eig5noZ?aNG!iA_EYjko9U9yXsZ+ydMdF?$40|1$3b63 zI{e7tE`9^DinhThdRJO(L8tB!^+i-zy`LErBo-7hr)7KeaRE$j(-dhVaretv0CkzA z%L!_ZMz5jgAnNN+z>#SIGFOf>9;-%I>A}(?t|=4Kn$QJ{d#&b z$Im$$;9OyaFCP+-Rca{H-&0oZUH+UVA5Q{TO{EK){(BWVsf^2cFt9^0SN>{sT*Xsc zez{N>{%INM(io$xGlHJfT~{j96r^C7Gj>6N*<;OP$O<1?nDjBn3C)-JZLw!o>FFtO zpb`Y{x3{pFxcG{8LO&_|YK_|}uAE}S^YBWE&|$NWf&1riuO_)ghP*w%X#YW+Bj0aI zuTI}%4@&ha-3#d3QTt~thm}Q;yS4 zN4VOZ=ST~7=v$)AzdGLopGwPk%d~Nd}RP)ZzLGK%hEGe)sr_w5Y+H;beY9STxUi(0OgQ3;C)gbJ+ z5A?q7Z^NGw4Vo1&_;6QkfVL62;NKiA@0j9^$xRxEQ#*KF66Bt?Hyid&)Qj{Li*+mH zhWJaIDlXKN?A!6d!1enX?XsZ(9DYpvnw_3GZ~HV^q70rW{)LGJ2~#pUn+<7*aAN)L z-Jj(?pLMe;>GK?VovitwIvzISYl9ZPNlSjLfL3Z1UUr-ppW}O1?6Pc4-0k$138(U- zD8XKybPAk6B%=p>%J;2P$yF1FaK+rj0#0WDw@vqG>^r~9pK2v%bJ+5J?lHE6E~igd z?Zd!j534Z)wGHqvU(v~Y@lb&|lyEt#?Qa>Jnh<6urAoSW6-1DScQ&S2ltBSzty{U3 zXnT0oq2+c@eya{`VBe2bm;kZ~LUT*`bg;QQ+BpZ?bc+4~| ze{&cnu(`-l+05b27VJ!0tDzpzWrI=1U^KzbbYNhp#ue*)@LsMMF~ zs_>6FTt=5ZTR7fllKB+yhup_JG#1LCa|pFQr^@-AMag$ZqL4u9=rSdTj71_CyWN)f z1E2c4c4Xmq@S@mNn)~QAy%|Vi*5dJMMoX5@7pTcI>|*O8?A!`N{LqgLuVf z81pGcg3MzO(kv;OoY_c=vF9bm#X^67PESfup=b!+jdk91p5SDsf4;4DIB4J(OXc$3 zQ+9ZoL!Xh|cpOZcUbJIWD?VvaN@>VeY*D|OUl`JRG0D}tl$3u-pqrJq!W3tfbxy?3mglsoYsd9)r@U8Ls-FX=g7eUFFh62q^AZ|%ogca*Ev z4EjCu$npPDNncbusB%IpWIe-hgJO;9 z=amD{-fNM!?6|B zeqxU;SPKrGkjLH~VlQAo7y=##Psn}u7NH+FEDQmULpe--DxWL(979u4I(Cmu)Fi6g zxiYwL(eu`*kc+_&TMEW_YyM~>Z8wQXhwLx86pzMEE(xM+G%x9~f4bNHI}5t-#(AMN zJ+hbKltxw3N4H%@JEP9C4So4pJ4@pR$2UNxxr@(#x`6+uoR;bTQ`uOqzpFT-Kg%5L zrcVG@3jm;N4TSZdj`Z(qA^vYL9}5fHzoFuPVZLGwFLz{<_S`r!%uuXi*2^_BR$K%` z5?T~H=yB3U$|*J($%H_H7M652VhOTIY0YuE0&VSG;I@d42t@<~wYD;XMQG>(75Tcn zQJK^Oj~H=I-5iyC--Fk;5s#kqN2naL8BU+KBIX_M9k17}n|H4r2^ncwI3uR?`%>v_ zmMS8iP9ofhqNM)cibP_m6D+#e;f~qsGEuG#5>C%^P?PJ?oQErI$FyynS2YRCnUxpc zQjMFF3?9WR3p1#nO$u#6yXWjJ$8aUkv4`8^t8WZsWVx>@-&>!V@84D5TAw>Tnp>j< z+~Uc<&crk-BP%{;PZ@j{N8|sZ#9(QBXrb#NrHYCs&pQOr{|@gG3E5On zfU-0`psgKLHvF2G2jSR-a4=DnH2zL35ztdZ#9JMHQB~m1Qih>&xi3XbsqpL81d@^V zPT1&8M}fBM{lwUf3rMonURyb8gz%55P59^!>4RjXDnj8%lNbU?SL@4+TNweL7aCu^ zWM*r9p$x1HSB#*iqoQL9HknamRG_2{jKd-%WNm%1ca zNL`*bNkT;BPdxTpJqQE2HBBC#q9hRr2Z&OE67W{SQ3Uk@v^yn2a$-J6NLfX@JzScL zR`6KC=53*jrdOA82(qc^R)C!pDS9xt2xEyj5kbiX^OsI*wB(pE8EJVz9)<#N06`bt zkIHclr?4VRq^m5Mu%dUetut*Od*6_y`a1ANu7$?QwWI9gzp#fFDy~FJZ5azF@0Ew>E1x-yzxO1&-f%m!zy$0eF0*3qDWTE z1#oWCKb=6yy(=v9KcZ!lbI{^&aAFRfbm*vPG68VjG|R($ ztU*s;=W`aGSTV)LEUdC55LS_2%Mf)K+E4XBmso^jp=`uIM#p&tCk=PNb9a#?{IRw5 zBSnDPc?(*XOwElAgso#50hG(?lZePjDcCr^dRrP)pyzQRp>Ssvj-|3Ne>LodAF4-l z3WiqCKuJ4tMhYt28ldeGTQGm)?&#Y%!Q!b z>fq4G$HdwzXcVHa?a)`Qc|8}$!vhtI%MyjGjLUCmMi3k1A@{CX}OZu^EzLIG5rJM**Ks5 z1LNuBO?zsf*OyFh`3m%QMhg)R>#+*;)p`$SGW_H>YxG4(Vzdp5Civg?;7NG?( zS*-njJ!A#Eid&xJ{9^y?U#c*GK-34vLWn6r09i24Vjx_E_C{9&zy%(_r0v4qIs0LF zW{vf5hLLv~Je2Qc_9YBJKek7qv>Ml19iGIfBB+3Iqc2E5z35^gzimgI`hU66k3FU=*3#1->MS0EdHoaN@xR&xi)?0~WMywf88 z@jlWyI_gw_wzV3I&BdSU)+2ypBoNrE#iD>go`=CecsZ|ZGpqk?KlHPB-v3%#i~J5* zi@eC_@^njQxMK2Ux1r_LJGTVUm!{$Y9uv?hPZhy9wd!C$gj+t-|3P<-i~mG-9>S!2 zEiLoNhy6!*2QD-y6wq=m;JlsegKD6_N}a_yioS8&Ab*3jKa}lSdE{}A4a8@!;N^n; z0&idC4y(C;7Sl~T@pqbs2ze8XdQn$+>&pF!{QD;5y;Q9GP2x+G^#FbftyjzrBQyZ` zX|9^I0(>&gQCnPuW4ndi#b@W95lR0L`l)P+3E}dfa;?9rrFi88{#t&nuL7`*z4fJt zaPjwTA~0`A>Fh3yv$mW>o|X1ATN%%_FQ0*?{l$J(=lqW|IJNd-KR_$a;S;T>{tvU` zRpLPjaBP_w8BnTL0@K60P42(`jaR$u{b+Wd=6x(?%D^1lmQ86Kk%lPE z$Q;p@m_C}sgjW*vimTM8%mir4glyO^&B`2-J}%A7Yhx;{ECi?|&_n!&%bdA3;cbd# zyl(zhFW18d{2p~(__(%wlJM&L5XPD4l+$RR!Zl$!VN$VxRoA>)-2mC#v+is79a5!V zs#YMp-V!E#%lQ(Ad1OA}S8b_h`;&tW0=Brg~w7U5faqu8c*qtm*RF{ zsU2=tG1MRtNMboE%{2MD4X|~`^0Hs{qhe%K-jMh+B{BYRW$^dyRcp;c%(S^4TiUIr zHJg!`)=6(rY~gcp5kNlV`V&MpAzW}H{f&@u<%Xd+dSmv9^t!q=a}T!wGJTwsYViBs z1V4dxv^`#3b3*2<4@GOOA>77(LuY5h>)604|Ll%wUR}7fEqgMt;_y29&wxVnuF}aP z16gZizxy>c=F+K?PDfc2;fuB(I1>>sx*HC!!vs9@`}0r9fL$TH0JH&ooc5tu;^H`m zSL5b=|8wF79MSV&2kg<`xUb)Jpo!M6sSGVhdZh&O_|X{bDw39e=(~_CqhxtY6#G)GJ+={CT{p-(X&a-V>@1s)n!S>|@x#Pty1?0nit!TI+q@ z_z~#lN(!IPIKT1?u5^=$Q4N^V*R7P|vJ z@@xoTtao;lV>4wBU`zkNx*IKXY#I-tu6~oi?F$Zmkzpzd;58aTzfK0Qdz-$`%q;GK zo^H>dcc|5y?~gYw#4JQkThS}YbJ|#=g9CW8YuHif%YDf+J z7(+{c2rRqY?gnD_@1f+uP@STHUq$?wa*~8{gimidgTnTVIrhOYWFAE~?o2?6F3zmo z&`z@NUXg?kf4H!H!56Py-9}20zg7C;{DBd=k8IvfhKA@TW>UYigIi)a@~w4SQLjYE z>1;V;R%2(i?u1z{>l)DHCW2`P5J`~QJh+Hf2yb%0HTT0#@Mb!fZjV1EB$OkDW#dK& zn=z)```pr+ZuC5XV)^Eu2~Vf`U~P6yVvH{DGU&5%^9r@Lw>tRdNN&XG3)$H_YeRg@ zbC32=;j6qc>grH8Tv2w@U^63I5SKmR%PrGTOm=QHwl|$>&rl5Yylna^1J{}Zq(=Kq z!ePuDrp3VD;C2EuSLz2%D-uh#@>*oZ)yqvpwmp))W z3NFm4x_UPh+sZ0e3tY~Qx{>p5f4}lWY0f&qcPWoF<25PcL)l_MOL&Rz=_lyv?=(Cr z7wLBFp;X(Ba{EuYFC>4k!^!_{JAnui=g^XW$kqLX&ioE@iDaYm{4jXtwle)rI4DbB zN`WDAvZ*6KsmukQ4@E~r9;59&W{pv*@&2lE!sn{>z5z;MS-al}|I=TOsW0_0KL+$( zK2&;J=2qLZ^ay3H6)1D8c6)<+IINlwG{V&*bkfq}6h+Hxn9l1|q8Ye~IA#}vzFSjO z!CvKo#XGg{doUA6XuRkHJoY4;^^jro#9f2K8%bB7^S9=?&egH@k1jNe_TY2p14ruW z`h5?7P1j90KfB%E>l4?@ZC1OJpy`*+pKj$3DXWbgw?>PA0QtE0(U*sHy3fUx;XhK4 zj=4q$5&Siq;e4VeIlg;cBe@zaur?;F4*Fh$Y*w<4XKW8=a=1!vgK`|X;^5z%PRQ@G7idWy&IYDm$lO`$-2rUx75Xl^6=yd#?qjGA z8aDMtRqc|ZR2w-Pp*=0Q=3Mus!r{DM-j4x5_v@%1DOVK^;vQxYpjc+3)H&*RhxqJu z&sE0GymX%sxqKGwv!RGZLl#x@bz&O4@RZi?`D{ERu6YhO#C8N|=((YMeFk1j@Q2rd z?{iV04JS3~4Ik;KR;%Qrv9k)+^tRg_cL0Wdo17(s122opcZIq}n{Slhsgu>NF z0AasO&cvP0o618wV>fR1n?H_Y8E+`8(*vufjmk_W_O7hIK2#!AX}zrxlS-fFs$%&f zo9i@t0uHgYd>^8mpNItqWs_ZR=zD1q)I?{*7EEb(dmA=@cL;cdp%JhHWxdijgXy&{ z8=`S%VDgfVdTqUd9gJ2HdY^hbBn(B1@G)hi-C1x3kVmy6yO6-;((Mt%!j%{VSI_+V zZD)NGxera#ltbsfZK9_aeA^YgM(R!>X=?$)R@iKs5_YjR&b6zPtvtN1);BkseQhqB zYP6EAzU_d{8s7fjvpfGji}a6$I0)$F3@w$MZ3yUP2^bj|{;?{DqmwfM$4~$B&#twz ziQ~_+wSlvVh>4M%@z2+#O>E7a%?X&8*#Bdc`%2Tw4!Z^Evs$k&7Lu-$D9kR80)gG- zT#MxCqFENiN4_YUSYQq-L7U|JD`(I0DZ+RzUTJd!>(;XE@Ydec-E>rE0g5uPHX=CT zg_yY2ya|~KA_0tFG7eTXPlB3AP}kh7FpmNTR5^h`Gd*S58(s)|lNRzSgi#e5*FLr^ zwO>8REYfRN(tzhM8kvm3UyzSOxqxbXm8mRZ8A2c(qYxk|`E*c)Nz#CJF*FCwk1DPf zuRwmfALrivn6B3iVM(?nOGphfL>L(b5zZX|4P(AQh+|h{mn#&c8aN4Bl4IASpZS)@ zp7%BoiWZ({nH?5X8@?05g!h){^2tA`cBQZahCvLvbQcFc86p`_*y08h-XL6)p$`)V zi(updaD@xHaM$yMBq!itw`kWP)*UP+ED`XEhpXWn@L61SO$nNa?x#kl?_UkiCw+`U zbK{`r+BEQc?5BQ7R#62IOeW9qqf~&9h5Rc^TgYg^~llhmBA#uw*hDtb+f zLM7i*sL@W;Y;o*V>NV03TmFD`PnCO(haGoICPqDeuTnx;o(P z(q{I4GSlG5gOCm1HP?u8#?ETLu~u}hm%^;yJfoWfQT+`*`R(J&2XevK*7*C$E#0rK z&%gBL+id9jyZ?iK=sVz{rr~&}-euLaQrb_c$sD;NP!AoiKZe%FakQ@dD4=Z*uPkid z8kmZkS>B*{5U)1>7aFr^Vh6e5$JFn9sCuLu54k~iqG2pXMRum2J!eCl`l(j%^KZ`A zQ=$0c)>!K>MA=3?6*W{A^qCTq`eON+wx_j+cs6QZc4(pXCn9bbF&y zhD@j{%dtpD%`KU?qa^<4;*6Ce{Z;O2KH!*7{X*J#c80xf ztS3{GjC5#c&Hy>f=3Z&s6FldD9>yh;ukAm_%f75?R~7dUe0JC!XEufKPt6|TEmOjs zT{0Mre{W?{YQqqz)L?(wO^dgQD+6g^{IZpmIU3|FU@5UFl-5tx-L065vEM*-L<*Th zqQxR^(>1w);nWi$qkq>itq{VsQJqSgWBc^!T|ETviJVX>!DpUkLstpqOSAn<)ke(( zvnil&hw&KTYUlqr`J|T!QS9AHmObWSl^%+)n`~%^OvDN!sz;w1Bl7doFoDK1`>$mP zpw00kcAfI;5`e$xH6UO7a3YzM9^zE`My6Ey-i6gbZ<+m6)RAo+*-;x=Pg@|pG(aNK z`%{=zMp2fP%i^eMgbkESu$Bh{qsCA|p@XKKaigfMt8-<-Ln6|B+2A-snBrXs;s&n~ zbxSBgI+wkQQZ1;&J=04Zi_k5gH2Boer~^0KPik;44d=^S2&#&(bzdtps%+Ry=j}TC%3lDVQGbG=V(rQw>hPeZc6X5?E$OB4yZ*P z!Ta0U@omc5ZbwcFg&mcKknHRs!{c7|9qyms?}f@LY1>@g*M*dTu2(fX{~Vp|#Dw!o zF0`e=Qjx#s%tvVAuA}1Oq2>GS>Dh&~Iwq!K4xp-V8+O~$vhKk1jH}*VhHpLs9?d@! z5zFArlkw{RG}Udby$9@P+2 zk;FtPLmo3mLL!Vu3VAgMb*a3<75=Y#|9`F4s&)Un)_2x-&OZBmdw<_LXP>>#Ip5y% z-S2P4XNFZiz23k`{WjHC#GWxz_AJMp<#s*Za0y2o;+K7W|KQug?+GbBz4MmBoJGxd zExtA$cY4B$F6c(Iq}Y0Rhd5>nJ?1QxEi}_<>!Unk(A&Z-?$DbNs6T}+eJ!9IdD=ei zFkrZ|;Z)7d;O^3`3gULowi|LgU%l9Lug&>LF0{9eULDzYC4^rl(=uhy9g-ZkMlAT! z`(YVFR}DEiyuGljMP_#Td2T3CUuI_HU<|EZ+Q3uo0#9scIOQcyZ!2qEbFJ2<> zHZefknupU+w=5yd4^NLN6c{~fOgC4AD7)Ez$hE7gS6Q*E7T|+VElc$WmBeZlb?&ik zF0qblBcG(i_YW{fD^EU;K-dPM!eb8Q%h>GyQ{9HI*+fch^XRVZRBi4v&U?RR*<>5s zbyH+zzFDt@-FWPlB!^!fCtt@ARcO!WMveCBee$qxp6|j=pIr{1WCDMz2;6Dmq_inD z%w<{Bpyv%St&^x(>E|KM1!dX7AJtfgXU&ht9MmsC$vnv*VwZ2+f5wQyc^~BdSs>-9 zr+8ptI!3p3bzI?;hLyh4w4!$UM9^ytxFKOx_JwmoBVn+#ApDFLe_UvsTKMP@Zsek3 zCU-UfcT6{J-V8&ckgOI$wE`PBp7(z*Dey6Rlj55{#Am(^)$v%d=T|jM9pN(C~qtu+~+jXqBD$Ud5M@>^nT-SNp> z)Vq3@&v{p)4|#jLuIo=M88~y-7K^fOtvZXIfoQ`rV(3PWr*FtVs8*45v^&teX!d1q zdgp_!8$yR~we9*@r-C8=t(SUD)DKG251Y$@*DR=`Kp29hmEE_6B%ShgcB)|FlxF4c z6z$YvBFeVU#$7hL*(|zkeXUPF_V}wElB$Z6&N<{&w}lz4rAb!*HN_$SuO?3ZZ@??9 zg?Wo6cWte2d*as+=?75Ep)Fyrv02s~O|3H?#YO8pDXMLVuEn0BT6KrcQoJJgP5hPM zh1ST8m9eEUUZmGNI&eJ?Wu7x|$?0{@34WyK4T-+9QPmT{-A=EWTcrp6dF_gx;7qJ{ zWlzX8Pc?11XoW-IMXkL91NqM4Z~}deK1d}n%1YZ;?)`CpxCk@W?&dY;)>zUjlex%a z)VQ0o@uu4A@*T}9)!sPQyUK-n;I3o`=Jzf)Q`<6{tK6OiO+qX4= zpna8Hp=vJk(QLTQ>(*JX3Rq5?GI*m4#s0cA7b2^0mtnIGDL?J*Ej_B|NXdw6P94hsF3>(G*1vk1^_2OghW??$*ZG|f`iso+o}qEWqfgbb-a~8c69A& zv4S^8%S}@T{3|IMZ!JH1=f5m_<92&chtpDuu!gX);eb=u)`+2Ecuir3v-U6%rw-2f zMGw;aanIE-Fu_Nfj08QK-(Bf${ ziW@}3f)Wx;rMdd6LO>c;G^%SL8PMKUPXvC)JpxmQX{kejn!g@#j_P9sDD@y!BV9NY zj)218a2Qkz0oObXg{eTHDgYjq>iYjsY-l83Uy3VWA&|WM0o%aJ#@JrnB+$zXP4e;i zPTR))oIeP-03OWH02gW?I||JoAP)MQ9RLG(jT7gBC?J3hxP~E(><$!t0?$Jrz$uLH zAByVYAqGSI7@*;2v*mwQ3lJ>+AB`3y?AK91;^-r|0jT)Jk)>0E=pv`x_sO)A+pG-6_Lma9RJG#a8IbvRC%2B&jv zsncu)$EPv|))c4mi55HY3 zFWR$Fo^`x#m>WuCu%Gpg&9fEd0Z&ICC~|^#?Q3cXoGU`#Ixl>Y?RE)gtA`y=WAA7F z(M$7$F!~7`U3)ewSmFdd=g4EJcqIYbSU<@qv#V($N`zzGA}qZGieR;fOPrt1ZR6aA zS@|(vN7FOtr%M1UFc= zsm3jP;w8Vg$|?hn7D`Lb)w51MBf(NT&~is3|D75*gLd$;IZp~!5iJ{mIy+p5n%8g0 zTH3wYVohI5xx6D{tSNJ`A}I1J9y-s*c3{aidut`N%z)O+Pa#z8l4lwj>XwFSN6KJ%;H8}bTM9wf(wEb-u&7}Fi zE%=tdg@`>92~E5%u^@F7NF@EZrSar6Qv_O}K_n!xa&6(Q%CpAIplqHsyLSr9?p+^A zcZ`zR!rS$V(3bMFDv zBmj)3QUd_+_r(MJ_f~FHp!8j2eJ>dSn0jc85gp(qSS3vH~8)I{r` zQAnizzd->g{nMHQ0wDRTqglJVS}b3klz%=uzZ#s&>_l&SvR!~eJL6u8KPIk<$=Yh@ z;MVnI8-{48?Iey}5IryK93A@@=J#w%)vQEY&S$4^nk8>dWrN{(pSL76+$ddv6-{R) zS!R85LY5uQyd6Sx6wVJNCMsR3qDIvW#Nf-QhWH(4namP{6)!Y)H<8Z-f)W&#t? zR3Wvz1h5)esMx+icbNR5o6A~2_IDZtXYTC7w7@G_UX~S(0jv5ueBFyTD4y{wZt_5? zU$ph%H9Ecj>A|53mvGBolaa3U=xLVH>MWzIX#Yj=dgkWOgojT)_p*qhM>lEL|1R)z bSMm=a(E`o`vyB)+M-vVe1A~omCSv~q3&+Ur literal 0 HcmV?d00001 diff --git a/1NSI/06_Listes_et_tuples/plan_de_travail.tex b/1NSI/06_Listes_et_tuples/plan_de_travail.tex new file mode 100644 index 0000000..0d33029 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/plan_de_travail.tex @@ -0,0 +1,45 @@ +\documentclass[a4paper,12pt]{article} +\usepackage{myXsim} +\usepackage{minted} + +\author{Benjamin Bertrand} +\title{Listes et tuples - Plan de travail} +\tribe{1NSI} +\date{janvier 2023} + +\pagestyle{empty} + +\DeclareExerciseCollection{banque} +\xsimsetup{ +} + + +\begin{document} +\maketitle + +% Résumé + +\bigskip + +Savoir-faire de la séquence +\begin{itemize} + \item +\end{itemize} + +\bigskip + +Ordre des étapes à respecter + + +\section{} + +\listsectionexercises + + +\pagebreak + +\input{exercises.tex} +\printcollection{banque} + + +\end{document} diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_double.py b/1NSI/06_Listes_et_tuples/scripts/QCM_double.py new file mode 100644 index 0000000..fff2dd1 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_double.py @@ -0,0 +1,6 @@ +m = [] +for i in range(5): + n = [] + for j in range(3): + n.append(i*j) + m.append(n) diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_f.py b/1NSI/06_Listes_et_tuples/scripts/QCM_f.py new file mode 100644 index 0000000..799e542 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_f.py @@ -0,0 +1,2 @@ +def f(x): + return (x, x**2) diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_filtre.py b/1NSI/06_Listes_et_tuples/scripts/QCM_filtre.py new file mode 100644 index 0000000..e0ff0a1 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_filtre.py @@ -0,0 +1,6 @@ +def f(L): + m = L[0] + for x in L: + if x > m: + m = x + return m diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_somme.py b/1NSI/06_Listes_et_tuples/scripts/QCM_somme.py new file mode 100644 index 0000000..78c3da3 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_somme.py @@ -0,0 +1,5 @@ +def somme(tab): + s = 0 + for i in range(len(tab)): + ...... + return s diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_t.py b/1NSI/06_Listes_et_tuples/scripts/QCM_t.py new file mode 100644 index 0000000..74316b8 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_t.py @@ -0,0 +1,2 @@ +t = [2, 8, 9, 2] +t[2] = t[2] + 5 diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_tictactoe.py b/1NSI/06_Listes_et_tuples/scripts/QCM_tictactoe.py new file mode 100644 index 0000000..c81f026 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_tictactoe.py @@ -0,0 +1,3 @@ +tictactoe = [['X', 'o', 'o'], + ['o', 'o', 'o'], + ['o', 'o', 'X']] diff --git a/1NSI/06_Listes_et_tuples/scripts/QCM_tuple.py b/1NSI/06_Listes_et_tuples/scripts/QCM_tuple.py new file mode 100644 index 0000000..410e5fe --- /dev/null +++ b/1NSI/06_Listes_et_tuples/scripts/QCM_tuple.py @@ -0,0 +1,2 @@ +t = (10,6,1,12,15) +r = t[3] - t[1] diff --git a/1NSI/06_Listes_et_tuples/solutions.tex b/1NSI/06_Listes_et_tuples/solutions.tex new file mode 100644 index 0000000..59dc546 --- /dev/null +++ b/1NSI/06_Listes_et_tuples/solutions.tex @@ -0,0 +1,28 @@ +\documentclass[a4paper,10pt]{article} +\usepackage{myXsim} + +\usetikzlibrary{shapes.geometric} + +\author{Benjamin Bertrand} +\title{Listes et tuples - Solutions} +\tribe{1NSI} +\date{janvier 2023} + +\DeclareExerciseCollection{banque} +\xsimsetup{ + exercise/print=false, + solution/print=true, +} + +\pagestyle{empty} + + +\begin{document} + +\maketitle + +\input{exercises.tex} +%\printcollection{banque} +%\printsolutions{exercises} + +\end{document}