You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
пре 6 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. # Introduction à la programmation avec Python
  2. <p align="right">
  3. E2L <br />
  4. 24/11/2018 <br />
  5. Dimitri Merejkowsky <br />
  6. </p>
  7. ---
  8. # Plan
  9. * Présentation et historique du langage
  10. * L'interpréteur interactif
  11. * Un jeu simple
  12. ---
  13. # Historique
  14. * Créé par Guido van Rossum. Conçu à la base pour l'enseignement.
  15. * Le nom vient des Monty Python (si, si)
  16. * Python 1: Sortie en 1991
  17. * Python 2: en 2000
  18. * Python 3: en 2008
  19. ---
  20. # Le grand schisme
  21. La plupart des langages continuent à être compatibles d'une version à l'autre.
  22. *Ce n'est pas le cas pour Python3*, et ça a causé beaucoup de confusion et de débats.
  23. Heureusement, 10 ans plus tard, la situation s'est arrangée.
  24. ---
  25. # Python3
  26. Ce cours fonctionne donc uniquement avec Python3.
  27. N'utilisez *pas* Python2, sinon certaines choses expliquées ici ne marcheront pas :/
  28. ---
  29. # Utilisation de Python
  30. * Aussi appelé "langage de script", `glue language`
  31. * Bon partout, excellent nulle part
  32. * Exemples d'utilisation:
  33. * Sciences (physique, chimie, linguistique ...)
  34. * Animation (Pixar, Disney ...)
  35. * Sites web (journaux, youtube, ...)
  36. * Ligne de commande
  37. * ...
  38. ---
  39. # Installation
  40. ---
  41. # L'interpréteur interactif
  42. !pycon
  43. $ python3
  44. Python 3.7.1 (default, Oct 22 2018, 10:41:28)
  45. [GCC 8.2.1 20180831] on linux
  46. Type "help", "credits" or "license" for more information.
  47. >>>
  48. ---
  49. # Note
  50. Recopiez les entrées sur les slides dans votre propre interpréteur.
  51. S'il fait quelque chose que vous ne comprenez pas, prévenez moi!
  52. ---
  53. # Entiers et maths simples
  54. !pycon
  55. >>> 1
  56. 1
  57. >>> 2
  58. 2
  59. >>> 1 + 2
  60. 3
  61. >>> 2 * 3
  62. 6
  63. ---
  64. # Flottants
  65. C'est le `.` qui fait le flottant
  66. !pycon
  67. >>> 0.5
  68. 0.5
  69. >>> 0.5 + 0.2
  70. 0.7
  71. >>> 10 / 3
  72. 3.3333333333333335
  73. *Note: les flottants sont imprécis*
  74. ----
  75. # Division entières et modulo
  76. !pycon
  77. >>> 14 // 3
  78. 4
  79. >>> 14 % 3
  80. 2
  81. *Le `%` n'a rien à voir avec un pourcentage!*
  82. ---
  83. # Priorité des opérations
  84. !pycon
  85. >>> 1 + 2 * 3
  86. 7
  87. >>> (1 + 2) * 3
  88. 9
  89. *Les parenthèses permettent de grouper les expressions*
  90. ---
  91. # Variables
  92. !pycon
  93. >>> a = 2
  94. >>> a
  95. 2
  96. >>> b = 3
  97. >>> a + b
  98. 5
  99. * On peut nommer des valeurs
  100. * On peut afficher la valeur d'une variable entrant son nom dans le REPL
  101. ---
  102. # Variables (2)
  103. !pycon
  104. >>> a = 2
  105. >>> a
  106. 2
  107. >>> a = 3
  108. >>> a
  109. 3
  110. * On peut changer la valeur d'une variable (d'où son nom)
  111. ---
  112. # Les chaînes de caractères
  113. Aussi appelées "string".
  114. Avec des simple quotes (`'`)
  115. !pycon
  116. >>> 'Bonjour monde!'
  117. 'Bonjour monde'
  118. Marche aussi avec des double quotes (`"`)
  119. !pycon
  120. >>> "Bonjour, monde!"
  121. 'Bonjour monde'
  122. ---
  123. # Double et simple quotes
  124. On peut mettre des simples quotes dans des double quotes et vice-versa.
  125. !pycon
  126. >>> "Il a dit: 'bonjour' ce matin."
  127. "Il a dit: 'bonjour' ce matin."
  128. >>> 'Il a dit: "bonjour" ce matin'
  129. 'Il a dit: "bonjour" ce matin!'
  130. ---
  131. # Échappement
  132. Avec la barre oblique inversée "backslash"
  133. !pycon
  134. >>> 'Il a dit: "bonjour". C\'est sympa!'
  135. 'Il a dit: "bonjour". C\'est sympa!'
  136. ---
  137. # Concaténation
  138. !pycon
  139. >>> name = "John"
  140. >>> message = "Bonjour " + name + " !"
  141. >>> message
  142. "Bonjour John !"
  143. ---
  144. # Types
  145. !pycon
  146. >>> a = 42
  147. >>> message = "La réponse est: " + a
  148. TypeError: can only concatenate str (not "int") to str
  149. On ne mélange pas les torchons et les serviettes!
  150. ---
  151. # Conversions
  152. !python
  153. # Entier vers string
  154. >>> a = 42
  155. >>> message = "La réponse est: " + str(a)
  156. >>> message
  157. 'La réponse est 42'
  158. # String vers entier
  159. >>> answer = int("42")
  160. >>> answer
  161. 42
  162. Notez les parenthèses autour des valeurs.
  163. ---
  164. # Booléens
  165. True et False
  166. En Python, elle sont en majuscules!
  167. ---
  168. # Assignation
  169. On peut assigner des variables aux valeurs True et False
  170. !pycon
  171. >>> la_terre_est_plate = False
  172. ...
  173. >>> python_c_est_genial = True
  174. ---
  175. # Comparaisons
  176. !pycon
  177. >>> a = 2
  178. >>> b = 3
  179. >>> a > b
  180. False
  181. >>> 2 + 2 == 4
  182. True
  183. Note: `==` pour la comparaison, `=` pour l'assignation
  184. ---
  185. # Comparaisons (2)
  186. !pycon
  187. >>> a = 2
  188. >>> b = 3
  189. >>> a != b
  190. True
  191. >>> 2 + 2 >= 4
  192. True
  193. ---
  194. # Non persistance
  195. !pycon
  196. >>> a = 2
  197. >>> quit()
  198. <span />
  199. !pycon
  200. >>> a
  201. Traceback (most recent call last):
  202. File "<stdin>", line 1, in <module>
  203. NameError: name 'a' is not defined
  204. *Notre premier message d'erreur !*
  205. ---
  206. # Du code dans un fichier
  207. Aussi appelé: "code source", ou "source".
  208. L'essence du logiciel libre :)
  209. ---
  210. # Installation d'un éditeur de texte simple
  211. * Linux; `gedit`, `kate`, ...
  212. * macOS: `CotEditor`
  213. * Windows: `Notepad++`
  214. J'insiste sur **simple**. Inutile d'installer un IDE pour le moment.
  215. ---
  216. # Configuration
  217. * Police de caractères à chasse fixe
  218. * Indentation de *4 espaces*
  219. * Remplacer tabulation par des espaces
  220. * Activer la coloration syntaxique
  221. ---
  222. # Notre premier fichier source
  223. Insérez le code suivant dans votre éditeur de texte
  224. !python
  225. # Affiche un message
  226. print("Bonjour, monde")
  227. Sauvegardez dans un fichier `bonjour.py` dans `Documents/e2l/python` par exemple
  228. ---
  229. # Lancer du code en ligne de commande
  230. !console
  231. $ cd Documents/e2l/python/
  232. $ python3 bonjour.py
  233. Bonjour, monde
  234. * Les lignes commençant par dièse (`#`) ont été ignorées
  235. * `print()` affiche la valeur, comme dans le REPL.
  236. ---
  237. # Note importante (1)
  238. Vous avez juste besoin:
  239. * d'un éditeur de texte
  240. * de Python3 installé
  241. * d'une ligne de commande
  242. Pas la peine d'installer quoique ce soit de plus pour le moment
  243. ---
  244. # Note importante (2)
  245. À partir de maintenant, vous devez suivre ce cycle:
  246. 1. *Recopiez* le code affiché dans votre éditeur, à la suite du code
  247. déjà écrit
  248. 2. Lancez le code depuis la ligne de commande
  249. 3. Réparez les erreurs éventuelles
  250. 4. Recommencez
  251. ---
  252. # Note importante (3)
  253. C'est le meilleur moyen d'apprendre. Si vous restez passifs vous retiendrez beaucoup moins de choses et ne pourrez pas coder par vous-même.
  254. Profitez qu'on soit là pour vous aider si vous avez des erreurs que vous ne comprenez pas!
  255. ---
  256. # Flot de contrôle
  257. L'essence de la programmation!
  258. ---
  259. # while
  260. Répéter tant qu'une condition est vraie
  261. !python
  262. print("Bonjour, monde")
  263. while True:
  264. print("spam!")
  265. Notes:
  266. * deux points à la fin de la ligne
  267. * indentation après les deux points
  268. ---
  269. # Notre première boucle infinie
  270. !bash
  271. > python bonjour.py
  272. Bonjour, monde
  273. spam!
  274. spam!
  275. spam!
  276. ....
  277. CTRL-C pour interrompre
  278. ---
  279. # Conditions
  280. !python
  281. a = 3
  282. b = 4
  283. if a == b:
  284. print("a et b sont égaux")
  285. else:
  286. print("a et be sont différents")
  287. Rappel:
  288. * deux points à la fin de la ligne
  289. * indentation après les deux points
  290. ---
  291. # Combiner while et if
  292. Interrompt la boucle quand une condition devient vraie:
  293. !python
  294. i = 0
  295. while True:
  296. i = i + 1
  297. if i > 3:
  298. print("i est plus grand que 3, on arrête")
  299. break
  300. print("i =" + str(i))
  301. print("i est plus petit que 3, on continue")
  302. <pre>
  303. i = 1
  304. i est plus petit que 3, on continue
  305. i = 2
  306. i est plus petit que 3, on continue
  307. i = 3
  308. i est plus petit que 3, on continue
  309. i est plus grand que 3, on arrête
  310. </pre>
  311. ---
  312. # Lire une entrée utilisateur
  313. * `input()` (encore des parenthèses ...)
  314. * interrompt le script
  315. * lit ce que l'utilisateur tape jusqu'à ce qu'il tape "entrée".
  316. * renvoie une string
  317. ---
  318. # Devine nombre
  319. ---
  320. # Le code
  321. !python
  322. secret = 42
  323. print("Devine le nombre auquel je pense")
  324. while True:
  325. response = input()
  326. response = int(response)
  327. if response > secret:
  328. print("Trop grand")
  329. continue
  330. if response < secret:
  331. print("Trop petit")
  332. continue
  333. print("Gagné")
  334. break
  335. ---
  336. À vous de jouer!
  337. ---
  338. # Éviter de hard-coder le secret
  339. Le secret a une valeur prédéfinie, et il faut changer le code source
  340. pour changer le secret, pas glop.
  341. Solution: le choisir au hasard
  342. ---
  343. # Un secret au hasard
  344. Remplacez le première ligne pour avoir:
  345. !python
  346. import random
  347. secret = random.randint(0, 100)
  348. Le jeu devient tout de suite plus amusant :)