Feat(NSI): fin du chapitre sur les string
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
dfcfe86d31
commit
809c20cc21
|
@ -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
|
||||
}
|
|
@ -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}
|
Binary file not shown.
|
@ -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}
|
||||
4D 61 74 68 3A 29
|
||||
\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{exercise}
|
||||
|
||||
\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}
|
||||
\item \mintinline{python}{ord}: caractère vers point de code
|
||||
\item \mintinline{python}{chr}: point de code vers le caractère
|
||||
|
@ -31,3 +31,51 @@
|
|||
\item Comparer le résultat avec la table obtenu.
|
||||
\end{enumerate}
|
||||
\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
|
||||
:modified: 2023-02-03
|
||||
:modified: 2023-02-14
|
||||
:authors: Benjamin Bertrand
|
||||
:tags: Str, Python
|
||||
:category: 1NSI
|
||||
|
@ -12,7 +12,22 @@ Représentation du texte
|
|||
É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
|
||||
-----------------------------------------
|
||||
|
||||
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>`_
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,6 @@
|
|||
\documentclass[a4paper,12pt]{article}
|
||||
\usepackage{myXsim}
|
||||
\usepackage{minted}
|
||||
|
||||
\author{Benjamin Bertrand}
|
||||
\title{Representation de texte - Plan de travail}
|
||||
|
|
Loading…
Reference in New Issue