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.
 
 
 
 
 
 

527 lines
8.6 KiB

  1. \documentclass{beamer}
  2. \usepackage[utf8]{inputenc}
  3. \usepackage{hyperref}
  4. \usepackage{listings}
  5. \lstset{language=Python, showstringspaces=false}
  6. \usetheme{Madrid}
  7. \hypersetup{colorlinks=true}
  8. \title{Introduction à la programmation avec Python \\ (chapitre 2)}
  9. \author{Dimitri Merejkowsky}
  10. \institute{E2L}
  11. \begin{document}
  12. \frame{\titlepage}
  13. \begin{frame}
  14. Note: \\~\\
  15. Les sources sont sur GitHub:
  16. \url{https://github.com/E2L/cours-python/tree/master/sources}. \\~\\
  17. Mais il vaut mieux recopier le code vous-mêmes.
  18. \end{frame}
  19. \begin{frame}
  20. \frametitle{Plan}
  21. \begin{itemize}
  22. \item Retours sur le chapitre 1
  23. \item Fonctions
  24. \item Structures de données
  25. \end{itemize}
  26. \end{frame}
  27. \begin{frame}[fragile]
  28. \centering
  29. \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
  30. Retours sur le chapitre 1
  31. \end{beamercolorbox}
  32. \end{frame}
  33. \begin{frame}[fragile]
  34. \frametitle{Retour sur les strings}
  35. \begin{lstlisting}
  36. >>> text = "Je suis un message\nSur deux lignes")
  37. >>> print(text)
  38. Je suis un message
  39. Sur deux lignes
  40. \end{lstlisting}
  41. \end{frame}
  42. \begin{frame}[fragile]
  43. \frametitle{Concaténation implicite}
  44. \begin{lstlisting}
  45. >>> text = "Je suis une " "longue" " string"
  46. >>> text
  47. 'Je suis une longue string'
  48. \end{lstlisting}
  49. \end{frame}
  50. \begin{frame}[fragile]
  51. \frametitle{Concaténer des strings (2)}
  52. \begin{lstlisting}
  53. message = (
  54. "ligne 1\n"
  55. "ligne 2\n"
  56. )
  57. \end{lstlisting}
  58. Les parenthèse permettent d'aller à la ligne dans le code :)
  59. \end{frame}
  60. \begin{frame}[fragile]
  61. \frametitle{Répéter une string}
  62. \begin{lstlisting}
  63. >>> "argh " * 3
  64. argh argh argh
  65. \end{lstlisting}
  66. \end{frame}
  67. \begin{frame}[fragile]
  68. \frametitle{Faire une longue string sur plusieurs lignes}
  69. \begin{lstlisting}
  70. poeme = """
  71. Ceci est un poeme
  72. Qui contient "des quotes"
  73. Et parle d'autre choses ...
  74. """
  75. \end{lstlisting}
  76. \begin{block}{Note}
  77. Marche aussi avec des "triples-simple-quotes", mais c'est moins lisible :P
  78. \end{block}
  79. \end{frame}
  80. \begin{frame}[fragile]
  81. \frametitle{Opérations sur les strings (1)}
  82. \begin{lstlisting}
  83. >>> text = " bonjour! \n "
  84. >>> text.strip()
  85. "bonjour!"
  86. \end{lstlisting}
  87. Nouvelle syntaxe: notez le '.' entre la variable et la "fonction".
  88. \end{frame}
  89. \begin{frame}[fragile]
  90. \frametitle{Opérations sur les strings (2)}
  91. Modification de la casse:
  92. \begin{lstlisting}
  93. >>> text = "HeLlO"
  94. >>> text.upper()
  95. "HELLO"
  96. >>> text = "Au Revoir"
  97. >>> text.upper()
  98. "AU REVOIR"
  99. >>> text = "ceci est un titre"
  100. >>> text.title()
  101. "Ceci est un titre"
  102. \end{lstlisting}
  103. \end{frame}
  104. \begin{frame}[fragile]
  105. \frametitle{Retour sur input()}
  106. On peut afficher un message avant de lire l'entrée utilisateur.
  107. \begin{lstlisting}
  108. # A adapter
  109. import random
  110. secret = random.randint()
  111. print("Devine le nombre auquel je pense")
  112. while True:
  113. reponse = input("Ta reponse: ")
  114. response = int(response)
  115. ...
  116. \end{lstlisting}
  117. \end{frame}
  118. \begin{frame}[fragile]
  119. \frametitle{Retour sur print()}
  120. On peut spécifier le caractère de fin. \textbackslash n par défaut.
  121. \begin{lstlisting}
  122. # Dans hello.py
  123. print("Bonjour", end=" ")
  124. print("monde", end="!\n")
  125. \end{lstlisting}
  126. \begin{lstlisting}
  127. $ python hello.py
  128. Bonjour monde!
  129. \end{lstlisting}
  130. \end{frame}
  131. \begin{frame}[fragile]
  132. \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
  133. Fonctions
  134. \end{beamercolorbox}
  135. \end{frame}
  136. \begin{frame}[fragile]
  137. \frametitle{Sans arguments}
  138. \begin{lstlisting}
  139. def say_hello():
  140. print("Hello")
  141. say_hello()
  142. \end{lstlisting}
  143. \vfill
  144. Notez l'utilisation des parenthèses pour \emph{appeler} la fonction
  145. \end{frame}
  146. \begin{frame}[fragile]
  147. \frametitle{Définition simple}
  148. \begin{lstlisting}
  149. def add(a, b):
  150. return a + b
  151. a = 1
  152. b = 2
  153. c = add(a, b)
  154. print(c)
  155. \end{lstlisting}
  156. \end{frame}
  157. \begin{frame}[fragile]
  158. \frametitle{Paramètres nommés}
  159. \begin{lstlisting}
  160. def greet(name, shout=False):
  161. result = "Hello, "
  162. result += name
  163. if shout:
  164. result += "!"
  165. return result
  166. >>> greet("John")
  167. 'Hello, John'
  168. >>> greet("Jane", shout=True)
  169. 'Hello, Jane!'
  170. \end{lstlisting}
  171. \end{frame}
  172. \begin{frame}[fragile]
  173. \frametitle{Note}
  174. \texttt{print()} est une fonction :)
  175. \end{frame}
  176. \begin{frame}[fragile]
  177. \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
  178. Structures de données
  179. \end{beamercolorbox}
  180. \end{frame}
  181. \begin{frame}[fragile]
  182. \frametitle{Créer une liste}
  183. \begin{lstlisting}
  184. >>> ma_liste = list() # liste vide
  185. >>> ma_liste = [] # aussi une liste vide
  186. >>> ma_liste = [1, 2, 3] # trois entiers
  187. \end{lstlisting}
  188. \vfill
  189. \begin{alertblock}{Note}
  190. \texttt{list()} est \textbf{aussi} une fonction :)
  191. \end{alertblock}
  192. \end{frame}
  193. \begin{frame}[fragile]
  194. \frametitle{Listes hétérogènes}
  195. On peut mettre des types différents dans une même liste:
  196. \begin{lstlisting}
  197. >>> pommes_et_carottes = [True, 2, "three"]
  198. \end{lstlisting}
  199. \vfill
  200. Et même des listes dans des listes:
  201. \begin{lstlisting}
  202. >>> liste_de_liste = [[1, 2], ["one", "two"]]
  203. \end{lstlisting}
  204. \end{frame}
  205. \begin{frame}[fragile]
  206. \frametitle{Connaître la taille d'une liste}
  207. Avec la fonction \texttt{len()}:
  208. \vfill
  209. \begin{lstlisting}
  210. >>> liste_vide = []
  211. >>> len(liste_vide)
  212. 0
  213. >>> autre_liste = [1, 2, 3]
  214. >>> len(autre_liste)
  215. 3
  216. \end{lstlisting}
  217. \end{frame}
  218. \begin{frame}[fragile]
  219. \frametitle{Indexer une liste}
  220. \begin{lstlisting}
  221. >>> liste = [1, 2, 3]
  222. >>> liste[0] # ca commence a zero
  223. 1
  224. >>> liste[4] # erreur!
  225. \end{lstlisting}
  226. \vfill
  227. Astuce: l'index maximal est \texttt{len(list) -1} ;)
  228. \end{frame}
  229. \begin{frame}[fragile]
  230. \frametitle{Modifer une liste}
  231. \begin{lstlisting}
  232. >>> liste = [1, 2, 3]
  233. >>> liste[1] = 4
  234. >>> liste
  235. [1, 4, 3]
  236. \end{lstlisting}
  237. \end{frame}
  238. \begin{frame}[fragile]
  239. \frametitle{Itérer sur les éléments d'une liste}
  240. \begin{lstlisting}
  241. names = ["Alice", "Bob", "Charlie"]
  242. for name in names:
  243. print("Bonjour", name)
  244. Bonjour Alice
  245. Bonjour Bob
  246. Bonjour Charlie
  247. \end{lstlisting}
  248. \end{frame}
  249. \begin{frame}[fragile]
  250. \frametitle{Test de présence}
  251. Avec le mot-clé \texttt{in}:
  252. \vfill
  253. \begin{lstlisting}
  254. >>> fruits = ["pomme", "banane"]
  255. >>> "pomme" in fruits
  256. True
  257. >>> "orange" in fruits
  258. False
  259. \end{lstlisting}
  260. \end{frame}
  261. \begin{frame}[fragile]
  262. \frametitle{Ajout d'un élément}
  263. Avec \texttt{append()}
  264. \begin{lstlisting}
  265. >>> fruits.append("poire")
  266. >>> fruits
  267. ['pomme', 'banane', 'poire']
  268. \end{lstlisting}
  269. \vfill
  270. Notez le point entre `fruits` et `append`
  271. \end{frame}
  272. \begin{frame}[fragile]
  273. \frametitle{Autres opérations}
  274. \begin{lstlisting}
  275. >>> fruits = ["pomme", "poire"]
  276. >>> fruits.insert(1, "abricot")
  277. # ['pomme', 'abricot', 'poire']
  278. >>> fruits.remove("pomme")
  279. # ['abricot', 'poire']
  280. >>> fruits.remove("pas un fruit")
  281. Erreur!
  282. \end{lstlisting}
  283. \end{frame}
  284. \begin{frame}[fragile]
  285. \frametitle{Dictionnaires}
  286. Des clés et des valeurs:
  287. \begin{lstlisting}
  288. >>> mon_dico = dict() # dictionaire vide
  289. >>> mon_dico = {} # aussi un dictionnaire vide
  290. # deux cles et deux valeurs:
  291. >>> scores = {"john": 24, "jane": 23}
  292. >>> scores.keys()
  293. ["john", "jane"
  294. >>> mon_dico.values()
  295. [24, 23]
  296. \end{lstlisting}
  297. \end{frame}
  298. \begin{frame}[fragile]
  299. \frametitle{Insertion}
  300. \begin{lstlisting}
  301. >>> scores = {"john": 10 }
  302. >>> scores["john"] = 12 # John marque deux points
  303. >>> scores["bob"] = 3 # Bob entre dans la partie
  304. >>> scores["personne"]
  305. Erreur!
  306. \end{lstlisting}
  307. \end{frame}
  308. \begin{frame}[fragile]
  309. \frametitle{Fusion de dictionnaires}
  310. \begin{lstlisting}
  311. >>> s1 = {"john": 12, "bob": 2}
  312. >>> s2 = {"bob": 3, "charlie": 4}
  313. >>> s1.update(s2)
  314. >>> s1
  315. {"john": 12, "bob": 3, "charlie": 4}
  316. \end{lstlisting}
  317. \end{frame}
  318. \begin{frame}[fragile]
  319. \frametitle{Destruction}
  320. \begin{lstlisting}
  321. >>> scores = {"john": 12, "bob": 23}
  322. >>> scores.pop("john")
  323. # {"bob': 23}
  324. \end{lstlisting}
  325. \end{frame}
  326. \begin{frame}[fragile]
  327. \frametitle{Ensembles}
  328. Des objets sans ordre ni doublons.
  329. Création avec la fonction \texttt{set()}:
  330. \begin{lstlisting}
  331. >>> sac = set()
  332. >>> sac = {} # oups, c'est un dictionnaire vide!
  333. >>> sac = {"one", "two"} # un set avec deux strings
  334. \end{lstlisting}
  335. \end{frame}
  336. \begin{frame}[fragile]
  337. \frametitle{Ajout d'un élement dans un ensoble}
  338. \begin{lstlisting}
  339. >>> sac = {"one", "two"}
  340. >>> sac.add("three"}
  341. # {"one", "two", "three"}
  342. >>> sac.add("one")
  343. # {"one", "two", "three"} # pas de changement
  344. \end{lstlisting}
  345. \end{frame}
  346. \begin{frame}[fragile]
  347. \frametitle{Autres opérations}
  348. \begin{lstlisting}
  349. >>> s1 = {"one", "two"}
  350. >>> s2 = {"one", "three"}
  351. # {"two"}
  352. \end{lstlisting}
  353. Aussi:
  354. \begin{itemize}
  355. \item \texttt{update()}
  356. \item \texttt{union()}
  357. \item \texttt{intersection()}
  358. \end{itemize}
  359. \end{frame}
  360. \begin{frame}[fragile]
  361. \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
  362. Jeu du pendu
  363. \end{beamercolorbox}
  364. \end{frame}
  365. \end{document}