Python

en construction -

INSTALLATION :
- Python  (actuellement 2.7 ou 3.2)
Lancement de la console depuis Windows (Démarrer, Exécuter, taper : python) ou en cliquant sur l’exécutable (Python.exe). On peut aussi utiliser le Shell (coquillage) ou GUI (Graphical User Interface, Environnement utilisateur graphique) ou IDE (Integrated Development Environment, Environnement de développement intégré) intégré à Python. IDE est appelé IDLE (oisif) en référence à un personnage des Monty Python (Eric Idle). Si la syntaxe est correct, les mots sont mis en couleur.
Pour l'ouvrir cliquez sur : IDLE(PythonGUI)3.2. Pour le fermer (Ctrl+D).
Python est un langage interprété (non compilé), le code est entré dans l'interpréteur qui le traduit ligne par ligne en langage machine et l’exécute. (Autres langages de scripts : JavaScript, PHP, Pearl, Rubi, ...).

FICHIER .PY
On ouvre d'abord une nouvelle fenêtre de IDLE (ou on utilise un éditeur, par exemple : Notepad2), puis on enregistre le fichier avec l'extension des fichiers python (.py).  Pour exécuter le programme (après son enregistrement) : Run (ou le raccourci F5).
En double cliquant sur le fichier (*.py) on ouvre la console, pour ouvrir le Shell on fait un clic droit et on choisit Edit with IDLE.

Nouveauté de la version 3 : python.org / Documentation : python.org / Traduction automatique du code : 2to3
Pour mettre à jour du code de la version 2 à la version 3.
- Ouvrir la console MS DOS (sous Windows : Demarrer, Executer, taper : cmd).
- Taper : chemin_du_fichier_2to3.py   -w   chemin_du_fichier_à_transformer.py
Le fichier 2to3.py se trouve dans le répertoire d'installation de Python (Tools\Scripts). Le script crée un fichier de sauvegarde (extension .bak)

ENCODAGE
Le code ASCII (American Standard Code for Information Interchange) ne comporte pas d'accentuation.
Pour écrire un programme avec des accents et autres caractères spéciaux, on devra préciser l'encodage :  Latin-1 ou Utf-8 ou cp1252.
1 #-*-coding:Utf-8-*

MODULES
import <module> # importe un module de la bibliothèque
Voir la Standar Library pour la liste et description des modules
squrt() # SQuart RooT, racine carrée
import math # importation du module math
math.sqrt() # il faut préfixer le nom de la fonction par le nom du module, sqrt (SQuartRooT, Racine carrée)
ou sinon importer de manière différente :
from math import sqrt, sin, cos, tan # importe quelques fonctions choisies du module math
from math import * # étoile veut dire tout, importe tout le module
random # alléatoire, module
from random import choice # importation de la fonction choice qui prend pour argument une liste dont elle choisit un élément au hasard
from string import maketrans # importe la fonction maketrans (translation) du module chaine de caractère,
prenant deux arguments, une variable avec les lettres à remplacer, et  une seconde avec les lettres de remplacement
from string import maketrans
maketrans (variable_a_convertir, variable_convertie) # la fonction maketrans (translate) converti une variable contenant des lettres en une autre, lettre par lettre, ex. ("çéèêàôöùû", "ceeeaoouu")
liste.split () [ ] # découpe la liste selon un signe convenu mis entre parenthèse et choisis l'élément selon le chiffre mis entre parenthèse

PAUSE
Une fois le programme exécuté, la console se ferme immédiatement, pour la garder ouverte on mettra le programme en pause  (en ayant préalablement importé le module os)  ou en attente d'une entrée.
2 import os # importe le module os
(...)
99 os.system("pause") # la fonction system du module os, prend pause comme paramètre
Autre solution  :
raw_input () # version 2
input () # version 3
eval () # évalue une expression transmise dans une chaîne de caractère

INSTRUCTIONS / BLOC
Séparées par un point virgule ou un simple retour à la ligne. (Pas de symboles délimiteurs de blocs, comme les accolades pour C++ et Java).
Les blocs d'instructions doivent être correct (on ne peut mélanger les espaces et les tabulations). Chaque bloc est délimité par l'indentation (sauf le premier).
Espaces et commentaires (mis à droite du caractère dièse jusqu'à la fin de la ligne) sont ignorés.

SIGNES ET MOTS CLES (exemple de)
Python utlise des signes et des mots clés.
Pour insérer un commentaire :
# les commentaires se mettent à droite du signe dièse
>>> # signes indiquant que IDLE est en attente d'une instruction (prompt principal)
Pour afficher un résultat (ou la variable demandée) :
print # version 2
print () # version 3, print est devenu une fonction
# un texte se met entre apostrophe ou guillemets
Pour récupérer une donnée tapée à l'écran :
raw_input () # version 2
input () # version 3

CALCUL :
En informatique comme en anglais, nous avons le point décimale et non la virgule. Sans (point décimal), nous avons un nombre entier, avec, un nombre décimal.
Un calcul entre des entiers renvoie un entier. Un calcul entre un entier et un décimal renvoie un décimal (version 2). Le calcul renvoie toujours un décimal (version 3).
Division entière :
// # pour obtenir la partie entière de la division
Modulo :
% # pour obtenir le reste de la division
Puissance :
**
Exposant :
e # à gauche, le nb, à droite le nb de 0
Fonctions pour convertir des types :
int () # en entier (integer)
float () # en décimal avec virgule flottante (float)
str () # en texte ou chaîne de caractères alpha numérique (string)

VARIABLES :
Une variable est définie en l'associant à une valeur au moyen du signe d'égalité. Ce qui est à gauche du signe est la variable, ce qui est à droite, la valeur. On dira que la variable pointe vers la valeur, ou que la variable est affectée d'une valeur. Ou encore que la variable est comme le contenant (une boite) et la valeur comme son contenu.
Signe d'affectation ou d'assignation :
= # ne pas confondre avec le signe d'égalité ==, qui est commutative et permanente alors que l'affectation ne l'est pas, on peut ré-affecter une variable autant de fois que l'on veut.
nom_de_la_variable = valeur
Type de variable :
- nombre entier (int), décimal (float), ...,
- texte ou chaîne de caractère (str),
- liste
note = 10 # on donne la valeur de 10 à la variable note.
print note # renvoie le résultat de note, à savoir 10.
Une valeur peut aussi être la valeur d'une autre variable.
note2 = note # on donne la valeur de la variable note, 10, à la variable note2. Pour l'instant note et note2 sont  synonymes, elles pointent vers la même valeur.En fait ce sont des copies indépendantes (contrairement à ce qui se passe pour les listes).
Ou de la même ayant subi transformation.
note = note / 2 # on donne la valeur de 5 à la variable note.
Une valeur n'est pas nécessairement numérique, ce peut être un texte ou une chaîne de caractères alpha numérique (string) qui  se met entre apostrophe ou guillemets.
note = '5' # en ce cas la valeur de note n'est pas le chiffre 5 mais le caractère 5 (sur lequel on ne peut effectuer de calcul).
Le nom de la variable est composé de lettres, majuscule, minuscule, chiffres, et symbole sous-ligné (underscore). Pas de caractères accentués. Ne peut commencer par un chiffre.
Python est sensible à la casse.
Par conventions : variable en minuscule, mots séparés par des underscore (nom-variable) ou première lettre en majuscule sauf le premier mot (nomVariable).
La valeur de la variable peut donc être un litéral ou une expression qui sera évaluée avant d'être affectée.
Affectation parallèle :
y,x = 5,6 # on affecte la valeur de 5 à la variable x, et 6 à y

LISTES
Une liste est une liste de variable mise entre crochets et séparée par des virgules. On peut aussi créer une liste vide, ou une liste dont les éléments (ou certains) sont des listes. N'importe quel type d'objet peut être élément d'une list (int, float, str,...).
list = [ ]
list1 = ['Lisa', 'Bart']
list2 = [liste1, 'Homer'] # l'élément 1 de la liste est Homer
list2[1]='Marge' # change l'élément 1 de la liste en Marge
list3=list2[:] # crée une nouvelle liste (list3) avec tous les éléments de liste2, une vraie copie
list4 = list2 # crée une liste synonyme (list4) pour list2, si on modifie un élément de list4 on retrouvera la modification dans list2 (alors que si on crée une variable synonyme, la modification de l'une n'entraine pas celle de l'autre), alors que list3 demeure inchangé, cf. pythonnerie 4, 5'.
Les éléments se comptent de gauche à droite à partir de 0 (et non de 1).
Si une variable est équivalente à une boite, une liste l'est à une pile de boites.
print (list[0]) # affiche la valeur 0 de la liste, les parenthèses ne sont pas nécessaires pour la version 2
print (list[0:2]) # affiche une sous-liste, l'intervalle de valeur 0 à 2, la valeur minimale est incluse, la maximale, exclue, en notation mathématique on dit que l'intervalle est ouvert du côté supérieur [0:2[
print (list[:2]) # affiche tous les éléments jusqu'à 2, exclu
print(list[:]) # affiche tous les éléments de la list
Python considère les mots comme des listes de lettres.
print ('texte'[:2]) # affiche te
len () # lenght (longueur), renvoie le nombre d'éléments d'une liste ou d'une chaîne de caractère (les espaces comptent), ou de lettres pour un mot.
list[1:2]=[] # supprime l'élément 1 de la liste
del (list[1]) # supprime l'élément 1 de la liste

FONCTIONS
La fonction, à gauche, modifie la valeur de l'argument ou paramètre mis entre parenthèse, le résultat n'est pas nécessairement une donnée de même type que l'argument.
fonction (paramètres)
Certaines ont déjà été mentionné : print () / input ()  / int () / float () / str ()
On peut créer une nouvelle variable avec une valeur modifiée par une fonction.
list5 = str(list1) # list5 n'est plus une liste d'éléments mais une chaîne de caractères composé des éléments de list1, ['Lisa', 'Bart']
print (len(list1), len(list5)) # renvoie 2 16
Une fonction peut aussi retourner une liste :
range () # étendue ou intervalle
print range (5) # version 2, affiche [0,1,2,3,4], 0 au nombre passé en paramètre moins un. Version 3, affiche [0,5], 0 et le nombre mis en paramètre (qui sera l'objet d'itération).
La virgule permet aussi de séparer des instructions (mises sur une même ligne).
On peut appliquer une fonction au résultat d'une fonction :
fonction2(fonction1(variable))
list1.remove('Bart') #supprime l'élément 'Bart' de la liste
list1.append('Betty')#ajoute l'élément 'Betty' à la liste
list1.sorrt() # trie les éléments de la liste par ordre alphabétique mais en tenant compte de la casse et de l'accentuation - les majuscules passent avant les minuscule dans le code ASCII, et les mots avec accents après les mots sans accents.

METHODES
Plus attaché qu'une fonction à un type de variable. Méthodes pour les texte, d'autres pour les listes, ... retourne une valeur ou non. On invoque une méthode.
variable.méthode(paramètres)
La méthode invoquée s'applique à la variable, à laquelle elle est attachée par un point, pour la modifier selon certains paramètres, mis entre parenthèses.
variable.upper() # met en majuscule la variable texte
variable.lower() # met tout en minuscule
variable.capitalize() # met en majuscule la première lettre
variable.title() # met en majuscule toutes les premières lettres de mots, utiles pour les noms composés (en anglais tous les mots d'un titre sont en majuscule).
variable.strip() # enlève les espaces au début et à la fin d'un texte.
variable.split() # permet de créer une liste à partir de textes séparés par des virgules ou autre signe (que l'on met en paramètre, entre apostrophe).
On peut appliquer une fonction au résultat d'une méthode :
fonction(variable.méthode(paramètre))
On applique le résultat d'une méthode à une autre en les mettant à la suite :
variable. méthode1().méthode2()
variable.remove() # supprime un élément, mis en paramètre, d'une variable
list1.remove('Bart') # supprime l'élément 'Bart' de la liste list1
variable.append() # ajoute un élément, mis en paramètre, d'une variable
readline () #


COMPARAISON :
== # égal à
!= # différent de
<> # différent de
<= # plus petit ou égal
>= # plus grand ou égal


OPERATEURS LOGIQUE
not # inversion, vrai si la proposition logique est fausse et vice-versa
or # ou, vrai si l'une des deux propositions logiques est vrai, faux dans les autres cas
and  # et, vrai si les deux propositions logiques sont vraies, faux dans les autres cas
Le résultat de l'évaluation d'une opération logique est TRUE (vrai) ou FALSE (faux)

OPERATEURS CONDITIONNELS
if proposition_logique # si, si la proposition est vrai les opérations du bloc d'instruction if sont exécutées, sinon  le programme va à la suite.
if proposition_logique else #, si, autrement, si la proposition est fausse le programme suit les instructions indentées sous else.
if proposition_logique elif proposition_logique else # elif, contraction pour else if, si autrement. ce sont autant de proposition if, différente de la proposition logique initiale.
Après avoir effectué les opérations conditionnelles, le programme se poursuit avec les opérations communes.

BOUCLES
for element in list : # permet de faire une opération un nombre prédéterminé de fois, pour la variable element (un élément de la liste) dans list
while proposition_logique # tant que, l'opération est effectuée tant que la proposition logique est vraie, et arrête lorsque la proposition est fausse.
Il faut entrer dans la boucle et en sortir (pour ne pas tourner dans une boucle infinie). On peut imbriquer une boucle dans une autre.
Ctrl + C # pour interrompre une boucle

FICHIERS EXTERNES
with open('nom_du_fichier', 'r') as f : # la fonction open, ouvre le fichier (premier argument) et le traite (second argument) : r pour read (lire), w pour write (écrire), a pour append (ajouter), r+ pour lire et écrire dans le même fichier. As (comme),

EXCEPTIONS
try # mettre le programme susceptible d'échouer dans un bloc sous try (essai)
except IOError:
  print 'message_erreur' # interception du message d'erreur IOError  (Erreur Entrée Sortie) pour lui substituer un message plus compréhensible
else: # mettre la suite du programme

29 MOTS RESERVES :
and # opérateur logique, et
assert
break
class
continue
def
del # fonction de suppression
elif # opérateur conditionnel, else + if, autrement si,
else # opérateur conditionnel, autrement
except # ecception ou erreur
exec
finally
for # boucle, utilisé avec in
from
global
if # opérateur conditionnel, utilisé avec elif et else
import # importation de fonction d'un module ou d'un module entier d'une bibliothèque
in # dans, utilisé avec for
is
lambda
not # opérateur logique, non
or # opérateur logique, ou (non exclusif)
pass
print # affiche ou imprime
raise
return
try
while # boucle, tant que
yield

Documentation, tutoriels :
French :
Python  / Wikipedia / WikibooksAfpy / Site du Zéro / Python Developpez / Python France / Framasoft / Ebook G. Swinnen / Plongez au coeur de Python / Python facile /
English :
Rur-ple 1 / Rur-ple 2 / Dive Into Python /
Forum :
Python DeveloppezAfpy /


Vidéos (et transcripts) Pythonnerie sur le Site du Zéro :
- Les bases de Python 1-17
- Créer des fenêtres 18-22
- Bases de données 23-29

1) Présentation et installation

2) Variables et types de données

3) Premier programme en Python

4) Listes

5) Fonctions et méthodes (1/2)

6) Fonctions et méthodes (2/2)

7) Contrôle de flux

8) Un vrai programme : un quiz

9) Fichiers et exceptions

10) Algorithmique *

11) Créer une fonction

12) Coder comme un pro

13) Récursion (1/2)

14) Récursion (2/2) : trier

15) Objets et méthodes

16) Objets encore...

17) Objets toujours...

18) Eléments de l'interface graphique

19) Réagir aux événements

20) Gérer les erreurs

21) Modifier l'apparence

22) Boutons, menus et fichiers

23) Bases de données et langage SQL

24) Gestion d'une collection de films en Python et SQL

25) Chargement de données en Python

26) Description d'une application de gestion de données dans une base

27) Application de gestion des données d'une base (1/3)

28) Application de gestion de données d'une base (2/3)

29) Application de gestion de données d'une base (3/3)