Comment débuter avec Python Une selection d`instructions

3
Comment débuter avec Python
"Mon choix" d'une version et d'un environnement. Cas d'un PC sous windows (nul n'est parfait)
Version de python "de base" : Installation : http://www.python.org/download/releases/
A ce jour pas de décision de prise au niveau CPGE national. Personnellement j'ai installé python 3.2.3 avec bibliothèques
numpy et matplotlib (cf plus loin). Il semblerait que la version 2.7 soit préférée à la 3.2 pour débuter cette réforme. En effet la
version 2.7 antérieure dispose de nombreuses bibliothèques.
Abréviation dans ce poly : Pour les deux versions j'utilise v2 ou v3 pour les distinguer.
Choix d'un IDE : IDLE fournit avec Python. Sinon ils sont nombreux, iep, pythonwin, spyder dans winpython.
Astuce : Avec IDLE. Créer un raccourci sur son bureau (ou vous voulez), puis bouton droit/propriétés et c'est là qu'on
paramètre le dossier par défaut de IDLE mais aussi du shell associé. (suis je clair ?)
Bibliothèques de fonctions numpy et matplotlib.
numpy " numeric python" . Installation : www.numpy.org
Obligatoire pour pouvoir faire des calculs même les plus simples.
Remarques : On peut tout de même utiliser math de "python de base" pour débuter sans numpy.
matplotlib " mat de matlab ? " Installation : www.matplotlib.org
Bibliothèque pour faire des graphiques 2D (et projections 3D), on peut tout faire en 2D avec matplolib mais demande de
l'investissement. Intérêt pour un utilisateur d'un autre logiciel graphique ?
Aide pour Python de base :
Aide depuis Python "rustique" mais parfois efficace :
>>>dir(bibliotheque ou objet) # liste attributs et méthode ou fonctions. Il faut avoir importé la biblio avant.
>>>help(nom de fonction) # renvoie dans le shell une notice de la fonction !
Aide aussi par menu dans IDLE.
Sur internet :
Internet cf différents liens après surtout pour numpy et matplotlib.
Fsincere
$$ celui de l ups
Sinon joyeux foutoir.
Les livres : Sur python "de base", ils sont assez nombreux. Sur numpy matplotlib aucun en français à ma connaissance.
Une pub sur un livre sous licence GPL téléchargeable gratuitement :
Un choix tout intégré. Toujours sous windows
Si vous ne souhaitez pas installer Python mais juste tester, il existe WinPython. C'est un package contenant python2.7, numpy
matplotlib, scypi , et l'IDE spyder. Ce package ne demande pas d'installation. Précisément il se décompresse dans un dossier
de votre choix (une clé USB peut convenir) et il n'y a pas d'installation proprement dite donc c'est transportable (suis je clair ?)
Critique personnelle : De mémoire décompressé ça pèse 800 méga, et au démarrage c'est lent. De plus pour débuter je préfère
l'IDE IDLE plus sobre.
Une selection d'instructions algorithmiques
Je propose ici une sélection suffisante pour le niveau de ce document et qui se traduit facilement dans les langages Python,
Scilab, Turbo Pascal, Maple etc....
Les commentaires
Ils sont neutres (non interprétés par le programme) faits pour nous les humains, ils permettent d'annoter l'algorithme pour
faciliter sa compréhension. J'utilise le symbole # suivi du commentaire. C'est le cas en Python en Maple.
Les entrées sorties
La majorité des algorithmes utilisent des données entrées par l'utilisateur de l'algorithme, et renvoient un résultat sous forme
d'affichage. Ces notions d'entrée/sortie ont des traductions très différentes suivant les langages. Par exemple Les commandes
4
input et print en Python. input n'existe pas en Maple. L'objet fonction plus évolué gère efficacement le problème des entrées
sorties.
Dans les algorithmes j'utilise si nécessaire les mots entrer ( .....) , et afficher( .... )
Affectation
L'affectation consiste à affecter une (des) valeur(s) à une variable.
En algorithmique elle se note : nom de la variable valeur ou valeur
nom de la variable
Remarque : Principe de fonctionnement de : nom de la variable valeur
Le membre de droite est évalué si nécessaire, et la variable dont le nom est indiqué à gauche reçoit le résultat de cette
évaluation.
exemple 1 exemple 2
b 2 b 2
a b b b + 1 # un tube en informatique
La variable a, reçoit la valeur 2. La variable b reçoit 3
Booléens, fonctions booléennes
On appelle ensemble des booléens l'ensemble B = {Vrai, Faux} =
anglais
{ True, False }. On appelle fonction booléenne toute
fonction à valeur dans B. Vous connaissez plusieurs fonctions booléennes pratiquées de façon usuelle :
non , et, ou , ou exclusif (fromage ou dessert) ce sont des fonctions définies sur B ou B×B à valeur dans B.
Vous connaissez aussi les fonctions booléennes >, <, =, , , . Par exemple (2 < 3) vaut Vrai, (3 3) vaut Faux.
Blocs d'instructions
Instructions conditionnelles
condition représente une expression à valeur booléenne.
La plus classique, la plus élémentaire, la plus générale.
si condition si condition si condition1
groupe d instructions1 groupe d instructions groupe d'instructions
sinon si condition2
groupe d'instructions2 groupe d'instructions
si condition3
groupe d'instructions
sinon
groupe d'instructions
Remarques : J'ai indenté (ou décalé) mais groupes d'instruction vous allez vite comprendre pourquoi.
Signification pour la classique : si condition vaut Vraie le groupe d'instructions1 est effectué si condition vaut Faux c'est le
groupe d'instructions2 qui est effectué.
exemple Voici un algorithme bien connu.
entrer ( x ) # la valeur entrée est affectée à x
si x 0 alors
afficher (x) # Affiche le contenu de x pas la lettre x
sinon
afficher (– x) # idem affiche le contenu de – x
fin de si
Blocs d'instruction de type Boucles
Boucles conditionnelles
condition représente une expression à valeur booléenne.
5
tant que condition faire
groupe d'instructions
fin de faire
Signification : si condition vaut Vraie, on effectue le groupe d'instructions, on revient à condition, si elle est encore vraie, on
effectue le groupe d'instructions, et ceci tant que condition est vraie. Ca "boucle" tant que condition reste vraie.
Attention : Il est donc indispensable qu'à un moment le groupe d'instructions modifie la valeur de condition, sinon la boucle
tourne sans fin, un grand classique dans l'art du bug !
Boucles du type compteur
Indice est une liste de valeurs, une séquence de valeurs, en gros un ensemble ordonné. La aussi je m'adapte à Python.
pour compteur variant dans Indice faire
groupe d'instructions
fin de faire
Signification : la variable compteur va recevoir successivement toutes les valeurs de Indice, et à chaque fois le groupe
d'instructions est effectué
Exemple : Que renvoie cet algorithme ? Exemple : Que renvoie cet algorithme ?
S 0 S 0
i 0 pour i variant de 1 à 10 faire
tant que ( i
10 ) faire S S + i
S S + i fin de faire
i i + 1 afficher (S)
fin de faire
afficher ( S )
Algorithmique et traduction Python
Remarques : Pas de difficulté majeure à traduire les instructions algorithmiques en Python.
Principe élémentaire de fonctionnement de Python.
Remarques : Au 01/01/2013 j'utilise la version 3.2.3 de python et l'interface IDLE pour Pythoner.
Dans la fenêtre "Python shell" le prompt >>> attend un calcul à effectuer, il le renvoie par retour chariot.
Bien entendu vous souhaiterez écrire des scripts (des programmes) dans un fichier. Pour cela vous pouvez utiliser tout éditeur
de fichier texte indépendant de Python pour écrire ces scripts de commandes. Il faut alors les enregistrer avec l'extension .py.
Vous pouvez par exemple utiliser notpad pour écrire des scripts de commandes python. Fun fun !
Pour les exécuter il suffit depuis IDLE de taper F5 .
Remarques : Par double clic sur un .py, il est exécuté par Python dans une fenêtre dos, fenêtre dos qui se ferme tout de suite je
crois bien donc souci.
Affectation
En Python, l'affectation est représentée par =
nom de la variable = valeur
exemples :
>>> x = 1 # La variable x reçoit la valeur 1. Puis >>> y = x + 1 # la variable y reçoit 2.
>>> x = 1 >>> x = x + 1 >>> x # au final x reçoit 2
6
Python n'est pas un langage de calcul formel (pas exactement voir sympy par exemple). Il ne peut pas affecter à une variable
une expression d'une autre variable non affectée.
Affectations multiples
>>> a, b, c = 1, 2, 3 >>> a, b, c = c, b, a # Que valent a, b, c ?
Remarques : Voir plus loin le bel exemple de Fibonnacci.
Abréviations d'affectations classiques
>>> a = a + 1 peut se noter >>> a += 1
Remarque non débutant : Cette 2
eme
syntaxe est interprétée plus efficacement par python c'est l'incrémentation. Bien entendu
l'éviter pour débuter, fait économiser 1 caractère et ça me perd.
Restart : Célèbre commande Maple existe dans le menu de Python shell.
Type des données affectées aux variables. Opérations élémentaires.
C'est un point essentiel d'ou sa longueur. Bien comprendre les types des données que l'on manipule est indispensable à la
compréhension, l'utilisation, la fabrication de programmes en Python.
Exemple : Si un élève confond un vecteur v
3
et un scalaire λ , le professeur de mathématiques que je suis est fâché,
plutôt désespéré. Python lui Bugue sans crier, problème de type !
Remarques : Dans le shell la commande type(donnée) renvoie le type d'une donnée (on peut aussi dire sa classe). Forcer par
print(type(donnée) ) dans un script.
Remarques : En Python le typage est dynamique. Vous affectez ce que vous voulez à une variable il se brouille. Autrement
dit pas besoin de préciser le type de la variable avant d'affecter. C'est très pratique.
Type Booleen
True False # respecter la majuscule.
>>> type(True) # renvoie <class 'bool'>
Opérations sur les booléens
or, not, and, ^ (le xor le ou exclusif. Merci pour les maths la notation ^ vraiment merci )
== (l'égalité doit se distinguer du = de l'affectation), != ( le ) , <, >, <= ( le ), >= ( le )
Remarque :
>>>
a = 2 # Signifie l'affectation de 2 à la variable a.
>>> a == 2 # représente la valeur booléenne vraie si a = 2, fausse si a 2
Exemples : Qu'affiche Python dans ces cas :
>>> True and not(False) == True ^ False
>>> a= True >>> b = False >>> print( not(a) or b )
>>> a = True >>> b = True >>> print (a and not(b) ) or not(a) )
>>> 10 ^ 2 # renvoie 8 . Réponse : 2^10 = 10
2
^ 1010
2
= 1000
2
= 8 qui a compris ?
Type entier
>>>type(5) #renvoie <class 'int'>
Remarques : Il y a une évolution entre v2 et v3 la dernière accepte les entiers longs.
Opérations sur les entiers
+ , *, , ** (l'exposant, pas ^ rappel ) , / , // (c'est le quotient de la division euclidienne, la aussi évolution de v2 à v3), % (le reste
de la division euclidienne dit aussi modulo)
Type réel
>>> type(3.14) # renvoie < class 'float'>
7
Opérations sur les réels
+, *, ** (l'exposant) , / , mais aussi // et % qui fonctionnent sur les réels ( Olé Olé ! Osé Osé ?)
Exemple : Pour le moins surprenant et déstabilisant. Origine la liste info2013. Celui ci est la pour mettre en garde sur l'usage du
type 'float' .
>>> a=1/2 – 2/5 >>> a # renvoie 0.09999999999999998 # bien entendu ça fait 1/10 soit 0.1
Remarques : Pourquoi une erreur sur un exemple si simple ? Réponse de la liste : Cela vient du fait que 1/5 a un
développement infini en base deux. Dépasse le débutant que je suis.
Type complexe (nombre complexe)
Remarques : Sans doute à partir de v3, pas testé v2. Je n'utilise pas ce type dans l'exposé.
Le nombre complexe noté en math, j en physique se note en Python 1j (original !)
>>> type(1+1j*2) # renvoie <class 'complex'>
Remarques : Il peut paraître étonnant que Python "de base" qui "ne connait pas" les fonctions réelles sin, exp connaisse les
complexes.
Opérations sur les complexes
+ , *, , ** (l'exposant il accepte l'exposant. Rien compris à ce jour) , / , abs (le module).
Par contre // et % il n'en veut pas ( can't mod complexe number. ouf ? )
Type chaine de caractères
C'est déjà un type de données composites. "Séquences" ou collections ordonnées d'éléments. Il se prête donc bien aux boucles
de type compteur. Une chaine de caractère se note : ' les caractères de votre choix '
type( ' toto ' ) # renvoie <class 'string' >
Opérations sur les chaines de caractère
Nombreuses, données de type composées. Si a et b sont deux chaines de caractère :
a + b # concaténation de a e t b
2*a # doublage de a...... c'est à dire a + a
a[i] # renvoie le caractère d'indice i dans la chaine. Attention ça commence à zéro dans Python, il va falloir s'y faire.
Exemples : >>> a = 'toto' >>> b = 'tata'
Que renvoie >>> a+2*b >>> a + 2 >>> a + '2'
Réponse pour : >>> a+2 # bug on ne peut pas concaténer a et 2 qui est du type int. Vous suivez !
Type listes
Une liste est une collection d'objets écrite sou la forme [ objet
1
, objet
2
, ......, objet
n
] . Je ne résiste pas à dire une séquence
entre crochets, 17 ans de Maple derrière. La notion de séquence n'est pas très claire en Python.
>>> type([4,5,'toto',3.5,True]) #renvoie <class 'list' >
Remarques : Vous avez remarquez que j'ai mis dans ma liste des objets de type différent et que Python ne râle pas. Une liste
peut même contenir des listes.
>>>> a=[[1,2],[3,4]] # on peut toujours rêver qu'il la comprenne comme matrice 2x2 c'est un rêve hélas.
Opérations sur les listes
Innombrables ! On peut tout faire même se que l'on n'imagine pas ! Citons des opérations élémentaires.
Si L
1
et L
2
sont deux listes
L
1
+ L
2
# concaténation de L
1
et L
2
2*L
1
# Il comprend L
1
+ L
1
. En aucun cas multiplication par 2 sur les éléments de L
1
. Mais comment va t on faire
pour la multiplication scalaire sur les vecteurs ? Et les lois d'algèbre alors ! Réponse numpy bien entendu.
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !