Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
To repozytorium jest zarchiwizowane. Możesz wyświetlać pliki i je sklonować, ale nie możesz do niego przepychać zmian lub otwierać zgłoszeń/Pull Requestów.

python-01.md 8.4 KiB

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