Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
Relecteurs pour le tome 2
===============

Un tome 2 de *Python au lycée* est en préparation. Nous cherchons des élèves/étudiants/enseignants/informaticiens motivés qui voudraient bien relire/tester/corriger/critiquer un ou plusieurs chapitres.
Si vous êtes interessé, n'hésitez pas à contacter Arnaud Bodin.


Python au lycée
===============
Expand All @@ -18,7 +12,7 @@ Vous avez tout en main pour réussir !
Vidéos
======

Les vidéos seront visibles depuis la chaîne *Youtube* [Python au lycée](https://www.youtube.com/channel/UC6PiFyqBiUjiJ7Q3DRSW2Wg "www.youtube.com/PythonAuLycee").
Les vidéos seront visibles depuis la chaîne *Youtube* [Python au lycée](https://www.youtube.com/channel/UC6PiFyqBiUjiJ7Q3DRSW2Wg "www.youtube.com/PythonAuLycée").

Livre
=====
Expand Down
Binary file modified aleatoire/aleatoire.pdf
Binary file not shown.
35 changes: 18 additions & 17 deletions aleatoire/aleatoire.tex
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@

\begin{center}
\begin{minipage}{0.4\textwidth}
\includegraphics[scale=0.3]{ecran-alea-bloc00}
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc00}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\includegraphics[scale=0.25]{ecran-alea-arbre00}
\includegraphics[scale=\myscale,scale=0.25]{ecran-alea-arbre00}
\end{minipage}
\end{center}

Expand Down Expand Up @@ -42,7 +42,7 @@
Le lancer aléatoire de centaines de blocs sur une grande grille produit de jolies formes géométriques ressemblant à des algues.

\begin{center}
\includegraphics[scale=0.3]{ecran-alea-bloc0}
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc0}
\end{center}

\end{cours}
Expand All @@ -60,10 +60,10 @@
On modélise l'espace de travail par un tableau de $n$ lignes et $p$ colonnes. Au départ le tableau ne contient que des $0$ ;
ensuite la présence d'un bloc est représentée par $1$.

Voici comment initialiser le tableau :\\
\centerline{\ci{tableau = [[0 for j in range(p)] for i in range(n)]}}
On modifie le tableau par des instructions du type :\\
\centerline{\ci{tableau[i][j] = 1}}
Voici comment initialiser le tableau :
\mycenterline{\ci{tableau = [[0 for j in range(p)] for i in range(n)]}}
On modifie le tableau par des instructions du type :
\mycenterline{\ci{tableau[i][j] = 1}}


Voici un exemple de tableau (à gauche) pour représenter la situation graphique de droite (le bloc en haut à droite est en train de tomber).
Expand Down Expand Up @@ -158,7 +158,7 @@
\textbf{Affichage statique.} Programme l'affichage graphique des blocs à partir d'un tableau.

\begin{center}
\includegraphics[scale=0.3]{ecran-alea-bloc1}
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc1}
\end{center}
\medskip

Expand All @@ -176,7 +176,7 @@
\medskip

\begin{center}
\includegraphics[scale=0.3]{ecran-alea-bloc2}
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc2}
\end{center}

\emph{Indications.}
Expand All @@ -199,7 +199,7 @@
Voici une construction un peu différente, beaucoup plus longue à calculer, mais qui dessine aussi de jolies figures appelées \og{}arbres browniens\fg{}.

\begin{center}
\includegraphics[scale=0.28]{ecran-alea-arbre1}
\includegraphics[scale=\myscale,scale=0.28]{ecran-alea-arbre1}
\end{center}


Expand Down Expand Up @@ -268,7 +268,7 @@
Programme l'affichage graphique à l'aide de \ci{tkinter}. Tu peux ajouter un bouton qui lance $10$ blocs d'un coup.

\begin{center}
\includegraphics[scale=0.24]{ecran-alea-arbre2}
\includegraphics[scale=\myscale,scale=0.24]{ecran-alea-arbre2}
\end{center}

\end{activite}
Expand All @@ -286,7 +286,7 @@
Voici un programme qui fait se déplacer un petit carré et le faisant rebondir sur les bords de la fenêtre.

\begin{center}
\includegraphics[scale=0.5]{ecran-alea-cours-mouv}
\includegraphics[scale=\myscale,scale=0.5]{ecran-alea-cours-mouv}
\end{center}

Voici les points principaux :
Expand All @@ -295,8 +295,9 @@

\item Cet objet est (un petit peu) déplacé par la fonction \ci{deplacer()} qui décale le rectangle de \ci{(dx,dy)}.

\item Le point clé est que cette fonction sera exécutée une nouvelle fois après un court laps de temps. La commande :\\
\centerline{\ci{canvas.after(50,deplacer)}}
\item Le point clé est que cette fonction sera exécutée une nouvelle fois après un court laps de temps. La commande :
\mycenterline{\ci{canvas.after(50,deplacer)}}

demande une nouvelle exécution de la fonction \ci{deplacer()} après un court délai (ici $50$ millisecondes).

\item La répétition de petits déplacements simule le mouvement.
Expand All @@ -309,7 +310,7 @@
Hauteur = 200

root = Tk()
canvas = Canvas(root, width=Largeur, height=Hauteur, background="white")
canvas = Canvas(root,width=Largeur,height=Hauteur,background="white")
canvas.pack(fill="both", expand=True)

# Les coordonnées et la vitesse
Expand Down Expand Up @@ -344,10 +345,10 @@
return

# Boutons
bouton_couleur = Button(root,text="Déplacer", width=20, command=action_deplacer)
bouton_couleur=Button(root,text="Déplacer",width=20,command=action_deplacer)
bouton_couleur.pack(pady=10)

bouton_quitter = Button(root,text="Quitter", width=20, command=root.quit)
bouton_quitter = Button(root,text="Quitter",width=20,command=root.quit)
bouton_quitter.pack(side=BOTTOM, pady=10)

root.mainloop()
Expand Down
Binary file modified binaire/binaire-1.pdf
Binary file not shown.
Binary file modified binaire/binaire-2.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions binaire/binaire-2.tex
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,8 @@

Les lois de Morgan affirment que pour des booléens (vrai/faux) ou des \emph{bits} (1/0), on a toujours les égalités :
$$\text{NON}( b_1 \text{ OU } b_2 ) =
\text{NON}( b_1 ) \text{ ET } \text{NON}(b_2),
\qquad \quad
\text{NON}( b_1 ) \text{ ET } \text{NON}(b_2)
\qquad
\text{NON}( b_1 \text{ ET } b_2 ) =
\text{NON}( b_1 ) \text{ OU } \text{NON}(b_2).$$

Expand Down
Binary file modified bitcoin/bitcoin.pdf
Binary file not shown.
37 changes: 21 additions & 16 deletions bitcoin/bitcoin.tex
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,8 @@
10651 \quad
100109 \quad
1300573 \quad
15486869 \quad
179426321 \quad
15486869$$
$$179426321 \quad
2276856017 \quad
32416187567$$
\end{activite}
Expand Down Expand Up @@ -212,10 +212,12 @@

Écris une fonction \ci{phrase_vers_liste(phrase)} qui convertit une chaîne de caractères en une liste d'entiers entre $0$ et $99$ et si besoin rajoute des zéros devant afin que la liste ait la bonne taille.

La formule à utiliser pour convertir un caractère en un entier strictement inférieur à $100$ est :\\
\centerline{\ci{ord(c) \% 100}}
Par exemple : si \ci{phrase = "Vive moi !"} alors la fonction renvoie :\\
\centerline{\ci{[0, 0, 86, 5, 18, 1, 32, 9, 11, 5, 32, 33]}}
La formule à utiliser pour convertir un caractère en un entier strictement inférieur à $100$ est :
\mycenterline{\ci{ord(c) \% 100}}

Par exemple : si \ci{phrase = "Vive moi !"} alors la fonction renvoie :
\mycenterline{\ci{[0, 0, 86, 5, 18, 1, 32, 9, 11, 5, 32, 33]}}

Le caractère \ci{"i"} à pour code ASCII/unicode $105$ donc, modulo $100$, le nombre est $5$. Note que la fonction ajoute deux $0$ en début de liste afin d'avoir une longueur qui est un multiple de $N=6$.

\end{enumerate}
Expand All @@ -237,10 +239,11 @@

Dans cette activité, notre message est une liste d'entiers (entre $0$ et $99$) de longueur un multiple quelconque de $N=6$, nous le transformons en une liste de longueur $N=6$ : son empreinte (ou \emph{hash}). Voici des exemples de ce que va faire notre fonction de hachage :
\begin{itemize}
\item la liste \ci{[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :\\
\centerline{\ci{[10, 0, 58, 28, 0, 90]}}
\item la liste \ci{[1, 1, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :\\
\centerline{\ci{[25, 14, 29, 1, 19, 6]}}
\item la liste \ci{[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :
\mycenterline{\ci{[10, 0, 58, 28, 0, 90]}}

\item la liste \ci{[1, 1, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :
\mycenterline{\ci{[25, 14, 29, 1, 19, 6]}}
\end{itemize}

L'idée est de mélanger les nombres par bloc de $N=6$ entiers, puis de combiner ce bloc au suivant et de recommencer, jusqu'à obtenir un seul bloc.
Expand Down Expand Up @@ -342,8 +345,8 @@
\medskip

\textbf{Problème à résoudre.} On nous donne une liste, il s'agit de trouver un bloc tel que, lorsque qu'on le rajoute à la liste, cela produit un hachage commençant par des zéros.
Plus précisément étant donné une liste \ci{liste} et un objectif maximal \ci{Max}, il s'agit de trouver un bloc \ci{preuve} qui, concaténé à la liste puis haché, est plus petit que la liste \ci{Max}, c'est-à-dire : \\
\centerline{\ci{hachage(liste + preuve)} \ plus petit que \ \ci{Max}}
Plus précisément étant donné une liste \ci{liste} et un objectif maximal \ci{Max}, il s'agit de trouver un bloc \ci{preuve} qui, concaténé à la liste puis haché, est plus petit que la liste \ci{Max}, c'est-à-dire :
\mycenterline{\ci{hachage(liste + preuve)} \ plus petit que \ \ci{Max}}

La liste est de longueur quelconque (un multiple de $N=6$), la preuve est un bloc de longueur $N$, l'objectif est de trouver une liste commençant par des $0$ (voir l'activité 2).

Expand Down Expand Up @@ -436,10 +439,12 @@
\item On calcule une preuve de travail de cette liste.
\item On ajoute cette preuve au livre de compte.
\end{itemize}
Par exemple si le livre se termine par :\\
\centerline{\ci{[3,1,4,1,5,9], "Abel +35"}}
alors après calcul de la preuve de travail le livre se termine par exemple par :\\
\centerline{\ci{[3,1,4,1,5,9], "Abel +35", [32,17,37,73,52,90]}}
Par exemple si le livre se termine par :
\mycenterline{\ci{[3,1,4,1,5,9], "Abel +35"}}

alors après calcul de la preuve de travail le livre se termine par exemple par :
\mycenterline{\ci{[3,1,4,1,5,9], "Abel +35", [32,17,37,73,52,90]}}

On rappelle que la preuve de travail n'est pas unique et qu'en plus elle dépend
de l'objectif \ci{Max}.

Expand Down
Binary file modified chaines/chaines.pdf
Binary file not shown.
59 changes: 38 additions & 21 deletions chaines/chaines.tex
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,14 @@

\item Rassemble tout ton travail des trois premières questions dans une fonction \ci{met_au_pluriel()}. La fonction n'affiche rien, mais renvoie le mot au pluriel.

\medskip

\begin{fonction}[\ci{met_au_pluriel()}]
Usage : \ci{met_au_pluriel(mot)} \\
Entrée : un mot (une chaîne de caractères) \\
Sortie : le pluriel du mot

\medskip
\bigskip

Exemples :
\begin{itemize}
Expand All @@ -142,12 +144,14 @@

\item Écris une fonction \ci{affiche_conjugaison()} qui conjugue un verbe du premier groupe au présent.

\medskip

\begin{fonction}[\ci{affiche_conjugaison()}]
Usage : \ci{affiche_conjugaison(verbe)} \\
Entrée : un verbe du premier groupe (une chaîne de caractères se terminant par \ci{"er"}) \\
Sortie : pas de résultat mais l'affichage de la conjugaison du verbe au présent

\medskip
\bigskip

Exemple :
\begin{itemize}
Expand All @@ -166,6 +170,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\bigskip
\bigskip


\begin{cours}[Un peu plus sur les chaînes]

\sauteligne
Expand All @@ -179,20 +187,29 @@
\end{minipage}
\end{center}

\item On peut tester si un caractère appartient à une certaine liste de caractères. Par exemple : \\
\centerline{\codeinline{if carac in ["a", "A", "b", "B", "c", "C"]:}}
\item On peut tester si un caractère appartient à une certaine liste de caractères. Par exemple :

\smallskip

\mycenterline{\codeinline{if carac in ["a", "A", "b", "B", "c", "C"]:}}

\index{in@\ci{in}}

permet d’exécuter des instructions si le caractère \ci{carac} est l'une des lettres a, A, b, B, c, C.

Pour éviter certaines lettres, on utiliserait : \\
\centerline{\codeinline{if carac not in ["X", "Y", "Z"]:}}
Pour éviter certaines lettres, on utiliserait :

\smallskip

\mycenterline{\codeinline{if carac not in ["X", "Y", "Z"]:}}

\index{not in@\ci{not in}}

\end{enumerate}
\end{cours}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Activité 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Expand All @@ -202,17 +219,19 @@
\objectifs{Objectifs : manipuler des mots de façon amusante.}


\medskip
%\medskip

\begin{enumerate}
\item \textbf{Distance entre deux mots.}

La distance\index{distance} de Hamming entre deux mots de même longueur est le nombre d'endroits où les lettres sont différentes.

Par exemple : \\
\centerline{\mot{
Par exemple :

\mycenterline{\mot{
\badletter{J}A\badletter{P}ON}\qquad \mot{\badletter{S}A\badletter{V}ON}
}

La première lettre de \mot{JAPON} est différente de la première lettre de \mot{SAVON}, les troisièmes aussi sont différentes. La distance de Hamming entre \mot{JAPON} et \mot{SAVON} vaut donc $2$.

Écris une fonction \ci{distance_hamming()} qui calcule la distance de Hamming entre deux mots de même longueur.
Expand All @@ -228,7 +247,7 @@
\end{fonction}


\medskip
%\medskip

\item \textbf{Latin-cochon.}

Expand All @@ -251,7 +270,7 @@
Exemple : \ci{latin_cochon("BONJOUR")} renvoie \ci{"ONJOURBUM"}
\end{fonction}

\medskip
%\medskip

\item \textbf{Verlan.}

Expand All @@ -269,7 +288,7 @@
Exemple : \ci{verlan("TOCARD")} renvoie \ci{"DRACOT"}
\end{fonction}

\medskip
%\medskip

\item \textbf{Palindrome.}

Expand Down Expand Up @@ -356,25 +375,24 @@

Second code du coupable : \mot{ATGC}

{\small
{\footnotesize
ADN du colonel Moutarde :

\mot{CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC}

\mot{CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC}

ADN de Mlle Rose :

\mot{CTCCTGATGCTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG}
\mot{CTCCTGATGCTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG}


ADN de Mme Pervenche :

\mot{AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGTACTCCGCGCGCCGGGACAGAATGCC}

\mot{AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGTACTCCGCGCGCCGGGACAGAATGCC}

ADN de M. Leblanc :

\mot{CTGCAGGAACTTCTTCTGGAAGTACTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAG}

}
\end{enumerate}
\end{activite}
Expand Down Expand Up @@ -447,9 +465,8 @@


\begin{enumerate}
\item Décode à la main le message chiffré sous les codes suivants : \\

\centerline{80-121-116-104-111-110 \quad 101-115-116 \quad 115-121-109-112-64}
\item Décode à la main le message chiffré sous les codes suivants :
\mycenterline{80-121-116-104-111-110 \quad 101-115-116 \quad 115-121-109-112-64}

% [\symbol{80}\symbol{121}\symbol{116}\symbol{104}\symbol{111}\symbol{110}
% \symbol{101}\symbol{115}\symbol{116}
Expand Down
Binary file modified chercher/chercher.pdf
Binary file not shown.
Loading