5-Langage Python
5-Langage Python
5-Langage Python
Langage Python
Table des matières
1.Introduction.......................................................................................................................................3
1.1. L'interpréteur Python................................................................................................................3
1.2. Mon premier programme..........................................................................................................3
1.3. Les commentaires.....................................................................................................................3
2. Les variables.....................................................................................................................................4
2.1. Déclarer une variable................................................................................................................4
2.2. Afficher le type d'une variable..................................................................................................4
2.3. Récupérer une saisie.................................................................................................................4
3. Les opérations de base......................................................................................................................5
3.1. Raccourcis d'écriture.................................................................................................................6
3.2. La bibliothèque mathématique..................................................................................................6
4. Les conditions...................................................................................................................................7
4.1. if… else.....................................................................................................................................7
4.2. Conditions imbriquées..............................................................................................................8
5. Les boucles.......................................................................................................................................9
5.1. Tant que : while.........................................................................................................................9
5.2. Faire Tantque : do while...........................................................................................................9
5.3. Boucle : for...............................................................................................................................9
6. Les tableaux....................................................................................................................................10
6.1. Déclarer un tableau.................................................................................................................10
6.2. Parcourir un tableau................................................................................................................10
6.3. Tableaux multi dimensionnels................................................................................................11
6.4. Opérations sur les listes..........................................................................................................11
7. Les tuple.........................................................................................................................................12
8. Les fonctions..................................................................................................................................12
6.1. Fonctions de manipulation des chaînes..................................................................................14
8.2. Les modules............................................................................................................................14
8.3. Écriture de modules................................................................................................................16
8.4. Les packages...........................................................................................................................16
9. Les exceptions................................................................................................................................17
9.1. Le bloc try...............................................................................................................................17
9.2. Les assertions..........................................................................................................................18
9.3. Lever une exception................................................................................................................19
10. Les objets......................................................................................................................................19
10.1. Les constructeurs..................................................................................................................19
10.2. L'héritage..............................................................................................................................20
11. Les fichiers....................................................................................................................................22
11.1. Ouverture de fichier..............................................................................................................22
11.2. Lecture d'un fichier...............................................................................................................23
11.3. Écriture dans un fichier.........................................................................................................23
11.4. Le mot-clé with.....................................................................................................................23
5-langage_Python.odt 1
Classe de première SI
5-langage_Python.odt 2
Classe de première SI
1.Introduction
1.1. L'interpréteur Python
Il existe deux manières de coder en Python. La première, est d'écrire des fichiers de code source
(dont l'extension est .py), puis d'exécuter ces fichiers. La seconde, est d'utiliser l'interpréteur de
commandes.
Les caractères spéciaux commencent par un anti-slash « \ » suivis d'une lettre. Exemple :
• \n : retour à la ligne
• \t : tabulation
La fonction print est dédiée à l'affichage uniquement. Le nombre de ses paramètres est variable,
c'est-à-dire qu'on peut lui demander d'afficher une ou plusieurs variables.
5-langage_Python.odt 3
Classe de première SI
ou
""" Ceci est
un commentaire
sur plusieurs lignes """
2. Les variables
2.1. Déclarer une variable
Une variable est constituée :
• d'une valeur : par exemple le nombre qu'elle stocke.
• d'un nom : c'est ce qui permet de la manipuler.
Un nom de variable ne peut contenir que des lettres et des chiffres et doit commencer par une
lettre ; les espaces et accents sont interdits et le langage est sensible à « la casse ».
Python utilise différents types de variables : les nombres entiers (int), les nombres flottants (float),
booléen (bool), complexe (complex) et les chaînes de caractères (str).
Remarque : dans l'exemple ci-dessus, on constate que l'affectation en Python peut concerner
plusieurs variables à la fois. Cette technique de sequence unpacking a pour seules contraintes que :
• le terme à droite du signe = est un iterable (tuple, liste, string, ...),
• le terme à gauche soit écrit comme un tuple ou une liste,
• les deux termes ont la même longueur.
5-langage_Python.odt 4
Classe de première SI
Le type de la variable annee après l'appel à input() est une chaîne de caractères (apostrophes qui
encadrent la valeur de la variable). Pour convertir une variable vers un autre type, il faut utiliser le
nom du type comme une fonction.
Exemple :
# Programme testant si une année, saisie par l'utilisateur, est bissextile ou non
Remarques :
• La fonction input() renvoie une valeur dont le type correspond à ce que l'utilisateur a entré.
Si l'utilisateur souhaite entrer une chaîne de caractères, il doit l'entrer comme telle, c'est-à-
dire incluse entre des apostrophes ou des guillemets.
• Pour cette raison, il sera souvent préférable d'utiliser dans vos scripts la fonction similaire
raw_input(), laquelle renvoie toujours une chaîne de caractères. Vous pouvez ensuite
convertir cette chaîne en nombre à l'aide de int() ou de float().
5-langage_Python.odt 5
Classe de première SI
Comme pour les entiers, les calculs sur les flottants sont, naturellement, réalisés par le processeur.
Cependant contrairement au cas des entiers où les calculs sont toujours exacts, les flottants posent
un problème de précision. Cela n'est pas propre au langage python, mais est dû à la technique de
codage des nombres flottants sous forme binaire.
Si le problème se pose bien en termes de nombres rationnels, il est alors tout à fait possible de le
résoudre avec exactitude avec le module decimal qui permet de résoudre le problème.
from decimal import Decimal
Decimal('0.3') - Decimal('0.1') == Decimal('0.2')
5-langage_Python.odt 6
Classe de première SI
4. Les conditions
Une condition peut être écrite en Python sous différentes formes. On parle de structures
conditionnelles.
2 Équivalent à la fonction abs de la librairie standard stdlib.h (ne foctionne que sur des entiers)
5-langage_Python.odt 7
Classe de première SI
5-langage_Python.odt 8
Classe de première SI
5. Les boucles
5.1. Tant que : while
Une boucle permet de répéter des instructions plusieurs fois.
• les instructions sont d'abord exécutées dans l'ordre, de haut en bas
• à la fin des instructions, on retourne à la première
• et ainsi de suite...
Tant que la condition est remplie, les instructions sont réexécutées. Dès que la condition n'est plus
remplie, on sort de la boucle.
nombre_de_lignes = 1
5-langage_Python.odt 9
Classe de première SI
Remarque : les chaînes de caractères sont des séquences… de caractères que l'on peut parcourir.
Exemple :
# ce programme filtre les voyelles d'une chaîne de caractères
chaine = "Bonjour"
print ensemble
6. Les tableaux
En Python, les tableaux sont traités comme des listes qui peuvent contenir une mixité de types de
variables. Ils contiennent les références aux objets mais pas les objets eux-mêmes.
3 copie superficielle
5-langage_Python.odt 10
Classe de première SI
for i in range(0,len(a)):
print(a[i])
On dispose de plusieurs méthodes pour supprimer des éléments dans une liste :
• remove(<élément>) : supprime l'élément <élément> de la liste
5-langage_Python.odt 11
Classe de première SI
for i in range(0,len(a)):
print(a[i])
Une liste étant maillable, on peut ajouter ou supprimer une série d'élements avec un slice :
a = [4,'toto',9.2,True] # déclaration du tableau
# remplace élément 'toto' par 3 éléments 'pim','pam','poum'
a[1:2] = ['pim','pam','poum']
print a
7. Les tuple
Les tuple sont des listes immuables. On les déclare de la même façon qu'un tableau mais il faut
mettre des paranthèses à la place des crochets.
Ex : t = (4,'toto',9.2,True) # déclaration du tuple
En réalité, la parenthèse est superflue, il se trouve toutefois qu'elle est largement utilisée pour
améliorer la lisibilité des programmes.
Remarque : pour un tuple avec un seul élément, il est nécessaire de rajouter une virgule.
Les tuple étant immuable, il faut les convertir en liste pour effectuer dessus des opérations.
Ex : ma_liste = list(t)
8. Les fonctions
Une fonction est une série d'instructions qui effectue des actions qui sont répétées plusieurs fois
dans le code sans avoir à les réécrire à chaque fois.
Lorsqu'on appelle une fonction, il y a trois étapes.
1. L'entrée: on donne des informations à la fonction en lui passant des paramètres avec
lesquelles travailler).
2. Le traitement : grâce aux informations qu'elle a reçues en entrée.
3. La sortie : une fois qu'elle a fini son traitement, la fonction renvoie un résultat.
5-langage_Python.odt 12
Classe de première SI
# programme principal
for i in range (1, 10):
print("la valeur de ", i, "^3 est ", cube(i)) # appel de la fonction
Remarque : nous avons placé une chaîne de caractères, sans la capturer dans une variable, juste en-
dessous de la définition de la fonction. Cette chaîne est ce qu'on appelle une docstring que l'on
pourrait traduire par une chaîne d'aide. Si vous tapez help(cube), c'est ce message que vous verrez
apparaître. Documenter vos fonctions est également une bonne habitude à prendre. Comme vous le
voyez, on indente cette chaîne et on la met entre triple guillemets. Si la chaîne figure sur une seule
ligne, on pourra mettre les trois guillemets fermants sur la même ligne ; sinon, on préférera sauter
une ligne avant de fermer cette chaîne, pour des raisons de lisibilité. Tout le texte d'aide est indenté
au même niveau que le code de la fonction.
On peut appeler des paramètres par leur nom. Cela est utile pour une fonction comptant un certain
nombre de paramètres qui ont tous une valeur par défaut.
Soit la fonction :
def ma_fonction(a=1, b=2, c=3, d=4, e=5):
print("a =", a, "b =", b, "c =", c, "d =", d, "e =", e)
5-langage_Python.odt 13
Classe de première SI
5-langage_Python.odt 14
Classe de première SI
Pour connaître la description d'une fonction contenue dans un module, il suffit de passer son nom en
paramètre de la fonction help.
import math crée un espace de noms dénommé « math », contenant les variables et fonctions du
module math. Quand on lance math.sqrt(25), Python exécute la fonction sqrt contenue dans l'espace
de noms math. Ainsi, les variables et fonctions sont stockées à part, à l'abri dans un espace de noms,
sans risque de conflit avec vos propres variables et fonctions. Mais dans certains cas, il peut être
nécessaire de changer le nom de l'espace de noms dans lequel sera stocké le module importé.
Le module math est importé dans l'espace de noms dénommé « mathematiques » au lieu de math.
Cela permet de mieux contrôler les espaces de noms des modules.
Il existe une autre méthode d'importation qui permet de ne plus préfixer le nom des fonctions.
Celle-ci charge la fonction depuis le module indiqué et la place dans l'interpréteur au même plan
que les fonctions existantes, comme print par exemple.
5-langage_Python.odt 15
Classe de première SI
On peut appeler toutes les variables et fonctions d'un module en tapant « * » à la place du nom de la
fonction à importer.
bissextile()
5-langage_Python.odt 16
Classe de première SI
un répertoire objets contenant les différents objets graphiques de notre fenêtre (boutons,
zones de texte, barres de menus…).
Pour utiliser la bibliothèque il existe plusieurs moyens :
1. import nom_bibliotheque
Cette ligne importe le package contenant la bibliothèque. Pour accéder aux sous-packages, il
faut utiliser un point « . » afin de modéliser le chemin menant au module ou à la fonction.
nom_bibliotheque.evenements # Pointe vers le sous-package evenements
nom_bibliotheque.evenements.clavier # Pointe vers le module clavier
2. from nom_bibliotheque.objets import bouton
Pour importer qu'un seul module (ou qu'une seule fonction) d'un package :
Pour créer un package, il suffit donc de créer un répertoire portant le nom du package puis y
déposer soit des modules ou d'autres dossirs (packages).
Pour définir un package, il faut obligatoirement créer dans le répertoire (celui, donc, que l'on veut
exposer à python), un fichier nommé __init__.py. Le code placé dans __init__.py est chargé
d'initialiser la librairie. Le fichier peut être vide mais doit absolument exister !
9. Les exceptions
9.1. Le bloc try
Python lève des exceptions quand il trouve une erreur dans le code (erreur de syntaxe ou exécution
d'une opération) et s'interrompt. Pour éviter de faire planter le programme on utilise alors les
mécanismes d'exceptions.
Nous allons mettre les instructions à tester dans un premier bloc et les instructions à exécuter en cas
d'erreur dans un autre bloc.
try:
# Bloc à essayer
except:
# Bloc qui sera exécuté en cas d'erreur
Dans l'ordre, nous trouvons :
• Le mot-clé try suivi des deux points « : » : bloc d'instructions à essayer.
• Le mot-clé except suivi des deux points « : » : bloc d'instructions qui sera exécuté si une
erreur est trouvée dans le premier bloc. Il se trouve au même niveau d'indentation que try.
Cette méthode est assez grossière car elle intercepte n'importe quelle exception liée à cette
instruction et Python peut lever des exceptions qui ne signifient pas nécessairement qu'il y a eu une
erreur.
Exemple :
try:
resultat = numerateur / denominateur
except:
print("Une erreur est survenue... laquelle ?")
5-langage_Python.odt 17
Classe de première SI
Ici, plusieurs erreurs sont susceptibles d'intervenir, chacune levant une exception différente :
• NameError : l'une des variables numerateur ou denominateur n'a pas été définie (elle n'existe
pas).
• TypeError : l'une des variables numerateur ou denominateur ne peut diviser ou être divisée
(les chaînes de caractères ne peuvent être divisées, ni diviser d'autres types, par exemple).
• ZeroDivisionError : si denominateur vaut 0, cette exception sera levée.
• ...
On peut préciser le type de l'exception à traiter au niveau du bloc except.
try:
resultat = numerateur / denominateur
except NameError:
print("La variable numerateur ou denominateur n'a pas été définie.")
except TypeError:
print("La variable numerateur ou denominateur possède un type
incompatible.")
except ZeroDivisionError:
print("La variable denominateur est égale à 0.")
Dans un bloc try, le mot -clé else va permettre d'exécuter une action si aucune erreur ne survient
dans le bloc. Voici un exemple :
try:
resultat = numerateur / denominateur
except NameError:
print("La variable numerateur ou denominateur n'a pas été définie.")
except TypeError:
print("La variable numerateur ou denominateur possède un type incompatible.")
except ZeroDivisionError:
print("La variable denominateur est égale à 0.")
else:
print("Le résultat obtenu est", resultat)
Enfin, le mot-clé finally permet d'exécuter du code après un bloc try, quelle que soit le résultat de
l'exécution dudit bloc.
try:
# Test d'instruction(s)
except TypeDeLException:
# Traitement en cas d'erreur
finally:
# Instruction(s) exécutée(s) qu'il y ait eu des erreurs ou non
5-langage_Python.odt 18
Classe de première SI
try:
annee = int(annee) # Conversion de l'année
assert annee > 0
except ValueError:
print("Vous n'avez pas saisi un nombre.")
except AssertionError:
print("L'année saisie est inférieure ou égale à 0.")
5-langage_Python.odt 19
Classe de première SI
class Personne:
"""Classe définissant une personne caractérisée par :
- son nom
- son prénom
- son âge
- son lieu de résidence"""
def ma_residence(self):
"""Cette méthode affiche le lieu de résidence"""
print("J'habite {0}." . format(self.residence))
10.2. L'héritage
L'héritage est une fonctionnalité objet qui permet de déclarer que telle classe sera elle-même
modelée sur une autre classe, qu'on appelle la classe parente, ou la classe mère. Concrètement, si
une classe B hérite de la classe A, les objets créés sur le modèle de la classe B auront accès aux
méthodes et attributs de la classe A, on dit que la classe A est la fille de la classe B et que la classe B
est le parent (ou la superclasse) de la classe A.
Exemple :
class Personne:
"""Classe représentant une personne"""
def __init__(self, nom, prenom):
self.nom = nom
self.prenom = prenom
class AgentSpecial(Personne):
"""Classe définissant un agent spécial.
Elle hérite de la classe Personne"""
def __init__(self, nom, prenom, matricule):
"""Un agent se définit par son nom et son matricule"""
# On appelle explicitement le constructeur de Personne :
Personne.__init__(self, nom, prenom)
self.matricule = matricule
def mon_matricule(self):
"""Cette méthode affiche le matricule"""
print("Mon matricule est {0}." . format(self.matricule))
5-langage_Python.odt 20
Classe de première SI
qui.mon_matricule()
Pour contrôler les capacités des classes à utiliser les attributs et méthodes les unes des autres, il est
possible de les déclarer privés grâce au double souligné __ pour que les éléments ne soient
accessibles qu'à la classe elle-même.
Exemple :
class Personne:
"""Classe représentant une personne"""
def __init__(self, nom, prenom):
self.nom = nom
self.prenom = prenom
class AgentSpecial(Personne):
"""Classe définissant un agent spécial qui hérite de la classe Personne"""
def __init__(self, nom, prenom, matricule):
Personne.__init__(self, nom, prenom)
# l'attribut __matricule ne peut être initialisé qu'à travers ce
constructeur
self.__matricule = matricule
def __private(self):
"""Cette méthode affiche le matricule"""
# elle ne peut être appelée qu'à l'intérieur de la classe
print("Mon matricule est {0}." . format(self.__matricule))
def mon_matricule(self):
"""Cette méthode affiche le matricule"""
self.__private()
5-langage_Python.odt 21
Classe de première SI
class Complex(Vector2):
"""Classe des nombres complexes"""
def __init__(self, x, y):
# Appel au constructeur de la classe parente
super(Complex, self).__init__(x, y)
#Vector2.__init__(self, x, y)
def im(self):
return self.y
5-langage_Python.odt 22
Classe de première SI
end = False
while not end:
txt = fs.read(50)
if txt == "":
end = True
else:
print(txt)
fd.close()
fd.close()
Remarque : la méthode write n'accepte en paramètre que des chaînes de caractères. Si vous voulez
écrire dans votre fichier des nombres, des scores par exemple, il vous faudra les convertir en chaîne
avant de les écrire et les convertir en entier après les avoir lus.
5-langage_Python.odt 23
Classe de première SI
TEST
1 - Après ces instructions, de quel type est la variable c ?
a=8
b=3
c=a/b
• int (entier)
• float (flottant)
• str (chaîne de caractères)
2 - Quelle est la variable de type str (chaîne de caractères) parmi les choix suivants ?
• 3
• 3.1
• "3"
3 - Quelle est la différence entre entrer une variable dans l'interpréteur interactif et utiliser la
fonction print ?
• Aucune
• Dans l'interpréteur interactif, toutes les variables apparaissent entourées de guillemets.
• La fonction print est dédiée à l'affichage, l'interpréteur au débuggage.
4 - De quoi doit être composée une condition au minimum ?
• D'un bloc if
• D'un bloc if et elif
• D'un bloc if et else
5 - Considérant les instructions ci-dessous, si variable vaut 2.8, quel va être le résultat obtenu ?
if variable >= 3:
print("1")
elif variable < -1:
print("2")
else:
print("3")
• Afficher 1.
• Afficher 2.
• Afficher 3.
• N'afficher rien.
6 - Considérant le prédicat combiné ci-dessous, dans quel cas sera-t-il True (vrai) ?
• predicat_a and predicat_b
• predicat_a est vrai, peu importe predicat_b.
• predicat_b est vrai, peu importe predicat_a.
5-langage_Python.odt 24
Classe de première SI
5-langage_Python.odt 25
Classe de première SI
• Un répertoire simple
• Un répertoire avec, au minimum, un fichier __init__.py dedans
• Un répertoire avec un fichier __init__.py et au moins un autre module ou package
14 - Quels sont les mot-clés minimums pour capturer une exception ?
• try et catch
• try et except
• try et else
15 - Quel mot-clé est utilisé pour lever une exception ?
• throw
• raise
• try
16 - Dans quel cas le bloc finally est-il exécuté ?
• Quand aucune exception ne se produit dans le bloc try.
• Quand une exception se produit dans le bloc try.
• Dans tous les cas.
17 - Dans quel cas l'instruction ci-dessous lèvera une exception ?
annee = int(entree)
• La variable annee n'existe pas.
• La variable entree est une chaîne de caractères.
• La variable entree ne peut être convertie en nombre.
5-langage_Python.odt 26