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/04 14:21] – [Quelques commandes] sergeinitiation_a_python [2021/08/21 13:41] (Version actuelle) – [PEP8] serge
Ligne 1: Ligne 1:
-======Initiation à python======+======Python: Initiation à python======
  
-=====Python===== +<WRAP center round box 80% centeralign> 
-====Installation==== +**[[toutes_les_pages_sur_python|Toutes les pages sur Python]] sans les pages sur {{tagpage>kivy|Kivy}}**\\ 
-Linux: c'est déjà installé +</WRAP>
-Win$ et Mac: débrouillez-vous ?+
  
-====Interpréteur==== 
-Je décide de [[atelier_python_niveau_1#bpython|bpython3]] 
  
 +<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 27: Ligne 53:
 >>>  >>> 
 </code> </code>
- 
-<code python></code> 
  
 ===int float string opération=== ===int float string opération===
Ligne 49: 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 75: Ligne 101:
 </code> </code>
  
 +=====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
  
- 
-=====Ouvrir Geany===== 
-Définir le Construire 
 La suite se fait en collant le code dans ce génie. La suite se fait en collant le code dans ce génie.
  
Ligne 99: Ligne 127:
 print(d + e) print(d + e)
  
-print(str(a+ e)+print(a + e)
  
 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 125: 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>
  
  
 +=====Boucle=====
 +**Table du 4**
 +<code python>
 +print("1 x 4 =", 1*4)
 +print("1 x 4 =", 1*4)
 +...
 +...
 +print("10 x 4 =", 10 * 4)
 +</code>
 +**Les répétitions sont très sales !**
 +<code python>
 +i = 0
 +while i >= 10:
 +    print(str(i) + " x 4 =", i * 4)
 +    i += 1
 +</code>
 +**ou encore**
 +<code python>
 +for i in range(10):
 +    print(str(i) + " x 4 =", i * 4)
 +</code>
 +<code python>
 +for i in [0, 1, 2, 3]:  # seulement jusque 3
 +    print(str(i) + " x 4 =", i * 4)
 +</code>
 +**Itération**
 +<code python>
 +chaine = "Labomedia"
 +for lettre in chaine:
 +    print(lettre)
 +</code>
  
-=====Exercice Bissextile===== +=====Fonctions===== 
-Trouver si une année est bissextile+====Pourquoi faire des fonctions ou des classes ?==== 
-<code text+  * Pour éviter les répétitions, sources d'erreurs, surtout si une modifications de ces répétitions est nécessaire. 
-Si une année n'est pas multiple de 4, elle n'est pas bissextile +  * Pour structurer le projet. 
-Si elle est multiple de 4, on regarde si multiple de 100 +  * Pour tester des bouts de code individuellement. 
-    Si ouion regarde si multiple de 400 +  * Pour éviter les problèmes avec les variables globales. 
-        Si ouielle est bissextile +  * Pour pouvoir réutiliser des bouts de codes. 
-        Si non, elle n'est pas bissextile +  * Permettre un travail en équipe en découpant un projet en bout de projet indépendant. 
-    Si nonelle est bissextile+ 
 +**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==== 
 +<code python
 +def ma_fonction(): 
 +    print("Demain"
 + 
 +def ta_fonction(a): 
 +    print(a) 
 + 
 +def sa_fonction(an): 
 +    while i < n: 
 +        print(ai) 
 +         
 +ma_fonction() 
 +ta_fonction("1"
 +ta_fonction("Guido"
 +sa_fonction(53)
 </code> </code>
  
-Rajouter le lien de la solution +====Arguments par défaut==== 
-<file python bissextile.py+<code python
-# Programme testant si une année est bissextile+def fonct(a=1, b=2, c=3): 
 +    print(a, b, c) 
 +     
 +fonct() 
 +fonct(10) 
 +fonct(b=10) 
 +</code> 
 + 
 +====Return==== 
 +Une fonction sans return retourne None 
 +<code python> 
 +def test1(): 
 +    """Retourne None""" 
 +    print("toto"
 +     
 +def test2(): 
 +    """Retourne """ 
 +    print("toto"
 +    return "Python c'est fun" 
 +     
 +a = test1() 
 +print(a) 
 + 
 +b = test2() 
 +print(b) 
 +</code> 
 + 
 +La fonction s'arrête  sur le return, le code après return n'est pas excécuté. 
 + 
 +<code python
 +def test(a): 
 +    if a < 0: 
 +        print("a<0"
 +        return 1 
 +    else: 
 +        print("a>0"
 +        return 0 
 +    print("fin"
 +         
 +test(1) 
 +test(-1) 
 +</code> 
 + 
 +====Fonctions prédéfinies==== 
 +<code python> 
 +print( abs(-20), 
 +       max(2, 50), 
 +       int(str(1)), 
 +       type(int(str(1)), 
 +       dir(1)) 
 +</code> 
 +=====Module Package Import===== 
 +===def=== 
 +Une ou des fonctions dans un fichier est un module. Plusieurs modules font un package. 
 + 
 +===Module simple===
  
-# Demande de l'année au clavier +<file python called.py> 
-annee =  input("Saisissez votre année ..." # attente de la saisie +def je_suis_appeler(phrase): 
-etc ......+    print("phrase =", phrase)
 </file> </file>
-=====boucle===== 
  
-=====Itération=====+<file python I_call.py> 
 +from called import je_suis_appeler
  
-=====Fonctions=====+"Une phrase exemple à la noix" 
 +je_suis_appeler(p) 
 +</file>
  
-===Return===+Exécuter: 
 +  python3 I_call.py
  
-=====Module=====+===Bibliothèque standard=== 
 +  * **[[https://docs.python.org/fr/3/py-modindex.html#cap-t|Index des modules Python]]**
  
-=====Module get_object=====+===time=== 
 +<code python> 
 +import time
  
-=====Package=====+print(dir(time)) 
 +print("Il est", time.time()) 
 +</code> 
 + 
 +<code python> 
 +import datetime 
 + 
 +print(dir(datetime)) 
 +print("Nous sommes le", datetime.date.today()) 
 +</code>
  
 =====Exception===== =====Exception=====
 +<code python>
 +try:
 +    resp = 1 / 0
 +except:
 +    print("Division par zéro impossible")
 +
 +try:
 +    resp = 1 / 0
 +except ZeroDivisionError as e:
 +    print(e)
 +</code>
 +
 +**[[https://docs.python.org/3.5/library/exceptions.html|La doc officielle]]**
 +===Pass===
 +**Du sale**
 +<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>
 +
 +=====Type=====
 +Python est fortement typé: il utilise le **[[https://fr.wikipedia.org/wiki/Duck_typing|typage canard (duck typing)]]** !
 +
 +<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 python jeu.py>
 +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>
 +
 +
 +=====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>
 +class Subliminale:
 +    pass
 +
 +class Minimale:
 +    print("Un objet Minimale créé !")
 +
 +class MyTest:
 +    def my_test(self):
 +        print("Premier test")
 +
 +class Bicycle:
 +    """Un vélo"""
 +
 +    def __init__(self, color, kind):
 +        """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>
 +
 +
 +=====La philosophie Python=====
 +====Zen of python====
 +Dans l'interpréteur
 +<code python>
 +import this
 +</code>
 +<code text>
 +Préfère :
 +      la beauté à la laideur,
 +      l'explicite à l'implicite,
 +      le simple au complexe
 +      et le complexe au compliqué,
 +      le déroulé à l'imbriqué,
 +      l'aéré au compact.
 +Prends en compte la lisibilité.
 +Les cas particuliers ne le sont jamais assez pour violer les règles.
 +Mais, à la pureté, privilégie l'aspect pratique.
 +Ne passe pas les erreurs sous silence,
 +... ou bâillonne-les explicitement.
 +Face à l'ambiguïté, à deviner ne te laisse pas aller.
 +Sache qu'il ne devrait y avoir qu'une et une seule façon de procéder,
 +même si, de prime abord, elle n'est pas évidente, à moins d'être Néerlandais.
 +Mieux vaut maintenant que jamais.
 +Cependant jamais est souvent mieux qu'immédiatement.
 +Si l'implémentation s'explique difficilement, c'est une mauvaise idée.
 +Si l'implémentation s'explique aisément, c'est peut-être une bonne idée.
 +Les espaces de nommage ! Sacrée bonne idée ! Faisons plus de trucs comme ça. </code>
 +====PEP8=====
 +
 +  * **[[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, nous sommes toujours entre adultes responsables.**
 +  * C'est toujours possible d’enfreindre une règle.
 +  * Par contre, certaines règles sont obligatoires: endentation, espaces ...
 +  * [[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]]**
  
-=====Pass===== 
  
-{{tag>atelier}} +{{tag> atelier_python python sb }}
-{{tag>python}}+
initiation_a_python.1530714061.txt.gz · Dernière modification : 2018/07/04 14:21 de serge