Skip to content

Commit 7f12ea9

Browse files
authored
Merge pull request #2 from exo7math/livret
Tome 1
2 parents 92fe012 + c47becb commit 7f12ea9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+805
-455
lines changed

README.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
Relecteurs pour le tome 2
2-
===============
3-
4-
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.
5-
Si vous êtes interessé, n'hésitez pas à contacter Arnaud Bodin.
6-
71

82
Python au lycée
93
===============
@@ -18,7 +12,7 @@ Vous avez tout en main pour réussir !
1812
Vidéos
1913
======
2014

21-
Les vidéos seront visibles depuis la chaîne *Youtube* [Python au lycée](https://www.youtube.com/channel/UC6PiFyqBiUjiJ7Q3DRSW2Wg "www.youtube.com/PythonAuLycee").
15+
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").
2216

2317
Livre
2418
=====

aleatoire/aleatoire.pdf

-39 KB
Binary file not shown.

aleatoire/aleatoire.tex

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111

1212
\begin{center}
1313
\begin{minipage}{0.4\textwidth}
14-
\includegraphics[scale=0.3]{ecran-alea-bloc00}
14+
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc00}
1515
\end{minipage}
1616
\begin{minipage}{0.3\textwidth}
17-
\includegraphics[scale=0.25]{ecran-alea-arbre00}
17+
\includegraphics[scale=\myscale,scale=0.25]{ecran-alea-arbre00}
1818
\end{minipage}
1919
\end{center}
2020

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

4444
\begin{center}
45-
\includegraphics[scale=0.3]{ecran-alea-bloc0}
45+
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc0}
4646
\end{center}
4747

4848
\end{cours}
@@ -60,10 +60,10 @@
6060
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$ ;
6161
ensuite la présence d'un bloc est représentée par $1$.
6262

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

6868

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

160160
\begin{center}
161-
\includegraphics[scale=0.3]{ecran-alea-bloc1}
161+
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc1}
162162
\end{center}
163163
\medskip
164164

@@ -176,7 +176,7 @@
176176
\medskip
177177

178178
\begin{center}
179-
\includegraphics[scale=0.3]{ecran-alea-bloc2}
179+
\includegraphics[scale=\myscale,scale=0.3]{ecran-alea-bloc2}
180180
\end{center}
181181

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

201201
\begin{center}
202-
\includegraphics[scale=0.28]{ecran-alea-arbre1}
202+
\includegraphics[scale=\myscale,scale=0.28]{ecran-alea-arbre1}
203203
\end{center}
204204

205205

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

270270
\begin{center}
271-
\includegraphics[scale=0.24]{ecran-alea-arbre2}
271+
\includegraphics[scale=\myscale,scale=0.24]{ecran-alea-arbre2}
272272
\end{center}
273273

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

288288
\begin{center}
289-
\includegraphics[scale=0.5]{ecran-alea-cours-mouv}
289+
\includegraphics[scale=\myscale,scale=0.5]{ecran-alea-cours-mouv}
290290
\end{center}
291291

292292
Voici les points principaux :
@@ -295,8 +295,9 @@
295295

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

298-
\item Le point clé est que cette fonction sera exécutée une nouvelle fois après un court laps de temps. La commande :\\
299-
\centerline{\ci{canvas.after(50,deplacer)}}
298+
\item Le point clé est que cette fonction sera exécutée une nouvelle fois après un court laps de temps. La commande :
299+
\mycenterline{\ci{canvas.after(50,deplacer)}}
300+
300301
demande une nouvelle exécution de la fonction \ci{deplacer()} après un court délai (ici $50$ millisecondes).
301302

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

311312
root = Tk()
312-
canvas = Canvas(root, width=Largeur, height=Hauteur, background="white")
313+
canvas = Canvas(root,width=Largeur,height=Hauteur,background="white")
313314
canvas.pack(fill="both", expand=True)
314315

315316
# Les coordonnées et la vitesse
@@ -344,10 +345,10 @@
344345
return
345346

346347
# Boutons
347-
bouton_couleur = Button(root,text="Déplacer", width=20, command=action_deplacer)
348+
bouton_couleur=Button(root,text="Déplacer",width=20,command=action_deplacer)
348349
bouton_couleur.pack(pady=10)
349350

350-
bouton_quitter = Button(root,text="Quitter", width=20, command=root.quit)
351+
bouton_quitter = Button(root,text="Quitter",width=20,command=root.quit)
351352
bouton_quitter.pack(side=BOTTOM, pady=10)
352353

353354
root.mainloop()

binaire/binaire-1.pdf

-39 KB
Binary file not shown.

binaire/binaire-2.pdf

-19.5 KB
Binary file not shown.

binaire/binaire-2.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@
208208

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

bitcoin/bitcoin.pdf

-37.3 KB
Binary file not shown.

bitcoin/bitcoin.tex

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@
9696
10651 \quad
9797
100109 \quad
9898
1300573 \quad
99-
15486869 \quad
100-
179426321 \quad
99+
15486869$$
100+
$$179426321 \quad
101101
2276856017 \quad
102102
32416187567$$
103103
\end{activite}
@@ -212,10 +212,12 @@
212212

213213
É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.
214214

215-
La formule à utiliser pour convertir un caractère en un entier strictement inférieur à $100$ est :\\
216-
\centerline{\ci{ord(c) \% 100}}
217-
Par exemple : si \ci{phrase = "Vive moi !"} alors la fonction renvoie :\\
218-
\centerline{\ci{[0, 0, 86, 5, 18, 1, 32, 9, 11, 5, 32, 33]}}
215+
La formule à utiliser pour convertir un caractère en un entier strictement inférieur à $100$ est :
216+
\mycenterline{\ci{ord(c) \% 100}}
217+
218+
Par exemple : si \ci{phrase = "Vive moi !"} alors la fonction renvoie :
219+
\mycenterline{\ci{[0, 0, 86, 5, 18, 1, 32, 9, 11, 5, 32, 33]}}
220+
219221
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$.
220222

221223
\end{enumerate}
@@ -237,10 +239,11 @@
237239

238240
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 :
239241
\begin{itemize}
240-
\item la liste \ci{[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :\\
241-
\centerline{\ci{[10, 0, 58, 28, 0, 90]}}
242-
\item la liste \ci{[1, 1, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :\\
243-
\centerline{\ci{[25, 14, 29, 1, 19, 6]}}
242+
\item la liste \ci{[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :
243+
\mycenterline{\ci{[10, 0, 58, 28, 0, 90]}}
244+
245+
\item la liste \ci{[1, 1, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]} a pour empreinte :
246+
\mycenterline{\ci{[25, 14, 29, 1, 19, 6]}}
244247
\end{itemize}
245248

246249
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.
@@ -342,8 +345,8 @@
342345
\medskip
343346

344347
\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.
345-
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 : \\
346-
\centerline{\ci{hachage(liste + preuve)} \ plus petit que \ \ci{Max}}
348+
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 :
349+
\mycenterline{\ci{hachage(liste + preuve)} \ plus petit que \ \ci{Max}}
347350

348351
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).
349352

@@ -436,10 +439,12 @@
436439
\item On calcule une preuve de travail de cette liste.
437440
\item On ajoute cette preuve au livre de compte.
438441
\end{itemize}
439-
Par exemple si le livre se termine par :\\
440-
\centerline{\ci{[3,1,4,1,5,9], "Abel +35"}}
441-
alors après calcul de la preuve de travail le livre se termine par exemple par :\\
442-
\centerline{\ci{[3,1,4,1,5,9], "Abel +35", [32,17,37,73,52,90]}}
442+
Par exemple si le livre se termine par :
443+
\mycenterline{\ci{[3,1,4,1,5,9], "Abel +35"}}
444+
445+
alors après calcul de la preuve de travail le livre se termine par exemple par :
446+
\mycenterline{\ci{[3,1,4,1,5,9], "Abel +35", [32,17,37,73,52,90]}}
447+
443448
On rappelle que la preuve de travail n'est pas unique et qu'en plus elle dépend
444449
de l'objectif \ci{Max}.
445450

chaines/chaines.pdf

-32.1 KB
Binary file not shown.

chaines/chaines.tex

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,14 @@
125125

126126
\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.
127127

128+
\medskip
129+
128130
\begin{fonction}[\ci{met_au_pluriel()}]
129131
Usage : \ci{met_au_pluriel(mot)} \\
130132
Entrée : un mot (une chaîne de caractères) \\
131133
Sortie : le pluriel du mot
132134

133-
\medskip
135+
\bigskip
134136

135137
Exemples :
136138
\begin{itemize}
@@ -142,12 +144,14 @@
142144

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

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

150-
\medskip
154+
\bigskip
151155

152156
Exemple :
153157
\begin{itemize}
@@ -166,6 +170,10 @@
166170
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
167171
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
168172

173+
\bigskip
174+
\bigskip
175+
176+
169177
\begin{cours}[Un peu plus sur les chaînes]
170178

171179
\sauteligne
@@ -179,20 +187,29 @@
179187
\end{minipage}
180188
\end{center}
181189

182-
\item On peut tester si un caractère appartient à une certaine liste de caractères. Par exemple : \\
183-
\centerline{\codeinline{if carac in ["a", "A", "b", "B", "c", "C"]:}}
190+
\item On peut tester si un caractère appartient à une certaine liste de caractères. Par exemple :
191+
192+
\smallskip
193+
194+
\mycenterline{\codeinline{if carac in ["a", "A", "b", "B", "c", "C"]:}}
195+
184196
\index{in@\ci{in}}
185197

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

188-
Pour éviter certaines lettres, on utiliserait : \\
189-
\centerline{\codeinline{if carac not in ["X", "Y", "Z"]:}}
200+
Pour éviter certaines lettres, on utiliserait :
201+
202+
\smallskip
203+
204+
\mycenterline{\codeinline{if carac not in ["X", "Y", "Z"]:}}
205+
190206
\index{not in@\ci{not in}}
191207

192208
\end{enumerate}
193209
\end{cours}
194210

195211

212+
196213
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
197214
% Activité 2
198215
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -202,17 +219,19 @@
202219
\objectifs{Objectifs : manipuler des mots de façon amusante.}
203220

204221

205-
\medskip
222+
%\medskip
206223

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

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

212-
Par exemple : \\
213-
\centerline{\mot{
229+
Par exemple :
230+
231+
\mycenterline{\mot{
214232
\badletter{J}A\badletter{P}ON}\qquad \mot{\badletter{S}A\badletter{V}ON}
215233
}
234+
216235
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$.
217236

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

230249

231-
\medskip
250+
%\medskip
232251

233252
\item \textbf{Latin-cochon.}
234253

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

254-
\medskip
273+
%\medskip
255274

256275
\item \textbf{Verlan.}
257276

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

272-
\medskip
291+
%\medskip
273292

274293
\item \textbf{Palindrome.}
275294

@@ -356,25 +375,24 @@
356375

357376
Second code du coupable : \mot{ATGC}
358377

359-
{\small
378+
{\footnotesize
360379
ADN du colonel Moutarde :
361380

362-
\mot{CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC}
363-
381+
\mot{CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC}
364382

365383
ADN de Mlle Rose :
366384

367-
\mot{CTCCTGATGCTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG}
385+
\mot{CTCCTGATGCTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG}
368386

369387

370388
ADN de Mme Pervenche :
371389

372-
\mot{AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGTACTCCGCGCGCCGGGACAGAATGCC}
373-
390+
\mot{AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGTACTCCGCGCGCCGGGACAGAATGCC}
374391

375392
ADN de M. Leblanc :
376393

377394
\mot{CTGCAGGAACTTCTTCTGGAAGTACTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAG}
395+
378396
}
379397
\end{enumerate}
380398
\end{activite}
@@ -447,9 +465,8 @@
447465

448466

449467
\begin{enumerate}
450-
\item Décode à la main le message chiffré sous les codes suivants : \\
451-
452-
\centerline{80-121-116-104-111-110 \quad 101-115-116 \quad 115-121-109-112-64}
468+
\item Décode à la main le message chiffré sous les codes suivants :
469+
\mycenterline{80-121-116-104-111-110 \quad 101-115-116 \quad 115-121-109-112-64}
453470

454471
% [\symbol{80}\symbol{121}\symbol{116}\symbol{104}\symbol{111}\symbol{110}
455472
% \symbol{101}\symbol{115}\symbol{116}

0 commit comments

Comments
 (0)