Feat(NSI): fin du chapitre sur les string
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
dfcfe86d31
commit
809c20cc21
135
1NSI/07_Representation_de_texte/02_unicode.ipynb
Normal file
135
1NSI/07_Representation_de_texte/02_unicode.ipynb
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "651b99d9",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Unicode et python\n",
|
||||||
|
"\n",
|
||||||
|
"La fonction `chr` permet de passer du point de code au caractère. Le point de code peut être exprimé en décimal ou en exadécimal.\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "1b5a86a7",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"'🙏'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"chr(128591)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"id": "128b0f7b",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"'😂'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"chr(0x01F602)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "442746cb",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"La fonciton `print` quand à elle peut directement accépté le point de code. Pour cela, il faut ajouter \\U et les 0 nécéssaires pour avec un mot de 8 caractères"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"id": "59bcd496",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"🔥\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(\"\\U0001F525\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "60dfa4c9",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"1. Utilisez la fonction `chr` (en décimal) pour faire un tableau de 10 colonnes sur 5 lignes avec les caractères après 🔥"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "a9f74419",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "9bb194d8",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"2. Utiliser la fonction `chr` (en héxadécimal) pour faire un tableau de 15 colonnes sur 10 lignes avec les caractères après U+A000"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "eb44cde5",
|
||||||
|
"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
|
||||||
|
}
|
342
1NSI/07_Representation_de_texte/03_str.ipynb
Normal file
342
1NSI/07_Representation_de_texte/03_str.ipynb
Normal file
@ -0,0 +1,342 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "bf0de95a",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Les strings\n",
|
||||||
|
"\n",
|
||||||
|
"Dans ce TP, vous apprendrez les manipulations de bases des chaine de caractères en python (`str`)."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "e42ebfb4",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Str\n",
|
||||||
|
"\n",
|
||||||
|
"Les `str` en python ont de nombreuses similarités avec les `list` et les `tuple`."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "64156203",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"mot = \"Salut tout le monde\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "6a818ba8",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"Reprendre le cours sur les listes et les tuples et trouver les similarités avec les `str`. "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "640433ba",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "f758b002",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "35bbe2e4",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "ca07c701",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"Les `str` ont des méthodes spécifiques"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"id": "70da034e",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"'Salut_tout_le_monde'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"mot.replace(\" \", \"_\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"id": "952f4936",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"'SALUT TOUT LE MONDE'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"mot.upper()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "45762d2b",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Exercices techniques"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "6c221743",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"1. Ecrire une fonction `renverse` qui prend en argument une chaine de caractère et qui renverse cette dernière."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"id": "24a281d3",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"ename": "TypeError",
|
||||||
|
"evalue": "renverse() takes 0 positional arguments but 1 was given",
|
||||||
|
"output_type": "error",
|
||||||
|
"traceback": [
|
||||||
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
|
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"Input \u001b[0;32mIn [11]\u001b[0m, in \u001b[0;36m<module>\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[43mrenverse\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mazerty\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mytreza\u001b[39m\u001b[38;5;124m\"\u001b[39m\n",
|
||||||
|
"\u001b[0;31mTypeError\u001b[0m: renverse() takes 0 positional arguments but 1 was given"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# tests\n",
|
||||||
|
"assert renverse(\"azerty\") == \"ytreza\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"id": "7cb00bce",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# votre fonction"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "1691a5f7",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"2. Un palindrome est une chaine de caractère qui est identique peu importe le sens dans lequel on la lit.\n",
|
||||||
|
"\n",
|
||||||
|
"Écrire une fonction `est_palindrome` qui prend en argument une chaine de caractère et qui renvoie vrai ou faux suivant si elle est un palindrome ou non (on ne tiendra pas compte des espaces)."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 9,
|
||||||
|
"id": "b16877c0",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"ename": "NameError",
|
||||||
|
"evalue": "name 'est_palindrom' 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 [9]\u001b[0m, in \u001b[0;36m<module>\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[43mest_palindrom\u001b[49m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcoucou\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m est_palidrome(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mazertreza\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m est_palindrome(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcaser vite ce palindrome ne mord ni lape cet ivre sac\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n",
|
||||||
|
"\u001b[0;31mNameError\u001b[0m: name 'est_palindrom' is not defined"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# tests\n",
|
||||||
|
"assert est_palindrome(\"coucou\") == False\n",
|
||||||
|
"assert est_palindrome(\"azertreza\") == True\n",
|
||||||
|
"assert est_palindrome('caser vite ce palindrome ne mord ni lape cet ivre sac') == True\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 12,
|
||||||
|
"id": "4f8ca51b",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Votre fonction"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "a06bc2e4",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Chiffrement\n",
|
||||||
|
"\n",
|
||||||
|
"Le chiffrement de Césars consiste à décaler l'alphabet dans un message pour le rendre non comprehensible. Le décalage est appelé `clé de chiffrement`.\n",
|
||||||
|
"\n",
|
||||||
|
"Ainsi si la clé de chiffrement est 2, on aura\n",
|
||||||
|
"\n",
|
||||||
|
"| message orginnal | message chiffré |\n",
|
||||||
|
"| --- | --- |\n",
|
||||||
|
"| les | ngu |\n",
|
||||||
|
"\n",
|
||||||
|
"On supposera que le message original ne contient que des caractères ASCII (entre 32 et 126). Le message chiffré sera lui aussi composé de caractères ASCII entre 32 et 126.\n",
|
||||||
|
"\n",
|
||||||
|
"1. Écrire une fonction `chiffre_lettre` qui prend en argument la clé de chiffrement et un caractère et qui renvoie le caractère chiffré. "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 13,
|
||||||
|
"id": "db6ab5b9",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"ename": "NameError",
|
||||||
|
"evalue": "name 'chiffre_lettre' 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 [13]\u001b[0m, in \u001b[0;36m<module>\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[43mchiffre_lettre\u001b[49m(\u001b[38;5;241m2\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124ml\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m chiffre_lettre(\u001b[38;5;241m4\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m~\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m#\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m chiffre_lettre(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m10\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m?\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m5\u001b[39m\u001b[38;5;124m'\u001b[39m\n",
|
||||||
|
"\u001b[0;31mNameError\u001b[0m: name 'chiffre_lettre' is not defined"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# tests\n",
|
||||||
|
"assert chiffre_lettre(2, 'l') == 'n'\n",
|
||||||
|
"assert chiffre_lettre(4, '~') == '#'\n",
|
||||||
|
"assert chiffre_lettre(-10, '?') == '5'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 14,
|
||||||
|
"id": "b5b0a910",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Fonction"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "765d8791",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"2. Écrire une fonction `chiffre_message` qui prend en argument la clé de chiffrement et le message et qui renvoie tout le message chiffré."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "93ab941b",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "ca7c256c",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "43e00026",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"3. Écrire une fonction `dechiffre_message` qui prend en argument la clé de chiffrement et un message chiffré et qui renvoie le message déchiffré."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "395c7b40",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "534209fd",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "271a2087",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"4. Statistiquement, le caractère le plus présent dans un message et l'espace. Servez vous de cette connaissance pour écrire une fonction qui sera capable de trouver "
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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
|
||||||
|
}
|
@ -1,14 +0,0 @@
|
|||||||
\documentclass[a4paper,10pt]{article}
|
|
||||||
\usepackage{myXsim}
|
|
||||||
|
|
||||||
\author{Benjamin Bertrand}
|
|
||||||
\title{Representation de texte - Cours}
|
|
||||||
\date{janvier 2023}
|
|
||||||
|
|
||||||
\pagestyle{empty}
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\maketitle
|
|
||||||
|
|
||||||
\end{document}
|
|
BIN
1NSI/07_Representation_de_texte/1B_table_encodage.pdf
Normal file
BIN
1NSI/07_Representation_de_texte/1B_table_encodage.pdf
Normal file
Binary file not shown.
89
1NSI/07_Representation_de_texte/1B_table_encodage.tex
Normal file
89
1NSI/07_Representation_de_texte/1B_table_encodage.tex
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
\documentclass[a4paper,10pt]{article}
|
||||||
|
\usepackage{myXsim}
|
||||||
|
\usepackage{minted}
|
||||||
|
|
||||||
|
\author{Benjamin Bertrand}
|
||||||
|
\title{Representation de texte - Cours}
|
||||||
|
\date{Février 2023}
|
||||||
|
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
Dans cette séquence, on traitera des différentes façons de faire correspondre un caractère (une lettre, un espace...) avec une représentation binaire.
|
||||||
|
|
||||||
|
\section{Table et encodage}
|
||||||
|
|
||||||
|
\begin{definition}[Table ASCII]
|
||||||
|
|
||||||
|
En 1960, la norme \textbf{ASCII} (American Standard Code for Information Interchange) a été crée pour uniformiser l'encodage des caractère par \textbf{l'ANSI} (American National Standards Institute).
|
||||||
|
|
||||||
|
Elle définit 128 codes, comprenant 95 caractères imprimables :
|
||||||
|
\begin{itemize}
|
||||||
|
\item les chiffres arabes de 0 à 9
|
||||||
|
\item les 26 lettres de l'alphabet latin en minuscules et en capitales
|
||||||
|
\item des symboles mathématiques et de ponctuation
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Chaque caractère est codé sur 7 bits même si on le représente le plus souvent sur 8 bits (1 octet)
|
||||||
|
\end{definition}
|
||||||
|
|
||||||
|
\paragraph{Remarques:}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Avantages de la table ASCII: \dotfill
|
||||||
|
\item Limitations: \dotfill
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\begin{definition}[ISO-8859-1 ou Latin-1]
|
||||||
|
Pour rendre l'utilisation de la table ASCII plus universelle d'autres tables ont été créées.
|
||||||
|
|
||||||
|
L'ISO (Organisation internationale de normalisation) a proposé la norme ISO-8859 qui utilise le 8e bit pour ajouter 128 caractères supplémentaires pour un total de $2^8 = 256$ caractères.
|
||||||
|
|
||||||
|
Parmi les tables issues de cette norme, la table ISO-8859-1 (ou Latin-1) est celle qui a été le plus utilisée en occident car elle ajoute les caractères accentués et des nouveaux signes de ponctuation.
|
||||||
|
\end{definition}
|
||||||
|
|
||||||
|
|
||||||
|
\paragraph{Remarques:}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Avantages de la table ISO-8859-1: \dotfill
|
||||||
|
\item Limitations: \dotfill
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\begin{definition}[Unicode]
|
||||||
|
Pour assurer l'universalité de la représentation de caractères la norme \textbf{Unicode} découpe l'encodage en deux étape:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Le point de code: association entre un caractère et un \textbf{point de code} codés sur 20 ou 21 bits
|
||||||
|
\item L'encodage du point de code (UTF-n où n est le nombre minimal de bit pour représenter un point de code).
|
||||||
|
\end{itemize}
|
||||||
|
Encodages les plus utilisés:
|
||||||
|
\begin{itemize}
|
||||||
|
\item UTF-8: le point de code est encodé sur 1 à 4 octets (ou 8 à 32 bits)
|
||||||
|
\item UTF-16: le point de code est encodé sur 2 à 4 octets (16 à 32bits)
|
||||||
|
\item UTF-32: le point de code est encodé sur 4octets (ou 32 bits)
|
||||||
|
\end{itemize}
|
||||||
|
\end{definition}
|
||||||
|
|
||||||
|
\paragraph{Encodage et décodage avec l'Unicode} (en vous aidant de \url{https://unicode-table.com/fr})
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{p{3cm}|p{3cm}|p{3cm}|p{3cm}}
|
||||||
|
Caractère & Point de code & UTF-8 & UTF-32 \\
|
||||||
|
\hline
|
||||||
|
a & & & \\
|
||||||
|
\euro & & & \\
|
||||||
|
$\aleph$ & & & \\
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\paragraph{Remarques:}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Avantages de l'Unicode: \dotfill
|
||||||
|
\item Limitations: \dotfill
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
@ -16,12 +16,12 @@
|
|||||||
\begin{center}
|
\begin{center}
|
||||||
4D 61 74 68 3A 29
|
4D 61 74 68 3A 29
|
||||||
\end{center}
|
\end{center}
|
||||||
\item Le programme de l'enseignement scientifique de terminal contient \np{65252} caractères. Quelle sera son poids s'il est numérisé en ASCII? Vous exprimerez le résultat en octet et en bit.
|
\item Le programme de première NSI contient \np{25107} caractères. Quelle sera son poids s'il est numérisé en ASCII? Vous exprimerez le résultat en octet et en bit.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
\begin{exercise}[subtitle={Table ASCII et Python}, step={1}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
|
\begin{exercise}[subtitle={Table ASCII et Python}, step={1}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
|
||||||
En Python, il existe deux fonctions qui permettent de convertir un caractère en son point de code en décimal et inversement.
|
En Python, il existe deux fonctions qui permettent de convertir un caractère en son point de code (lisez place dans la table ASCII pour le moment) en décimal et inversement.
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \mintinline{python}{ord}: caractère vers point de code
|
\item \mintinline{python}{ord}: caractère vers point de code
|
||||||
\item \mintinline{python}{chr}: point de code vers le caractère
|
\item \mintinline{python}{chr}: point de code vers le caractère
|
||||||
@ -31,3 +31,51 @@
|
|||||||
\item Comparer le résultat avec la table obtenu.
|
\item Comparer le résultat avec la table obtenu.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
|
\begin{exercise}[subtitle={Norme ISO-8859-1}, step={1}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Chercher la table d'encodage ISO-8859-1 (ou latin-1).
|
||||||
|
\item Comparer cette table avec la table ASCII.
|
||||||
|
\item Encoder le mot \texttt{a«€éø}
|
||||||
|
\end{enumerate}
|
||||||
|
\end{exercise}
|
||||||
|
|
||||||
|
\begin{exercise}[subtitle={Unicode table}, step={2}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
|
||||||
|
La norme Unicode découpe le processus d'encodage en deux parties: le point de code et l'encodage.
|
||||||
|
|
||||||
|
Vous trouverez les points de code et les encodages correspondant sur le moteur de recherche \url{https://unicode-table.com/fr}.
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Compléter le tableau ci-dessous avec les points de code et les encodage (représentée sous la forme qui vous semble la plus familière).
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
|
||||||
|
\hline
|
||||||
|
Caractère & Point de code & UTF-8 & UTF-16BE & UTF-32BE \\
|
||||||
|
\hline
|
||||||
|
I & & & &\\
|
||||||
|
\hline
|
||||||
|
\euro & & & &\\
|
||||||
|
\hline
|
||||||
|
$\aleph$ & & & &\\
|
||||||
|
\hline
|
||||||
|
& U+20B3 & & &\\
|
||||||
|
\hline
|
||||||
|
& U+1F606 & & &\\
|
||||||
|
\hline
|
||||||
|
& U+FE9A & & &\\
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
\item Quels sont les caractères qui sont inclus dans la norme Unicode?
|
||||||
|
\item Quels sont les encodages possibles et quelles sont leur caractéristiques?
|
||||||
|
\item Comment est placé la table ASCII dans cette norme?
|
||||||
|
\end{enumerate}
|
||||||
|
\end{exercise}
|
||||||
|
|
||||||
|
\begin{exercise}[subtitle={Exploration de l'Unicode}, step={2}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
|
||||||
|
Notebook \texttt{02_unicode}
|
||||||
|
\end{exercise}
|
||||||
|
|
||||||
|
\begin{exercise}[subtitle={Encodage UTF-8}, step={2}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
|
||||||
|
On verra...
|
||||||
|
\end{exercise}
|
||||||
|
@ -2,7 +2,7 @@ Représentation du texte
|
|||||||
#######################
|
#######################
|
||||||
|
|
||||||
:date: 2023-02-03
|
:date: 2023-02-03
|
||||||
:modified: 2023-02-03
|
:modified: 2023-02-14
|
||||||
:authors: Benjamin Bertrand
|
:authors: Benjamin Bertrand
|
||||||
:tags: Str, Python
|
:tags: Str, Python
|
||||||
:category: 1NSI
|
:category: 1NSI
|
||||||
@ -12,7 +12,22 @@ Représentation du texte
|
|||||||
Éléments du programme
|
Éléments du programme
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
|
Plan de travail
|
||||||
|
|
||||||
|
.. image:: ./plan_de_travail.pdf
|
||||||
|
:height: 200px
|
||||||
|
:alt: Plan de travail
|
||||||
|
|
||||||
|
|
||||||
Étape 1: Manipulation ASCII et ISO-8859-1
|
Étape 1: Manipulation ASCII et ISO-8859-1
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
Explication cours sur la différence entre table de caractère et encodage. Présentation de la table ASCII puis ISO-8859-1.
|
Explication cours sur la différence entre table de caractère et encodage. Présentation de la table ASCII puis ISO-8859-1.
|
||||||
|
|
||||||
|
Étape 2: Unicode
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Étape 3: String et python
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
`String et python - jupyter notebook <./03_str.ipynb>`_
|
||||||
|
BIN
1NSI/07_Representation_de_texte/plan_de_travail.pdf
Normal file
BIN
1NSI/07_Representation_de_texte/plan_de_travail.pdf
Normal file
Binary file not shown.
@ -1,5 +1,6 @@
|
|||||||
\documentclass[a4paper,12pt]{article}
|
\documentclass[a4paper,12pt]{article}
|
||||||
\usepackage{myXsim}
|
\usepackage{myXsim}
|
||||||
|
\usepackage{minted}
|
||||||
|
|
||||||
\author{Benjamin Bertrand}
|
\author{Benjamin Bertrand}
|
||||||
\title{Representation de texte - Plan de travail}
|
\title{Representation de texte - Plan de travail}
|
||||||
|
Loading…
Reference in New Issue
Block a user