-
Notifications
You must be signed in to change notification settings - Fork 5
/
slides-fr.html
executable file
·1460 lines (1032 loc) · 48.5 KB
/
slides-fr.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Femmes en Programmation</title>
<link rel="stylesheet" href="framework/css/slideshow.css" data-noprefix>
<link rel="stylesheet" href="framework/css/fonts.css" data-noprefix>
<link rel="stylesheet" href="framework/css/highlightjs/github.css" data-noprefix>
<link rel="stylesheet" href="framework/css/styles.css" data-noprefix>
<link rel="shortcut icon" href="framework/img/favicon.ico">
<!-- S'occupe des préfixes CSS3 -->
<script src="framework/scripts/prefixfree.min.js"></script>
<!-- Ouvre tous les liens dans une nouvelle fenêtre -->
<base target="_blank">
</head>
<!-- Barre de progression : définissez la durée de la présentation en minutes avec « data-duration ». -->
<body class="en" data-duration="360">
<main>
<section class="slide welcome highlight">
<h1><img class="logo-stacked" src="framework/img/llc-logo-stacked-white.png" alt="Ladies Learning Code logo">Bienvenue!</h1>
<div class="instructions">
<!-- AJOUTEZ LES INFORMATIONS SUR LE WI-FI ICI -->
<h2>Branchez-<br>vous</h2>
<p><strong>Wi-Fi :</strong> nom du réseau Wi-Fi</p>
<p><strong>Mot de passe :</strong> mot de passe du Wi-Fi</p>
<hr>
<h2>Téléchargez<br> et installez</h2>
<ol class="downloads">
<li>Fichiers d'apprentissage (dossier zip) : <a href="https://github.com/ladieslearningcode/llc-python/archive/master.zip">http://bit.ly/llc-python3</a></p>
<ul>
<li>dézippez le dossier d'apprentissage (<em>Tout extraire</em> sur un PC)</li>
<li>ouvrez <em>slides-en.html</em> dans le navigateur pour voir les diapositives</li>
</ul>
</li>
<li>Consignes d'installation, selon le système :</li>
<ul>
<li><a href="installation/windows-fr.html">Windows</a></li>
<li><a href="installation/mac-fr.html">Mac</a></li><br><br>
</ul>
</ol>
</div>
<footer>
<a class="left" rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" src="framework/img/cc-by-nc.png" /></a>
<p class="left">Contenu créé par Darcie Milliken pour <a prefix="cc: http://creativecommons.org/ns#" href="http://canadalearningcode.ca" property="cc:attributionName" rel="cc:attributionURL">Canada Learning Code</a></p>
<p class="right">Utilisez les flèches gauche <span class="arrow">←</span> et droite <span class="arrow">→</span> de votre clavier pour naviguer les diapositives...</p>
</footer>
</section>
<section class="slide intro">
<img class="logo" src="framework/img/llc-logo-white.png" alt="Ladies Learning Code logo">
<h1 class="heading-bg">
<span>Aperçu de données avec le Python</span>
</h1>
<!-- ENTREZ LES INFORMATIONS SUR LA FORMATRICE -->
<!-- <img class="instructor" src="http://placehold.it/225x225" alt="Instructor Name">
<h2><span class="cursive">avec</span> Nom de la formatrice</h2>
<ul>
<li><a href="mailto:">allo@email.com</a></li>
<li><a href="http://website.com">monsite.com</a></li>
<li><a href="http://twitter.com/">@twitter</a></li>
</ul>
<div class="sponsor">
<p>En partenariat avec<br><img src="framework/img/telus-logo-white.svg" alt="Telus"><br><img src="framework/img/logo-accenture.svg" alt="Accenture"></p>
</div>-->
<footer>
<a class="left" rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" src="framework/img/cc-by-nc.png" /></a>
<p class="left">Contenu créé par Darcie Milliken pour <a prefix="cc: http://creativecommons.org/ns#" href="http://canadalearningcode.ca" property="cc:attributionName" rel="cc:attributionURL">Canada Learning Code</a></p>
<p class="right">Utilisez les flèches gauche <span class="arrow">←</span> et droite <span class="arrow">→</span> de votre clavier pour naviguer</p>
</footer>
</section>
<section class="slide project" data-markdown>
<script type="text/template">
# Projet du jour
Le Python est utile pour manipuler des données dans des domaines comme le commerce et les sciences. Toutefois, nous nous en servirons pour parler d'un sujet un peu plus amusant aujourd'hui.
Le [sondage canadien sur les ovnis](http://survey.canadianuforeport.com/) est produit par un organisme qui collecte des données sur les signalements d'ovnis à l'échelle du Canada depuis 1989.
Ils nous ont généreusement offert leurs données pour cet atelier. Merci!
![Programmation ](framework/img/workshop/marvin.gif)
</script>
</section>
<section class="slide agenda" data-markdown>
<script type="text/template">
## Ordre du jour
###Matin
* Types
* Variables
* Expressions conditionnelles et logiques
* Listes
* Boucles
###Après-midi
* Manipulation de fichiers
* Bibliothèques
* Dictionnaires
* Lecture de données à partir d'un fichier csv
* Projet final
</script>
</section>
<section class="slide" data-markdown data-toc>
<script type="text/template">
#Le code des programmeuses
1. Soyez accueillantes et chaleureuses.
1. Choisissez bien vos mots et vos actions.
1. Respectez l'espace des autres durant les conversations.
1. Posez des questions.
1. Faites de votre mieux (et amusez-vous!).
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Qu'est-ce que la programmation? Qu'est-ce que le code?
* Un programme commence par un fichier texte rempli de *commandes* à faire exécuter par l'ordinateur.
* Quand on parle « d'écrire du code », on parle de créer ces fichiers spéciaux.
* Les langages de programmation comme le Python nous permettent d'écrire ces commandes plus facilement.
* Les fichiers Python prennent l'extension `.py`.
* Il y a un autre type de fichier spécial qui traduit les commandes Python du fichier vers une autre forme que l'ordinateur peut utiliser.
![Programmation ](framework/img/workshop/what_is_programming_fr.png)
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Langages de programmation
Les langages de programmation sont comme des outils qui nous permettent d'écrire des commandes à faire exécuter par l'ordinateur.
Par exemple, nous pouvons :
* Faire des opérations mathématiques
* Ouvrir un fichier sur l'ordinateur
* Chercher des données dans un dossier
* Télécharger des données d'un site Web
* Envoyer des courriels
* Zipper ou dézipper des dossiers
* Travailler avec une base de données
* ...entre autres!
Pour en savoir plus : https://docs.python.org/3.7/library/index.html
</script>
</section>
<section class="slide who-uses" data-markdown>
<script type="text/template">
## Pourquoi utilise-t-on le Python?
* Analyse de données
* Informatique scientifique
* Scriptage
* Mise à l'essai
* Applications Web (Django, Flask)
* Certains de vos sites préférés utilisent le Python!
<!-- * Youtube, Reddit, Pinterest, Instagram, Dropbox, The Onion -->
![](framework/img/workshop/logo-dropbox.png)
![](framework/img/workshop/logo-instagram.png)
![](framework/img/workshop/logo-pinterest.png)
![](framework/img/workshop/logo-youtube.png)
![](framework/img/workshop/logo-theonion.png)
### Pourquoi nous sommes fans du Python
* Gratuit!
* Langage de programmation libre
* Le code fonctionne, peu importe là où il est exécuté
* Super communauté
* La syntaxe ressemble à l'anglais
* Les erreurs ont du sens, alors le code est facile à déboguer
* Il s'agit du 4e langage de programmation le plus populaire selon le [Sondage de Stack Overflow 2019](https://insights.stackoverflow.com/survey/2019)
</script>
</section>
<section class="slide centered" data-markdown>
<script type="text/template">
![Trop fan!](framework/img/workshop/fangirling.gif) <!-- .element: style="width: 60%" -->
</script>
</section>
<section class="slide title" data-markdown>
<script type="text/template">
# On commence!
</script>
</section>
<section class="slide centered" data-markdown>
<script type="text/template">
## Environnements IDE PyCharm <br>(Integrated Development Environments)
Utilisez les environnements IDE pour écrire du code rapidement en minimisant vos erreurs.
<br><br>
![Utilise la force!](framework/img/workshop/allons-y.gif) <!-- .element: style="width: 60%" -->
</script>
</section>
<section class="slide side-by-side" data-markdown>
<script type="text/template">
## Configurez vos fichiers de projet
Ouvrez PyCharm et sélectionnez **Open**.
Naviguez vers le dossier **llc-python-master-fr** et sélectionnez **Choose**.
![](framework/img/workshop/pycharm-project1.png)
Les fichiers de projet contenus à l'intérieur du dossier s'afficheront dans la fenêtre Project Tool. Sélectionnez les flèches pour ouvrir les dossiers qui se trouvent à l'intérieur. Aujourd'hui, vous utiliserez les fichiers du dossier **exercices**.
Les corrigés sont dans le dossier **référence**.
Les autres dossiers sont essentiels pour faire fonctionner les diapositives que vous lisez en ce moment; ne les modifiez pas!
![](framework/img/workshop/pycharm-project3.png)
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Exécuter le code Python dans PyCharm
La console, qui est comprise dans PyCharm, est un outil interactif qui sert à essayer et à déboguer du code. Ouvrons la console :
![Outils, console Python](./framework/img/workshop/open-console1.png)
La console s'affichera en bas de l'application. Tapez le code (les instructions) après le symbole vert `>>>`. Ce symbole représente en fait un espace après lequel vous pouvez taper votre code. Vous n'avez donc pas besoin de taper d'espace tout de suite après!
![La console Python dans PyCharm](./framework/img/workshop/open-console2.png)
**Truc de pro!** Vous pouvez aussi ouvrir et fermer la console en sélectionnant l'icône dans le coin inférieur gauche de PyCharm.
</script>
</section>
<!-- -------------------- -->
<!-- Premières étapes -->
<!-- -------------------- -->
<section class="slide" data-markdown>
<script type="text/template">
## Le Python fait des maths
Dans la console, après le `>>>`, essayez les exemples suivants :
La commande que vous tapez après le `>>>` est *évaluée* et la console retourne une valeur.
```
>>> 2 + 2
4
```
```
>>> 2 * 15
30
```
```
>>> 1 / 2
0.5
```
```
>>> 2 ** 3
8
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Types de données
Dans l'exemple précédent, nous avons utilisé le type de nombre **entier** (integer), mais il y en a plusieurs autres.
* Nombres entiers (« integer » en anglais, `int`)
* Nombres décimaux (nombre avec des *points* en anglais, `float`)
* Chaîne (des mots, des phrases et du texte, « string » en anglais, `str`)
* Booléens (expressions vraies ou fausses, `True`, `False`)
* [Et plus encore!](http://www.diveintopython3.net/native-datatypes.html)
Pour afficher le type, utilisez `type()` et une valeur de données à l'intérieur des parenthèses.
```
>>> type("salut")
<class 'str'>
>>> type(42)
<class 'int'>
>>> type(3.14159)
<class 'float'>
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Impression
La **fonction** `print()` (nous y reviendrons plus tard) affiche ou « imprime » des données à l'écran.
Remarquez bien la syntaxe du code dans les exemples suivants. Ajoutez des guillemets anglais **"** lorsque vous utilisez une *chaîne* comme type de données.
```
>>> print("Hello World!")
Hello World!
```
```
>>> print(2 + 2)
4
```
```
>>> print("2 + 2")
2 + 2
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Concaténation
La **concaténation** est l'action d'enchaîner plusieurs chaînes pour créer une seule chaîne.
```python
>>> print("Hello " + "World!")
Hello World!
```
Enchaînement de plus de deux chaînes :
```python
>>> print("Salut " + "aux " + "femmes " + "en " + "programmation!")
Salut aux femmes en programmation!
```
</script>
</section>
<!-- -------------------- -->
<!--Variables-->
<!-- -------------------- -->
<section class="slide" data-markdown>
<script type="text/template">
## Variables
* Elles ont utilisées pour stocker une valeur afin que nous puissions la réutiliser ailleurs.
* Les variables stockent des données dans la mémoire de l'ordinateur. Le **nom de variable** sert à récupérer les valeurs.
![Variables](./framework/img/workshop/variables_fr.png)
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Variables (suite)
Utilisez le symbole égal (`=`) pour **assigner** une valeur à une variable.
```python
>>> x = 5
>>> print(x)
5
```
Le Python peut faire des maths avec les variables :
```python
>>> x = 5
>>> y = 4
>>> x * y
20
```
Il est possible de stocker presque n'importe quoi dans une variable, même une chaîne :
```python
>>> animal = "python"
>>> print("Mon animal préféré est le " + animal)
Mon animal préféré est le python
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Reassigner les variables
Les variables peuvent être modifiées après la déclaration initiale. Pour ce faire, il faut les « réassigner ».
#### chaînes
```python
>>> animal = "hérisson"
>>> print("Mon animal préféré est le " + animal)
Mon animal préféré est le hérisson
```
#### maths
```python
>>> y = 10
>>> x * y
```
Selon vous, quelle sera la valeur de `x * y`? <span class="delayed">`50`</span>
Pourquoi?<!-- .element: class="delayed" -->
Vous avez modifié <!-- .element: class="delayed" -->`y`, mais l'ancienne valeur de `x` reste dans la mémoire.
Le Python se souvient des noms de variable jusqu'à ce que vous fermieze PyCharm ou [les effaciez manuellement](https://docs.python.org/3/tutorial/datastructures.html#the-del-statement).
</script>
</section>
<section class="slide list-font-default" data-markdown>
<script type="text/template">
## Qu'est-ce qu'un nom?
Voici quelques conseils et meilleures pratiques pour créer des noms de variable :
* Les noms de variable ne peuvent comprendre que des lettres, des nombres et le trait de soulignement (`_`).
* Pas d'espaces!
* Séparez les mots avec un trait de soulignement `_`.
* `femmes_en_programmation`
* Les noms de variable ne peuvent pas commencer par un nombre.
* `1jour` renvoie une erreur, mais `jour1` fonctionne parfaitement.
* Idéalement, les noms de variable devraient décrire les données qui sont stockées.
* `animal = "python"` est plus évocateur que `a = "python"`.
* `animal = "python"` est mieux que `chose = "python"`.
</script>
</section>
<!-- -------------------- -->
<!-- Expressions conditionnelles et booléennes -->
<!-- -------------------- -->
<section class="slide" data-markdown>
<script type="text/template">
## Expressions conditionnelles et logique
Chaque matin, vous vérifiez les prévisions météo pour choisir les vêtements que vous porterez pendant la journée.
![On s'habille!](framework/img/workshop/weather.gif) <!-- .element: style="width: 25%" -->
* Est-ce qu'il fait froid dehors? Porter un coton ouaté.
* Est-ce qu'il pleut? Apporter un parapluie.
Lorsque vous faites ceci, vous évaluez une **condition** (la météo) selon des valeurs (vrai ou faux) et vous prenez une décision (ce que vous porterez ou apporterez à l'extérieur).
Le Python aussi peut faire cela.
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Valeurs booléennes
Les langages de programmation comprennent des valeurs **booléennes**, `True` et `False`.
Elles sont le résultat de l'évaluation d'une condition.
### Exemple
Est-ce qu'il neige? La réponse est soit `True` ou `False`.
Essayez ceci dans la console. Créez une variable qui s'appelle `météo`.
```python
>>> météo = "neige"
```
Maintenant, essayez-la avec d'autres valeurs de météo.
Les deux symboles égal (`==`) vérifient si la valeur à droite correspond à la valeur stockée dans la variable.
```
>>> météo == "froid"
False
>>> météo == "neige"
True
>>> météo == "Neige"
False
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Opérateurs de comparaison
Dans l'exemple précédent, nous avons utilisé ` == ` pour comparer des chaînes. La question qui tue : comment comparer des nombres?
### Les opérateurs de comparaison
`x == y` : est-ce que x et y ont égaux
`x > y` : est-ce que x est plus grand que y
`x < y` : est-ce que x est plus petit que y
`x >= y` : est-ce que x est plus grand ou égal à y
`x <= y` : est-ce que x est plus petit ou égal à y
Essayez ceci dans la console :
```python
>>> x = 4
>>> y = 10
>>> x < y
True
>>> x > y
False
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Expressions conditionnelles et logique (suite)
Les expressions « si » (`if`) servent à exécuter différents ensembles d'instructions selon le résultat d'un test sur des conditions satisfaites.
Chaque expression `if` est un test. Le bloc indenté (espacé) est le code qui exécute le test et détermine si le résultat est vrai.
```python
météo = "neige"
if météo == "neige":
print("Porter un pantalon de neige")
```
Vous pouvez vérifier plus d'un bloc `if` en ajoutant un `elif` au code.
Le bloc `else` s'exécutera si aucun autre bloc n'est vrai.
```python
météo = "neige"
if météo == "neige":
print("Porter un pantalon de neige")
elif météo == "pluie":
print("Apporter un parapluie")
else:
print("Qui sait?")
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Indentation
Dans le code Python, l'indentation est importante.
Ce code ne fonctionnera pas :
```python
météo = "neige"
if météo == "neige":
print("Porter un pantalon de neige")
```
Le Python vous retournera une erreur :
```python
File "C:/Users/Darcie/Documents/GitHub/llc-python-master-fr/exercices/conseils-météo.py", line 3
print("Porter un pantalon de neige")
^
IndentationError: expected an indented block
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Créer un fichier Python
La console est parfaite pour s'amuser avec le code.
Toutefois, pour créer des programmes complexes, nous écrirons du code dans un fichier `.py`. Créons un fichier Python!
1. Faites un clic droit (ou appuyez avec deux doigts sur le pavé) sur le dossier **exercices** pour créer un nouveau fichier. Ensuite, sélectionnez **New > Python file**.
![Créer un nouveau fichier Python](./framework/img/workshop/new-file.png)
1. Tapez le nom `conseils-météo.py` dans la fenêtre qui s'affiche.
![Nom du nouveau fichier Python](framework/img/workshop/new-python-file_fr.png)
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Exécuter un fichier Python
Le code dans un fichier **.py** n'est que du texte, jusqu'à ce que vous **l'exécutiez** (run) dans le programme Python.
1. Pour exécuter le code, cliquez sur la flèche verte.
![](framework/img/workshop/pycharm-run_fr.png)
Vous le trouverez aussi dans le menu sous **View > Tool Windows > Run**.
1. Le code s'exécutera dans la fenêtre de la console.
![Démo de l'exemple hello_world](./framework/img/workshop/pycharm-output_fr.png)
<br>
Vous pouvez exécuter votre programme aussi souvent que vous le souhaitez en répétant les étapes ci-dessus.
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Exercice : Conseils météo simples (10 minutes)
Dans le fichier `conseils_météo.py` :
* Copiez cet extrait de code dans le fichier et modifiez la valeur pour la météo.
* Exécutez-le quelques fois avec des valeurs différentes.
* Ajoutez d'autres blocs `elif` avec d'autres conditions météo.
```python
météo = "neige"
if météo == "neige":
print("Porter un pantalon de neige")
elif météo == "pluie":
print("Apporter un parapluie")
else:
print("Qui sait?")
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Indenter plusieurs éléments
Pour exécuter plus d'une instruction par élément, les instructions doivent être indentées de la même façon.
```python
météo = "neige"
if météo == "neige":
print("Porter un pantalon de neige")
print("Porter une tuque")
elif météo == "pluie":
print("Apporter un parapluie")
else:
print("Qui sait?")
```
Si l'indentation est mauvaise, vous verrez une erreur :
```python
météo = "neige"
if météo == "neige":
print("Porter un pantalon de neige")
print("Porter une tuque")
elif météo == "pluie":
print("Apporter un parapluie")
else:
print("Qui sait?")
```
```python
File "C:/Users/Darcie/Documents/GitHub/llc-python-master-fr/exercices/conseils-météo.py", line 5
elif météo == "pluie":
^
SyntaxError: invalid syntax
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## et / ou
Parfois, il arrive qu'une seule expression ne suffise pas pour englober toutes les conditions. Vous devrez peut-être combiner différents tests avec les expressions **et** (`and`) et **ou** (`or`) pour déterminer les prochaines étapes à suivre.
`and` : les deux conditions doivent être vraies
`or` : au moins une des deux conditions doit être vraie
### Exemple
Supposons qu'un conseil s'applique à plusieurs situations. Ce bloc indenté s'exécutera dans les deux situations.
```python
météo = "neige"
if météo == "neige" or météo == 'grésil':
print("Porter des bottes")
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## EXERCICE : Température (15 minutes)
* Ajoutez une variable appelée `température` à votre programme.
* Ajoutez une condition de température à chaque bloc elif, comme :
* neige et température sont plus petites que -40
* neige et température sont entre -20 et -10
* À vous de choisir!
* Exécutez le code quelques fois en ajoutant des valeurs différentes.
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Truc de pro! Mettez des commentaires
Les programmeuses utilisent des **commentaires** en guise d'aide-mémoire pour eux-mêmes et pour les autres lorsqu'ils consulteront le code plus tard.
* Les meilleurs commentaires sont ceux qui ajoutent des informations qui ne sont pas évidentes dans le code.
* Lorsque le Python lit un fichier, il ignore tous les commentaires.
```
# Le Python ignorera tout ce qui se trouve après le symbole #.
```
### Miniexercice
Ajoutez quelques commentaires à votre programme Python et exécutez-le encore.
</script>
</section>
<!-- À faire : créer un graphique pour cette diapositive -->
<section class="slide" data-markdown>
<script type="text/template">
## Stocker des données
Les variables nous permettent de stocker une donnée simple.
Comment fait-on pour stocker des données complexes?
Nous employons le mot `structures de données` pour parler du stockage de données selon leur apparence.
* Si vous avez des données individuelles → `list` (liste) ou `array` (tableau).
* Exemple : liste de tâches à accomplir
* Si vous avez des valeurs qui ont une relation → `dictionary` (dictionnaire).
* Exemple : une liste de présence et une liste de notes à un examen pour une même classe
* Si vous avez des données hiérarchiques → `tree` (arbre).
* Exemple : un arbre généalogique
* Si vous avez des éléments qui doivent être traités en ordre → `queue` (file).
* Exemple : des commandes de clients pour un café
* ...et plus encore!
Pour obtenir des exemples et en savoir plus : https://www.geeksforgeeks.org/data-structures/
</script>
</section>
<!-- -------------------- -->
<!-- Intro aux listes -->
<!-- -------------------- -->
<section class="slide" data-markdown>
<script type="text/template">
## Listes
Lorsque nous avons des collections d'éléments individuels similaires, nous pouvons les stocker dans une **liste**.
Pour créer une liste, tapez un nom pour la liste, puis tapez `=` suivi des éléments entre crochets ([]).
```python
nom_de_la_liste = ['éléments', 'séparés', 'par', 'des', 'virgules']
```
#### Exemples :
```python
conditions_météo = ['pluie', 'neige', 'nuages','soleil','brouillard']
provinces = ['BC', 'AB', 'SK','MB','ON','QC','NL,','NB','NS','PE','YT','NT','NU']
liste_de_tâches = ['Arroser les plantes','Ranger sa chambre','Acheter des chaussures','Devenir Premier ministre', 'Régler le problème des changements climatiques']
nombres_premiers = [2,3,5,7,11,13]
```
Comme pour les variables, nos listes devraient porter des noms évocateurs et descriptifs.
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Utiliser des listes
Il est possible d'accéder à un élément d'une liste à la fois.
Ils sont **indexés** (comptés) à partir de 0.
```python
conditions_météo = ['pluie', 'neige', 'nuages','soleil','brouillard']
```
Essayez ces exemples dans la console Python :
```python
>>> conditions_météo[0]
>>> conditions_météo[3]
>>> conditions_météo[10]
```
```python
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list index out of range
```
Python cannot find `conditions_météo[10]` because it does not exist.
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Fonctions
* Les fonctions sont des groupes de code réutilisables.
* Nous assignons un nom au groupe de code. Ce nom est le **nom de la fonction**.
* Vous pouvez utiliser la fonction en l'appelant par son nom suivi de parenthèses.
* Les entrées dans la fonction vont dans les parenthèses.
* Les fonctions peuvent :
* réaliser une tâche sans rien retourner (comme `print()`)
* accepter des **entrées** et **retourner** des valeurs (comme des fonctions mathématiques)
![Fonctions](./framework/img/workshop/functions.png)
### Miniexercice
Connaissez-vous des exemples de fonctions dans d'autres logiciels, comme [Excel](https://support.office.com/fr-fr/article/fonctions-excel-par-ordre-alphab%C3%A9tique-b3944572-255d-4efb-bb96-c6d90033e188?omkt=fr-CA&ui=fr-FR&rs=fr-CA&ad=CA)?
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Fonctions pour les listes
Les fonctions servent à réaliser des tâches au-delà des maths.
Supposons que nous avons une liste de types de conditions météo.
```python
conditions_météo = ['pluie', 'neige', 'nuages','soleil','brouillard']
```
Que pourrions-nous faire avec ces données?
* Ajouter ou retirer des éléments
* Les classer par ordre alphabétique
* Trouver des éléments en double
* Compter le nombre d'éléments
Le Python offre plusieurs fonctions pratiques pour faciliter ces tâches.
Plus d'infos : https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## Ajouter des éléments à une liste
Pour ajouter un élément à une liste, utilisez la fonction `append()` (« ajouter ») .
```python
>>> conditions_météo.append('vent')
```
```python
>>> print(conditions_météo)
```
Pour retirer un élément d'une liste, utilisez la fonction `remove()` (« retirer »).
```python
>>> conditions_météo.remove('soleil')
```
```python
>>> print(conditions_météo)
```
Pour compter le nombre d'éléments dans une liste, utilisez la fonction `len()` (abréviation de « length », « longueur »).
```python
>>> len(conditions_météo)
```
Ces fonctions sont très pratiques lorsque nous avons des listes qui comptent des centaines d'éléments.
</script>
</section>
<!-- -------------------- -->
<!-- Boucles -->
<!-- -------------------- -->
<section class="slide" data-markdown>
<script type="text/template">
## Boucles
En tant que programmeuses, un des outils les plus puissants que nous avons à notre disposition est la *boucle*. Elle nous permet de dire à l'ordinateur de répéter un ensemble d'instructions de nombreuses fois.
![Puissant](framework/img/workshop/jaime-ca.gif) <!-- .element: width="30%" -->
Le Python peut lire chaque élément d'une liste en ordre et réaliser une tâche. Ainsi, il lit la liste **en boucle**.
### Exemple
```python
conditions_météo = ['pluie', 'neige', 'nuages','soleil','brouillard']
for type_de_météo in conditions_météo:
print(type_de_météo)
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
## EXERCICE : logique et listes (20 minutes)
Combinons les boucles avec les notions que nous avons apprises sur les expressions conditionnelles.
* Créez un nouveau fichier dans le dossier exercices appelé `boucles-météo.py`.
* Créez une liste comprenant chaque type de condition météo.
* Ajoutez une boucle pour **lire en boucle** chaque type de météo.
* Ajoutez un bloc if/elif/else à l'intérieur de la boucle pour imprimer (print) une recommandation vestimentaire en fonction du type de condition météo.
* Vous devriez avoir un énoncé à imprimer pour chaque type de condition météo dans la liste.
* Bonus : si vous terminez plus tôt, faites une concaténation pour ajouter le type de condition météo au début de l'énoncé print avec le conseil météo (exemple : "neige : Porter un pantalon de neige").
</script>
</section>
<section class="slide centered" data-markdown>
<script type="text/template">