Outils pour utilisateurs

Outils du site


initiation_a_python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
initiation_a_python [2018/09/04 02:26] – [Python: Initiation à python] sergeinitiation_a_python [2021/08/21 13:41] (Version actuelle) – [PEP8] serge
Ligne 1: Ligne 1:
 ======Python: Initiation à python====== ======Python: Initiation à python======
-Ce tuto est très inspiré de [[https://openclassrooms.com/courses/235344-apprenez-a-programmer-en-python|Apprenez à programmer en Python de Vincent Le Goff]] Licence Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 2.0 Générique (CC BY-NC-SA 2.0) [[http://user.oc-static.com/pdf/223267-apprenez-a-programmer-en-python.pdf|Télécharger le pdf]] 
  
-Cette page est la suite de [[Atelier Python Niveau 1]].+<WRAP center round box 80% centeralign> 
 +**[[toutes_les_pages_sur_python|Toutes les pages sur Python]] sans les pages sur {{tagpage>kivy|Kivy}}**\\ 
 +</WRAP>
  
-**[[http://sametmax.com/ce-quil-faut-savoir-en-python/|Lis tout ça, tu seras expert python dans 10 ans]]**+ 
 +<WRAP center round box 80% centeralign> 
 +**{{tagpage>atelier_python|Cours de python}}** 
 +</WRAP> 
 + 
 +Cet atelier est animé comme un TD. Aucun cours théorique, que de la pratique avec des exemples fun 8-)\\ 
 +Et surtout je ne commence pas par **Chapitre 1 ** POO Programmation Orienté Objet. 
 + 
 +Ce tuto est très inspiré de Apprenez à programmer en Python de Vincent Le Goff [[http://user.oc-static.com/pdf/223267-apprenez-a-programmer-en-python.pdf|Télécharger le pdf]] 
 + 
 +  * **[[https://sametmax.com/ce-quil-faut-savoir-en-python/|Lis tout ça, tu seras expert python dans 10 ans]]** 
 +  * **[[https://docs.python.org/fr/3/|Documentation officielle]]** docs.python.org/fr 
 + 
 +=====Les sources complètes de ces TD===== 
 +  * https://replit.com/join/xzqjcqvvrp-sergelabo 
 +  * **[[https://github.com/sergeLabo/formation_python|Formation Python Support pour atelier d'initiation python]]** sur GitHub. 
 + 
 +=====Installation===== 
 +  * **[[python_installation]]**
 =====Quelques commandes===== =====Quelques commandes=====
-===bpython3===+====Tester dans un navigateur==== 
 +  * **[[https://www.python.org/shell/|L'interpréteur de python.org]] ** 
 +{{ :media_14:python_org.png?600 |}} 
 + 
 +===Un terminal quelconque=== 
 +Ouvrir un terminator: 
 +{{ :media_14:terminator_python.png?600 |}} 
 +   
 +=====Premiers pas===== 
 +Ouvrir un terminator 
 +  bpython3
 <code python> <code python>
 bpython version 0.16 on top of Python 3.5.3 /usr/bin/python3 bpython version 0.16 on top of Python 3.5.3 /usr/bin/python3
Ligne 24: Ligne 53:
 >>>  >>> 
 </code> </code>
 +
 ===int float string opération=== ===int float string opération===
 <code python> <code python>
Ligne 43: Ligne 73:
  
 ===Mots clé=== ===Mots clé===
 +  * https://docs.python.org/fr/3/reference/lexical_analysis.html#keywords
 <code python> <code python>
-and as class def elif else except False for from global if import in +False      await      else       import     pass 
-lambda None not or pass return True try while with+None       break      except     in         raise 
 +True       class      finally    is         return 
 +and        continue   for        lambda     try 
 +as         def        from       nonlocal   while 
 +assert     del        global     not        with 
 +async      elif       if         or         yield
 </code> </code>
  
-===Boolean et rien=== 
-<code python> 
-True False None 
-</code> 
 =====Type de données===== =====Type de données=====
 <code python> <code python>
 1  # int  1  # int 
 3.14  # float  3.14  # float 
-"Labbomedia # str +"Labomedia # str 
 [1, 2, 3]  # list [1, 2, 3]  # list
 {"1": "tot", "2": 1}  # dict {"1": "tot", "2": 1}  # dict
 </code> </code>
-=====Fonction===== 
  
 +=====Fonction=====
 <code python> <code python>
 >>> type(1) >>> type(1)
Ligne 68: Ligne 100:
 Hello, World! Hello, World!
 </code> </code>
- 
- 
  
 =====Ouvrir Geany===== =====Ouvrir Geany=====
 +====Geany: un éditeur sympa multiplateforme====
 +  * **[[python_installation#un_edi_multiplateforme]]**
 +====Premier pas avec geany====
 Créer un nouveau fichier et l'enregistrer avec une extension.py Créer un nouveau fichier et l'enregistrer avec une extension.py
  
Ligne 97: Ligne 130:
  
 print(a+e) print(a+e)
 +
 +print(f"Je suis un f-string {t} ou encore {a+e} çà")
 </code> </code>
 +
 +
 +=====Les différents types de variable=====
 +====Liste====
 +<code python>
 +l = [1, 2, 3, 4, 5]
 +# On compte à partir de zéro
 +l[1] = 2
 +</code>
 +  * [[http://apprendre-python.com/page-apprendre-listes-list-tableaux-tableaux-liste-array-python-cours-debutant|Les listes sur apprendre-python.com]]
 +  * [[https://www.dailymotion.com/video/xbk6sd?playlist=x22t3u|Pythonnerie n°4: les listes]]
 +====Dictionnaire====
 +<code python>
 +d = {1: "blender", 2: "gimp"}
 +# Les clés doivent être immuables
 +d[3] = "inkskape"
 +print(d)
 +</code>
 +
 +[[http://apprendre-python.com/page-apprendre-dictionnaire-python|Les dictionnaires sur apprendre-python.com]]
 +
 +====Tuples====
 +<code python>
 +t = ("127.0.0.1", 8888)
 +print(t)
 +t = "127.0.0.1", 8888
 +print(t)
 +</code>
 +
 +[[http://apprendre-python.com/page-apprendre-tuples-tuple-python|Les tuples sur apprendre-python.com]]
 +
 +====Set====
 +Liste toutes les valeurs existantes, il n'y a pas de doublons.
 +<code python>
 +my_set = {1, 2, 3, 4, 2, 1}
 +print(my_set)
 +</code>
 +
  
 =====Condition===== =====Condition=====
Ligne 121: Ligne 194:
 </code> </code>
  
 +**Indentation: Toujours utiliser la tabulations avec 4 espaces: quand lama fâché, lui toujours faire ainsi !**
 ====Opérateur de comparaison==== ====Opérateur de comparaison====
 +  * https://docs.python.org/fr/3/reference/lexical_analysis.html#operators
 <code python> <code python>
 ==    !=    <    >    <=    >= ==    !=    <    >    <=    >=
 </code> </code>
- 
- 
- 
-=====Exercice Bissextile===== 
-Trouver si une année est bissextile: 
-<code text> 
-Si une année n'est pas multiple de 4, elle n'est pas bissextile 
-Si elle est multiple de 4, on regarde si multiple de 100 
-    Si oui, on regarde si multiple de 400 
-        Si oui, elle est bissextile 
-        Si non, elle n'est pas bissextile 
-    Si non, elle est bissextile 
-</code> 
- 
-<file python bissextile.py> 
-# Programme testant si une année est bissextile 
- 
-# Demande de l'année au clavier 
-annee =  input("Saisissez votre année ..." # attente de la saisie 
-etc ...... 
-</file> 
- 
-Deux réponses: **[[https://github.com/sergeLabo/formation_python/blob/master/bissextile.py|bissextile.py]]** 
- 
  
  
 =====Boucle===== =====Boucle=====
-Table du 4:+**Table du 4**
 <code python> <code python>
 print("1 x 4 =", 1*4) print("1 x 4 =", 1*4)
Ligne 161: Ligne 211:
 print("10 x 4 =", 10 * 4) print("10 x 4 =", 10 * 4)
 </code> </code>
-Les répétitions sont très sales !+**Les répétitions sont très sales !**
 <code python> <code python>
 i = 0 i = 0
Ligne 168: Ligne 218:
     i += 1     i += 1
 </code> </code>
-ou encore+**ou encore**
 <code python> <code python>
 for i in range(10): for i in range(10):
Ligne 177: Ligne 227:
     print(str(i) + " x 4 =", i * 4)     print(str(i) + " x 4 =", i * 4)
 </code> </code>
-=====Itération=====+**Itération**
 <code python> <code python>
 chaine = "Labomedia" chaine = "Labomedia"
Ligne 183: Ligne 233:
     print(lettre)     print(lettre)
 </code> </code>
 +
 =====Fonctions===== =====Fonctions=====
 ====Pourquoi faire des fonctions ou des classes ?==== ====Pourquoi faire des fonctions ou des classes ?====
Ligne 192: Ligne 243:
   * Permettre un travail en équipe en découpant un projet en bout de projet indépendant.   * Permettre un travail en équipe en découpant un projet en bout de projet indépendant.
  
-===Une fonction fait une chose=== +**Une fonction fait une choseUne class fait une chose** 
-trouver un exemple ! +  * [[http://apprendre-python.com/page-apprendre-creer-fonction-en-python|Apprendre à créer des fonctions en python]] 
-===Une class fait une chose=== +
-idem+
 ====Simple==== ====Simple====
 <code python> <code python>
Ligne 261: Ligne 311:
 ====Fonctions prédéfinies==== ====Fonctions prédéfinies====
 <code python> <code python>
-print( +print( abs(-20),
-       abs(-20),+
        max(2, 50),        max(2, 50),
        int(str(1)),        int(str(1)),
-       type(int(str(1)))) +       type(int(str(1)), 
-       dir(1)+       dir(1))
 </code> </code>
-=====Module Package=====+=====Module Package Import=====
 ===def=== ===def===
 Une ou des fonctions dans un fichier est un module. Plusieurs modules font un package. Une ou des fonctions dans un fichier est un module. Plusieurs modules font un package.
Ligne 289: Ligne 338:
   python3 I_call.py   python3 I_call.py
  
-===time===+===Bibliothèque standard=== 
 +  * **[[https://docs.python.org/fr/3/py-modindex.html#cap-t|Index des modules Python]]**
  
 +===time===
 <code python> <code python>
 import time import time
Ligne 304: Ligne 355:
 print("Nous sommes le", datetime.date.today()) print("Nous sommes le", datetime.date.today())
 </code> </code>
-===Module get object=== 
- 
-[[https://github.com/sergeLabo/mylabotools/blob/master/mylabotools/labgetobject.py|labgetobject.py]] à utiliser dans blender 
  
 =====Exception===== =====Exception=====
- 
 <code python> <code python>
 try: try:
Ligne 322: Ligne 369:
 </code> </code>
  
-**[[https://docs.python.org/3.5/library/exceptions.html| La doc]]** +**[[https://docs.python.org/3.5/library/exceptions.html|La doc officielle]]** 
-=====Pass===== +===Pass=== 
-====Du sale====+**Du sale**
 <code python> <code python>
 try: try:
Ligne 332: Ligne 379:
     pass     pass
 </code> </code>
- +**Du propre** 
-====Du propre==== +Ne jamais passer les erreurs sous silence, ou les faire taire explicitement.
-Ne jamais passer les erreurs sous silence,\\  +
-ou les faire taire explicitement. +
-    +
 <code python> <code python>
 def exemple_propre(a): def exemple_propre(a):
Ligne 348: Ligne 392:
 </code> </code>
  
-====Pass pour du code en construction ====+**Pass pour du code en construction**
 <code python> <code python>
 def je_multiplie(): def je_multiplie():
Ligne 356: Ligne 400:
     pass     pass
 </code> </code>
-=====Les différents types de variable===== 
-====Liste==== 
-<code python> 
-l = [1, 2, 3, 4, 5] 
-# On compte à partir de zéro 
-l[1] = 2 
-</code> 
-http://apprendre-python.com/page-apprendre-listes-list-tableaux-tableaux-liste-array-python-cours-debutant 
-====Dictionnaire==== 
-<code python> 
-d = {1: "blender", 2: "gimp"} 
-# Les clés doivent être immuables 
-d[3] = "inkskape" 
-print(d) 
-</code> 
-http://apprendre-python.com/page-apprendre-dictionnaire-python 
  
-====Tuples====+=====Type===== 
 +Python est fortement typé: il utilise le **[[https://fr.wikipedia.org/wiki/Duck_typing|typage canard (duck typing)]]** ! 
 <code python> <code python>
-t = ("127.0.0.1"8888) +t = type({1, 23, 4, 2, 1})
-print(t) +
-t = "127.0.0.1"8888+
 print(t) print(t)
 </code> </code>
-http://apprendre-python.com/page-apprendre-tuples-tuple-python 
- 
- 
-====Set==== 
-Je n'utilise jamais:  
-<code python> 
-my_set = {1, 2, 3, 4, 2, 1} 
-print(my_set) 
-</code> 
-  
 =====Variables globales et locales, espaces de noms===== =====Variables globales et locales, espaces de noms=====
 Le fichier pi.py n'a rien à voir avec pi ou PI ou pi() Le fichier pi.py n'a rien à voir avec pi ou PI ou pi()
Ligne 399: Ligne 417:
  
 <code python jeu.py> <code python jeu.py>
-#!/usr/bin/env python3 
-# -*- coding: utf-8 -*- 
- 
 from pi import pi as pipi from pi import pi as pipi
  
Ligne 423: Ligne 438:
 print_pi() print_pi()
 </code> </code>
 +
  
 =====POO===== =====POO=====
-====Dans le Blender Game Engine==== +
-Seuls les programmeurs experts créent des class dans de gros projets. +
-La suite ne concerne que les curieux.+
 ====Programmation Orientée Objet==== ====Programmation Orientée Objet====
-[[https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet|Pour votre culture personnelle !]]+**[[https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet|Pour votre culture personnelle !]]**
  
 ====Pourquoi des class ?==== ====Pourquoi des class ?====
-Voir [[https://ressources.labomedia.org/initiation_a_python#pourquoi_faire_des_fonctions_ou_des_classes|Pourquoi faire des fonctions ou des classes ?]]+**[[initiation_a_python#pourquoi_faire_des_fonctions_ou_des_classes|Python: Initiation à python Pourquoi des fonctions ou des class]]**
  
 ====Les class permettent de créer des objets==== ====Les class permettent de créer des objets====
 <code python> <code python>
-#!/usr/bin/env python3 
-# -*- coding: utf-8 -*- 
- 
 class Subliminale: class Subliminale:
     pass     pass
Ligne 467: Ligne 478:
 print(b.kind) print(b.kind)
  
-class Contact: 
- 
-    def __init__(self, name): 
-        self.name = name 
-         
-    def set_phone(phone): 
-        self.phone = phone 
-         
-    def get_phone(self): 
-        return self.phone 
- 
-c = Contact("toto") 
-print(c.get_phone()) 
 </code> </code>
  
  
-Le guide ultime et définitif sur la programmation orientée objet en Python à l’usage des débutants qui sont rassurés par les textes détaillés qui prennent le temps de tout expliquer. Voir les parties 1 à 8.  
-**http://sametmax.com/ce-quil-faut-savoir-en-python/** 
 =====La philosophie Python===== =====La philosophie Python=====
 ====Zen of python==== ====Zen of python====
Ligne 492: Ligne 488:
 </code> </code>
 <code text> <code text>
-    Préfèrer le beau au laid+Préfère : 
-    lexplicite à limplicite, +      la beauté à la laideur
-    le simple au complexe, +      l'explicite à l'implicite, 
-    le complexe au compliqué, +      le simple au complexe 
-    le déroulé à limbriqué, +      et le complexe au compliqué, 
-    laéré au compact. +      le déroulé à l'imbriqué, 
-    La lisibilité compte. +      l'aéré au compact. 
-    Les cas particuliers ne le sont jamais assez pour violer les règles, +Prends en compte la lisibilité
-    même s’il faut privilégier laspect pratique à la pureté+Les cas particuliers ne le sont jamais assez pour violer les règles
-    Ne jamais passer les erreurs sous silence, +Maisà la pureté, privilégie l'aspect pratique. 
-    ou les faire taire explicitement. +Ne passe pas les erreurs sous silence, 
-    Face à lambiguïté, ne pas se laisser tenter à deviner. +... ou bâillonne-les explicitement. 
-    Il doit y avoir une – et si possible une seule – façon évidente de procéder, +Face à l'ambiguïté, à deviner ne te laisse pas aller
-    même si cette façon nest pas évidente à première vue, à moins dêtre Hollandais+Sache qu'il ne devrait y avoir qu'une et une seule façon de procéder, 
-    Mieux vaut maintenant que jamais, +même si, de prime abord, elle n'est pas évidente, à moins d'être Néerlandais
-    même si jamais est souvent mieux quimmédiatement. +Mieux vaut maintenant que jamais. 
-    Si limplémentation sexplique difficilement, cest une mauvaise idée. +Cependant jamais est souvent mieux qu'immédiatement. 
-    Si limplémentation sexplique facilement, cest peut-être une bonne idée. +Si l'implémentation s'explique difficilement, c'est une mauvaise idée. 
-    Les espaces de nommage sont une sacrée bonne idée, utilisons-les plus souvent ! +Si l'implémentation s'explique aisément, c'est peut-être une bonne idée. 
-</code>+Les espaces de nommage ! Sacrée bonne idée ! Faisons plus de trucs comme ça. </code>
 ====PEP8===== ====PEP8=====
  
-  * [[http://sametmax.com/le-pep8-en-resume/|un tuto parmi des tas sur @]] chez sametmax.com+  * **[[https://realpython.com/python-pep8/|realpython.com pep8]]** les choses importantes, après avoir bien mémorisé **[[https://www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements|les règles sur les espaces]]**. 
  
-**Avec python, sommes toujours entre adultes responsables.**+**Avec python, nous sommes toujours entre adultes responsables.**
   * C'est toujours possible d’enfreindre une règle.   * C'est toujours possible d’enfreindre une règle.
   * Par contre, certaines règles sont obligatoires: endentation, espaces ...   * Par contre, certaines règles sont obligatoires: endentation, espaces ...
-  * Lord Acton aurait pu dire: "Les choses cachées ne le sont jamais absolument."+  * [[https://fr.wikipedia.org/wiki/John_Emerich_Edward_Dalberg-Acton|Lord Acton aurait pu dire: "Les choses cachées ne le sont jamais absolument."]] 
 + 
 + 
 +=====Recherche web===== 
 +Dans un moteur de recherche, toujours en anglais, par exemple: 
 +  python3 download web page 
 + 
 +Une grande majorité des réponses sera sur **[[https://stackoverflow.com/questions/7243750/download-file-from-web-in-python-3|stackoverflow.com]]** 
  
-{{tag>python abp sb}}+{{tag> atelier_python python sb }}
initiation_a_python.1536027991.txt.gz · Dernière modification : 2018/09/04 02:26 de serge