|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493 |
- \documentclass{beamer}
-
- \usepackage[utf8]{inputenc}
- \usepackage{hyperref}
- \usepackage{listings}
- \lstset{language=Python, showstringspaces=false}
-
- \usetheme{Madrid}
-
- \hypersetup{colorlinks=true}
-
- \title{Introduction à la programmation avec Python \\ (chapitre 2)}
- \author{Dimitri Merejkowsky}
- \institute{E2L}
-
- \begin{document}
-
- \frame{\titlepage}
-
- \begin{frame}
-
- Note: \\~\\
-
- Les sources sont sur GitHub:
-
- \url{https://github.com/E2L/cours-python/tree/master/sources}. \\~\\
-
-
- Mais il vaut mieux recopier le code vous-mêmes.
-
- \end{frame}
-
-
- \begin{frame}
-
- \frametitle{Plan}
-
- \begin{itemize}
- \item Retours sur le chapitre 1
- \item Fonctions
- \item Structures de données
- \end{itemize}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \centering
- \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
- Retours sur le chapitre 1
- \end{beamercolorbox}
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Retour sur les strings}
-
- \begin{lstlisting}
-
- >>> text = "Je suis un message\nSur deux lignes")
- >>> print(text)
- Je suis un message
- Sur deux lignes
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Concaténation implicite}
-
- \begin{lstlisting}
-
- >>> text = "Je suis une " "longue" " string"
- >>> text
- 'Je suis une longue string'
- \end{lstlisting}
-
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Concaténer des strings (2)}
- \begin{lstlisting}
- message = (
- "ligne 1\n"
- "ligne 2\n"
- )
- \end{lstlisting}
-
- Les parenthèse permettent d'aller à la ligne dans le code :)
-
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Répéter une string}
-
- \begin{lstlisting}
- >>> "argh " * 3
- argh argh argh
- \end{lstlisting}
-
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Faire une longue string sur plusieurs lignes}
-
- \begin{lstlisting}
- poeme = """
- Ceci est un poeme
-
- Qui contient "des quotes"
- Et parle d'autre choses ...
- """
- \end{lstlisting}
-
- \begin{block}{Note}
- Marche aussi avec des "triples-simple-quotes", mais c'est moins lisible :P
- \end{block}
- \end{frame}
-
-
-
- \begin{frame}[fragile]
- \frametitle{Retour sur input()}
- On peut afficher un message avant de lire l'entrée utilisateur.
-
- \begin{lstlisting}
- # A adapter
- import random
- secret = random.randint()
-
- print("Devine le nombre auquel je pense")
- while True:
- reponse = input("Ta reponse: ")
- response = int(response)
- ...
- \end{lstlisting}
-
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Retour sur print()}
-
- On peut spécifier le caractère de fin. \textbackslash n par défaut.
-
- \begin{lstlisting}
- # Dans hello.py
- print("Bonjour", end=" ")
- print("monde", end="!\n")
- \end{lstlisting}
-
- \begin{lstlisting}
- $ python hello.py
- Bonjour monde!
- \end{lstlisting}
-
- \end{frame}
-
-
- \begin{frame}[fragile]
- \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
- Fonctions
- \end{beamercolorbox}
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Sans arguments}
-
- \begin{lstlisting}
- def say_hello():
- print("Hello")
-
- say_hello()
- \end{lstlisting}
-
- \vfill
-
- Notez l'utilisation des parenthèses pour \emph{appeler} la fonction
-
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Définition simple}
-
- \begin{lstlisting}
- def add(a, b):
- return a + b
-
- a = 1
- b = 2
- c = add(a, b)
- print(c)
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Paramètres nommés}
- \begin{lstlisting}
- def greet(name, shout=False):
- result = "Hello, "
- result += name
- if shout:
- result += "!"
- return result
-
- >>> greet("John")
- 'Hello, John'
-
- >>> greet("Jane", shout=True)
- 'Hello, Jane!'
- \end{lstlisting}
-
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Note}
- \texttt{print()} est une fonction :)
- \end{frame}
-
-
- \begin{frame}[fragile]
- \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
- Structures de données
- \end{beamercolorbox}
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Créer une liste}
- \begin{lstlisting}
-
- >>> ma_liste = list() # liste vide
- >>> ma_liste = [] # aussi une liste vide
- >>> ma_liste = [1, 2, 3] # trois entiers
-
- \end{lstlisting}
-
- \vfill
-
- \begin{alertblock}{Note}
- \texttt{list()} est \textbf{aussi} une fonction :)
- \end{alertblock}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Listes hétérogènes}
-
- On peut mettre des types différents dans une même liste:
-
- \begin{lstlisting}
- >>> pommes_et_carottes = [True, 2, "three"]
- \end{lstlisting}
-
- \vfill
- Et même des listes dans des listes:
-
- \begin{lstlisting}
- >>> liste_de_liste = [[1, 2], ["one", "two"]]
- \end{lstlisting}
-
-
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Connaître la taille d'une liste}
- Avec la fonction \texttt{len()}:
-
- \vfill
-
- \begin{lstlisting}
- >>> liste_vide = []
- >>> len(liste_vide)
- 0
- >>> autre_liste = [1, 2, 3]
- >>> len(autre_liste)
- 3
- \end{lstlisting}
-
- \end{frame}
-
-
-
- \begin{frame}[fragile]
- \frametitle{Indexer une liste}
-
- \begin{lstlisting}
-
- >>> liste = [1, 2, 3]
- >>> liste[0] # ca commence a zero
- 1
- >>> liste[4] # erreur!
- \end{lstlisting}
-
- \vfill
-
- Astuce: l'index maximal est \texttt{len(list) -1} ;)
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Modifer une liste}
- \begin{lstlisting}
- >>> liste = [1, 2, 3]
- >>> liste[1] = 4
- >>> liste
- [1, 4, 3]
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Itérer sur les éléments d'une liste}
- \begin{lstlisting}
- names = ["Alice", "Bob", "Charlie"]
- for name in names:
- print("Bonjour", name)
-
- Bonjour Alice
- Bonjour Bob
- Bonjour Charlie
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Test de présence}
-
- Avec le mot-clé \texttt{in}:
-
- \vfill
-
- \begin{lstlisting}
- >>> fruits = ["pomme", "banane"]
- >>> "pomme" in fruits
- True
- >>> "orange" in fruits
- False
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Ajout d'un élément}
- Avec \texttt{append()}
-
- \begin{lstlisting}
- >>> fruits.append("poire")
- >>> fruits
- ['pomme', 'banane', 'poire']
- \end{lstlisting}
-
- \vfill
-
- Notez le point entre `fruits` et `append`
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Autres opérations}
-
- \begin{lstlisting}
- >>> fruits = ["pomme", "poire"]
-
- >>> fruits.insert(1, "abricot")
- # ['pomme', 'abricot', 'poire']
-
- >>> fruits.remove("pomme")
- # ['abricot', 'poire']
- >>> fruits.remove("pas un fruit")
- Erreur!
- \end{lstlisting}
-
- \end{frame}
-
-
-
- \begin{frame}[fragile]
- \frametitle{Dictionnaires}
-
- Des clés et des valeurs:
-
- \begin{lstlisting}
- >>> mon_dico = dict() # dictionaire vide
- >>> mon_dico = {} # aussi un dictionnaire vide
-
- # deux cles et deux valeurs:
- >>> scores = {"john": 24, "jane": 23}
- >>> scores.keys()
- ["john", "jane"
-
- >>> mon_dico.values()
- [24, 23]
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Insertion}
- \begin{lstlisting}
- >>> scores = {"john": 10 }
- >>> scores["john"] = 12 # John marque deux points
- >>> scores["bob"] = 3 # Bob entre dans la partie
- >>> scores["personne"]
- Erreur!
- \end{lstlisting}
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Fusion de dictionnaires}
-
- \begin{lstlisting}
- >>> s1 = {"john": 12, "bob": 2}
- >>> s2 = {"bob": 3, "charlie": 4}
- >>> s1.update(s2)
- >>> s1
- {"john": 12, "bob": 3, "charlie": 4}
- \end{lstlisting}
- \end{frame}
-
-
- \begin{frame}[fragile]
- \frametitle{Destruction}
-
- \begin{lstlisting}
- >>> scores = {"john": 12, "bob": 23}
- >>> scores.pop("john")
- # {"bob': 23}
- \end{lstlisting}
-
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Ensembles}
- Des objets sans ordre ni doublons.
-
- Création avec la fonction \texttt{set()}:
-
- \begin{lstlisting}
- >>> sac = set()
- >>> sac = {} # oups, c'est un dictionnaire vide!
-
- >>> sac = {"one", "two"} # un set avec deux strings
- \end{lstlisting}
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Ajout d'un élement dans un ensoble}
- \begin{lstlisting}
- >>> sac = {"one", "two"}
- >>> sac.add("three"}
- # {"one", "two", "three"}
- >>> sac.add("one")
- # {"one", "two", "three"} # pas de changement
- \end{lstlisting}
- \end{frame}
-
- \begin{frame}[fragile]
- \frametitle{Autres opérations}
- \begin{lstlisting}
- >>> s1 = {"one", "two"}
- >>> s2 = {"one", "three"}
- # {"two"}
- \end{lstlisting}
-
- Aussi:
-
- \begin{itemize}
- \item \texttt{update()}
- \item \texttt{union()}
- \item \texttt{intersection()}
- \end{itemize}
- \end{frame}
-
- \begin{frame}[fragile]
-
- \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
- Jeu du pendu
- \end{beamercolorbox}
-
- \end{frame}
-
-
-
-
-
-
- \end{document}
|