Python : Premier pas

19 juillet 2014 rdorigny 0 commentaires

Python est un langage de script très puissant, qui est très utilisé dans la communauté Linux. On trouve un peu partout des exemples pour faire un peu tout. Bref, il est difficile sans ce langage actuellement.

Quoi de plus que PHP me dirait vous? Ben, Python est un langage de script plutôt orienté système (PHP est plus orienté web), qui supporte la programmation orientée objet et bénéficie d'un grand nombre de bibliothèques prédéfinies.

Pour débuter, voyons les notions de bases et les concepts à connaitre.

Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l'imposer) une approche modulaire et orientée objet de la programmation. Python est développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles.

Python est un langage interprété, c'est à dire qu'il s'agit d'un code texte (code source) qui est traduit en langage machine (code objet) par un interpréteur et un précomplilateur (même mécanisme que le Java).

Ce chapitre est un fork de la documentation fournie par Gérard Swinnen sur le site développez.com . Elle est très complète et détaillée, aussi j'ai jugé intéressant de la résumer pour ceux qui comme moi, se rebute à la lecture d'une documentation de plus de 300 pages. Ceci dit, si vous souhaitez aller plus loin, n'hésiter à la récupérer au format pdf.


1)Premier pas

Python propose plusieurs mécanismes de fonctionnement, le mode interactif (directement sur le terminal) ou le mode script. Voyons pour le mode interactif, il suffit d'ouvrir un terminal et de taper la commande python. La version de python s'affiche, si vous ne disposez pas de la version 3, faites un apt-get install python3, ensuite la commande sera python3. Pour sortir faites un CTRL+D ou tapez exit().

1.1)Les opérateurs mathématiques de bases

Il suffit de les taper directement sur le terminal.Seul subtilité, la division / est une division entre entier, si vous voulez une division à virgule, il faudra utiliser l'opérateur //. L'opérateur modulo est %. a**2 pour le carré de a et a**3 pour le cube de a.
root@debian:~# python3 Python 3.2.3 (default, Feb 20 2013, 17:02:41) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 4+2 6 >>>

1.2)Affectations

>>> n=12 >>> s="ceci est un test" >>> print(n) 12 >>> print(s) ceci est un test >>>

Les affectations multiples:
>>> h, m, s = 16, 49, 14 >>> print("nombre de secondes écoulées depuis minuit = ", h*3600 + m*60 + s) nombre de secondes écoulées depuis minuit = 60554

1.3)Les expressions conditionnelles

La commande if else classique:
>>> c=12 >>> if (c>10): ... print("coucou") ... else: ... print("a ne dépasse pas cent") coucou

A noter elif pour la contraction de else if:
>>> a = 0 >>> if a > 0 : ... print("a est positif") ... elif a < 0 : ... print("a est négatif") ... else: ... print("a est nul")

1.4)Les blocs

Début de bloc: première instruction du bloc ... ... ... ... dernière instruction du bloc

1.5)Les boucles

La boucle while:
>>> a = 2 >>> while (a < 6): ... a = a + 1 ... print(a)
La boucle for:
>>> nom ="Cléopâtre" >>> for car in nom: ... print(car + ' *', end =' ') ... C * l * é * o * p * â * t * r * e *

1.6)Les scripts

Pour réaliser un script, il suffit d'enregistrer le fichier avec une extension *.py et d'éxécuter le fichier par python monscript.py.

1.7)Les types de données

Comme en PHP, c'est au moment de l’affectation que la variable est typée.
>>> a = 2 >>> a=12 #entier >>> b=12,3 #float >>> c="ceci est une chaine" #string

Le string est une chaîne de caractère qui se comporte comme un tableau, aussi print(c[3]) retournera le caractère i.

1.8)Les opérations de bases sur les chaines de caractères

Pour faire une concaténation:
root@debian:~/Desktop# python Python 2.7.3 (default, Jan 2 2013, 16:53:07) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> a="ceci est " >>> b="un test" >>> c=a+b >>> print(c) ceci est un test >>>

La fonction len() retourne la taille de la chaîne de caractères. La fonction intégrée int() convertit la chaîne en nombre entier. Il serait également possible de convertir une chaîne de caractères en nombre réel, à l'aide de la fonction intégrée float().
>>> ch = '8647' >>> print(ch + 45) *** erreur *** : on ne peut pas additionner une chaîne et un nombre >>> n = int(ch) >>> print(n + 65) 8712

1.9)Les listes

On peut définir une liste comme une collection d'éléments séparés par des virgules, l'ensemble étant enfermé dans des crochets. Exemple :
>>> jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi'] >>> print(jour) ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi'] >>> print(jour[2]) mercredi

Dans cet exemple, la valeur de la variable jour est une liste. La fonction len() donne la taille de la liste, la fonction del() supprime un élément et la fonction append() en ajoute un.

Pour parcourir rien de mieux qu'une boucle for:
divers = ['lézard', 3, 17.25, [5, 'Jean']] for e in divers: print(e, type(e))

Affichera:
lézard <class 'str'> 3 <class 'int'> 17.25 <class 'float'> [5, 'Jean'] <class 'list'>

2)Les fonctions

2.1)Les fonctions d'affichage input() et print()

Nous l'avons vu plusieurs fois la fonction print() affiche sur le terminal le paramètre transmis.
Dans l'exemple ci-dessous, le séparateur sep est utilisé.
print("Bonjour", "à", "tous", sep ="*") Bonjour*à*tous

Par défaut, print() réalise un saut à la ligne à chaque fois. Il est possible de passer outre en utilisant l'argument end, cet argument ajoute en fin d'affichage le paramètre défini.
>>> n =0 >>> while n<6: ... print("zut", end ="") ... n = n+1 ... zutzutzutzutzut

La fonction input() affiche un message sur le terminal pour l'utilisateur:
>>> prenom = input("Entrez votre prénom : ") Entrez votre prénom : robert >>> print("Bonjour,", prenom) Bonjour, robert >>>

et
print("Veuillez entrer un nombre positif quelconque : ", end=" ") ch = input() nn = int(ch) # conversion de la chaîne en un nombre entier print("Le carré de", nn, "vaut", nn**2)

Un autre de conversion,
>>> a = input("Entrez une donnée numérique : ") Entrez une donnée numérique : 52.37 >>> type(a) <class 'str'> >>> b = float(a) # conversion de la chaîne en un nombre réel >>> type(b) <class 'float'>

2.2)Import de fonctions

Certaines fonctions sont déjà prédéfinies dans le framework de python, mais il n'est pas possible de les faire toutes connaitre. Aussi, python propose des modules (appelés également bibliothèques) qui permettent l'importation de fonctions ciblées.

Par exemple, l'importation du module de mathématiques se fait par from math import *. Voici un exemple de script qui utilise le module math.
from math import * nombre = 81 # (la bibliothèque math inclut aussi la définition de pi) print("racine carrée de", nombre, "=", sqrt(nombre))

2.3)Créer une fonction

Python permet de créer vos propres fonctions, en suivant la syntaxe suivantes:
def nom_fonction(liste de paramètres): ... bloc d'instructions ...

Par exemple:
>>> def table7(): ... n = 1 ... while n <11 : ... print(n * 7, end =' ') ... n=n+1 ... >>> table7() 7 14 21 28 35 42 49 56 63 70 >>>

A noter, qu'il faut appliquer l'indentation sinon Python risque de vous le reprocher.
>>> a,b=5,10 >>> def somme(): ... print(a+b) ... >>> somme() 15 >>>

Les exemples précédents sont des procédures car elles ne retournent rien, une fonction retourne quelque chose, la fonction return() retourne la variable:
>>> def cube(a): ... return(a*a*a) ... >>> b=cube(9) >>> print(b) 729

Autre exemple:
def volumeSphere(r): return 4 * 3.1416 * cube(r) / 3 r = input('Entrez la valeur du rayon : ') print('Le volume de cette sphère vaut', volumeSphere(float(r)))

3)Les fichiers

Pour définir le répertoire de travail:
>>> from os import chdir >>> chdir("/home/jules/exercices")

Pour écrire dans un fichier:
>>> obFichier = open('test2','a') >>> obFichier.write('coucou') 6 >>> obFichier.close()


A noter, l'argument 'a' qui correspond à append pour signifier un ajout en fin de fichier. Nous aurions pu utiliser aussi le mode 'w'(pour write), mais lorsqu'on utilise ce mode, Python crée toujours un nouveau fichier (vide), et l'écriture des données commence à partir du début de ce nouveau fichier. S'il existe déjà un fichier de même nom, celui-ci est effacé au préalable.

De même pour lire un fichier:
>>> ofi = open('test2', 'r') >>> t = ofi.read() >>> print(t) coucou >>>

Le fichier est transposé dans le string t. ofi.read() sans argument prend la totalité du fichier, ofi.read(10) récupère les 10 premiers caractères. Voici un exemple de fonction qui copie un fichier:
def copieFichier(source, destination): "copie intégrale d'un fichier" fs = open(source, 'r') fd = open(destination, 'w') while 1: txt = fs.read(50) if txt =="": break fd.write(txt) fs.close() fd.close() return

Il suffira d'appeler la fonction par copieFichier('Monfichier','Tonfichier').A noter que pour sortir d'une boucle ou d'un bloc, on utilise l'instruction break.

Pour faire un saut de ligne, il suffit d'écrire un slash n. L'instruction readline sur le fichier lit une ligne du fichier texte.
def filtre(source,destination): "recopier un fichier en éliminant les lignes de remarques" fs = open(source, 'r') fd = open(destination, 'w') while 1: txt = fs.readline() if txt =='': break if txt[0] != '#': fd.write(txt) fs.close() fd.close() return

Ensuite, il suffit d'utiliser un test pour le traitement des exeptions:
def existe(fname): try: f = open(fname,'r') f.close() return 1 except: return 0 filename = input("Veuillez entrer le nom du fichier : ") if existe(filename): print("Ce fichier existe bel et bien.") else: print("Le fichier", filename, "est introuvable.")

Conclusion

Nous avons fais un rapide tour d'horizon du langage python. Pour les connaisseurs, on retrouve de nombreuses similitudes avec le langage PHP (par exemple, le typage automatique).









Pseudonyme (obligatoire) :
Adresse mail (obligatoire) :
Site web :




© 2017 www.doritique.fr par Robert DORIGNY