Python : Atelier de base


INTRODUCTION


NOTIONS DE BASE

Interpréteur

$ ipython

Syntaxe

Variables

a = 12
b = a
id(a)
id(b)

Types

n = None        # NoneType : type spécial voulant dire... rien
b = True        # bool : booléen... True ou False n'oubliez pas les majuscules

i = 15          # int : entier
f = 15.5        # float : décimal

s = "chaine"    # str : chaine de caractère, instancié avec "" ou ''
u = u"chaîne"   # unicode : chaîne de caractère unicode, instancié avec u"" ou u''

l = []          # list : liste d'objets (ordonné)
t = ()          # tuple : liste immuable d'objets
d = {}          # dict : dictionnaire de données (unique, non-ordonné)

ens = set([])   # set : ensemble (unique, non-ordonné)

a, b = 34, 56

float(a)

Built-in : fonctions built-in et structure du langage

type()                  # retourne le type de l'objet
dir()                   # retourne les noms derrière l'objet
help()                  # retourne l'aide
callable()              # dit si un objet est appelable, exécutable...

bool(), int(), str()... # initialisation ou transtypage
getattr()
isinstance(objet, Type) # teste le classe (ou type) d'un objet
issubclass()
super()
len()
min()
max()
open()
range()
raw_input()

print
del

Objets et namespaces

Introspection

nom = "Davin Baragiotta"
prenom, nom = nom.split()
nom.upper()
nom.lower()
nom.ljust(30)
nom = [prenom.lower(), nom.lower()]
username = ".".join(nom)

nom = "Davin Baragiotta"
username = ".".join(nom.split()).lower()

users = []
users.append(username)

davin = {'prenom':'Davin', 'nom':'Baragiotta'}
pascal = {'prenom':'Pascal', 'nom':'Bou Nassar'}

personnes = []
personnes.append(davin)
personnes.append(pascal)

statuts = [
    (1, u'Nouveau'),
    (2, u'En cours'),
    (3, u'Rejeté'),
    (4, u'Retenu'),
]

Conteneurs

l = [[1,2,3],[4,'salut',6],[7,8,9]]
d = {1611: {'nom':'Baragiotta', 'prenom':'Davin'}, 123: {'nom':'Bou Nassar', 'prenom':'Pascal'}}

l[2], d[1611]

l[0:2]

personne = {'nom':'x', 'prenom':'y'}
personnes = []

Itération

annee = 2012
while annee <= 2015:
    print annee
    annee = annee + 1   # annee += 1

for i in range(2012, 2016):
    print i

Comparaisons et opérateurs logiques

Conditionnel

liste = range(6)
if 5 in liste:
    print 'hourra 5'
elif 4 in liste:
    print 'hourra 4'
else:
    print 'pas hourra'

Fichiers

f = open('texte.txt')
for line in f.readlines():
    print line,
f.close()

Formattage de chaînes de caractères

for n in range(10):
    print "La puissance 2 de %d est : %d" % (n, n**2)

for p in personnes:
    print "Bonjour %s %s" % (p['prenom'], p['nom'].upper())

Compréhension de liste

cible = 'egypte'
contexte = [ligne for ligne in f.readlines() if cible in ligne]
commentaires = [ligne for ligne in f.readlines() if l.startswith('#')]


Scripts

   1 #! /usr/bin/env python
   2 # -*- encoding: utf-8 -*-
   3 
   4 def coucou(nom):
   5     return u"Coucou %s!" % (nom,)
   6         
   7 if __name__ == '__main__':
   8     print u"--------------------------------------------------"
   9     print u"DÉBUT du script"
  10     print u"--------------------------------------------------"
  11     nom = raw_input("Quel est votre nom? ")
  12     print coucou(nom)
  13     print u"-----------------------------------------------"
  14     print u"FIN du script"
  15     print u"-------------------------------------------------"

$ python script.py

Fonctions

def age(annee_naissance):
    return 2012 - annee_naissance

def ma_fonction(param1, param2, param3=None, param4=0, *args, **kwargs):
    """Ceci est ma fonction."""
    output = True
    return output

Import

import sys
sys.path

import lib
mon_annee_naissance = 1975
lib.age(mon_annee_naissance)

Modules

Permanence de l'information

import pickle

f = open('pickles', 'w')
pickle.dump(statuts, f)
pickle.dump(personnes, f)
f.close()

exit()

import pickle

f = open('pickles')
pickle.load(f)
#objets = []
#for obj in pickle.load(f):
#    objets.append(obj)
f.close()

EXERCICE

Objectif

Créer un script flux.py dans le répertoire projet/actualites qui retournera les 5 dernières actualités affichées sur le site institutionnel de l'AUF : http://www.auf.org/flux/actualite/

Approche

1. utiliser python-feedparser

2. lancer interpréteur et suivre exemple de la doc :

3. introspecter (et imprimer dictionnaire pour voir ses clés) au besoin

4. coder le script qui fera le traitement voulu

5. lancer le script dans l'interpréteur pour confirmer son exécution correcte

6. servir froid

Algorithme

Solution

Prenez le temps de coder vous-mêmes une solution... ... ensuite vous pouvez comparer avec : le solutionnaire

Pour info, la solution ne fait que 8 lignes Python.

CONCLUSION

Ateliers/2012-02-23/Plan (dernière édition le 2012-02-24 12:33:55 par DavinBaragiotta)