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/07/09 13:32] sergeinitiation_a_python [2021/08/21 13:41] (Version actuelle) – [PEP8] serge
Ligne 1: Ligne 1:
-======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>
  
 +
 +<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=====
 +====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 21: Ligne 52:
 'Labomedia' 'Labomedia'
 >>>  >>> 
 +</code>
  
 ===int float string opération=== ===int float string opération===
Ligne 41: 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 66: 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 95: 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=====
 +====si oui si non====
 <code python> <code python>
 a = -6 a = -6
Ligne 118: 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 158: 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 165: 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 174: 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 180: Ligne 233:
     print(lettre)     print(lettre)
 </code> </code>
 +
 =====Fonctions===== =====Fonctions=====
-Pourquoi faire des fonctions ou des classes ?\\ +====Pourquoi faire des fonctions ou des classes ?====
   * Pour éviter les répétitions, sources d'erreurs, surtout si une modifications de ces répétitions est nécessaire.   * Pour éviter les répétitions, sources d'erreurs, surtout si une modifications de ces répétitions est nécessaire.
   * Pour structurer le projet.   * Pour structurer le projet.
Ligne 189: 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 class fait une chose**
 +  * [[http://apprendre-python.com/page-apprendre-creer-fonction-en-python|Apprendre à créer des fonctions en python]]
  
-===Simple===+====Simple====
 <code python> <code python>
 def ma_fonction(): def ma_fonction():
Ligne 208: Ligne 264:
 </code> </code>
  
-===Arguments par défaut===+====Arguments par défaut====
 <code python> <code python>
 def fonct(a=1, b=2, c=3): def fonct(a=1, b=2, c=3):
Ligne 218: Ligne 274:
 </code> </code>
  
-===Return===+====Return====
 Une fonction sans return retourne None Une fonction sans return retourne None
 <code python> <code python>
Ligne 253: Ligne 309:
 </code> </code>
  
-===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===
 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.
  
-===time===+===Module simple===
  
 +<file python called.py>
 +def je_suis_appeler(phrase):
 +    print("phrase =", phrase)
 +</file>
 +
 +<file python I_call.py>
 +from called import je_suis_appeler
 +
 +p = "Une phrase exemple à la noix"
 +je_suis_appeler(p)
 +</file>
 +
 +Exécuter:
 +  python3 I_call.py
 +
 +===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 280: 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=====
- 
-=====Pass===== 
- 
-=====Les différents type de variable===== 
-====Liste==== 
 <code python> <code python>
 +try:
 +    resp = 1 / 0
 +except:
 +    print("Division par zéro impossible")
  
 +try:
 +    resp = 1 / 0
 +except ZeroDivisionError as e:
 +    print(e)
 </code> </code>
  
-====Dictionnaire====+**[[https://docs.python.org/3.5/library/exceptions.html|La doc officielle]]** 
 +===Pass=== 
 +**Du sale**
 <code python> <code python>
 +try:
 +    resp = 1 / 0
 +    return resp
 +except:
 +    pass
 +</code>
 +**Du propre**
 +Ne jamais passer les erreurs sous silence, ou les faire taire explicitement.
 +<code python>
 +def exemple_propre(a):
 +    try:
 +        return 1 / a
 +    except ZeroDivisionError as e:
 +        print(e)
 +        return None
 +    except:
 +        return None
 +</code>
  
 +**Pass pour du code en construction**
 +<code python>
 +def je_multiplie():
 +    pass
 +    
 +def j_imprime():
 +    pass
 </code> </code>
  
-====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 = type({1, 2, 3, 4, 2, 1})
 +print(t)
 +</code>
 +=====Variables globales et locales, espaces de noms=====
 +Le fichier pi.py n'a rien à voir avec pi ou PI ou pi()
  
 +<code python pi.py>
 +def pi():
 +    return "Mauvaise blague"
 </code> </code>
  
-====Chaîne de caractères==== +<code python jeu.py> 
-<code python>+from pi import pi as pipi
  
 +# Toutes les variables globales en majuscule
 +PI = 3.14
 +
 +# Ce pi est une variable globale
 +pi = pipi()
 +
 +def print_pi(pi):
 +    """pi est une variable locale"""
 +    print(pi)
 +    
 +def print_a(a):
 +    print(a)  
 +    
 +print_pi(3)
 +print_a(3)
 +print_pi(PI)
 +print_pi(pi)
 +print_pi()
 </code> </code>
  
-====Set==== + 
-Je n'utilise jamais+=====POO===== 
 + 
 +====Programmation Orientée Objet==== 
 +**[[https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet|Pour votre culture personnelle !]]** 
 + 
 +====Pourquoi des class ?==== 
 +**[[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====
 <code python> <code python>
-my_set = {1234, 2, 1} +class Subliminale: 
-print(my_set)+    pass 
 + 
 +class Minimale: 
 +    print("Un objet Minimale créé !") 
 + 
 +class MyTest: 
 +    def my_test(self): 
 +        print("Premier test"
 + 
 +class Bicycle: 
 +    """Un vélo""" 
 + 
 +    def __init__(selfcolorkind): 
 +        """C'est le constructeur""" 
 +         
 +        self.color = color 
 +        self.kind = kind 
 + 
 +s = Subliminale() 
 +print(type(s)) 
 + 
 +m = Minimale() 
 + 
 +b = Bicycle("rouge""vtt") 
 +print(b.color) 
 +print(b.kind) 
 </code> </code>
- +
  
 =====La philosophie Python===== =====La philosophie Python=====
Ligne 324: 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 ...
-  * 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}} +{{tag> atelier_python python sb }}
-{{tag>abp}}+
initiation_a_python.1531143153.txt.gz · Dernière modification : 2018/07/09 13:32 de serge