% Programmation avec Python (chapitre 2) % Dimitri Merejkowsky
\center \huge Rappels
score = 2 # un entier
taille = 1.85 # un flottant
message = "bonjour!" # une string
+
, *
, -
, /
x = 3
y = 5
x + y # 8
//
et %
14 // 3 # 4
14 % 3 # 2
nom = "Bob"
message = "Bonjour " + nom
"Bonjour Bob"
score = 42
message = "votre score est: " + str(score)
print("Entrez votre age")
réponse = input()
age = int(réponse)
a = 3
b = 4
a > b # False
c = 3
a == b # True
a = 3
b = 4
if a == b:
print("a et b sont égaux")
print("on continue")
a = 3
b = 4
if a == b:
print("a et b sont égaux")
else:
print("a et b sont différents")
print("on continue")
if age < 10:
print("inférieur à dix")
elif 10 <= age < 20:
print("âge entre 10 et 20")
elif 20 <= age < 40:
print("âge entre 20 et 40")
else:
print("âge supérieur à 40")
i = 0
while i < 3:
print(i)
i = i + 1
0
1
2
i = 0
while True:
i = i + 1
print(i)
if i > 3:
break
\center \huge Compléments
a += b
est équivalent à a = a +b
>>> a = 3
>>> a = a + 1
>>> a
4
>>> a = 3
>>> a += 1
>>> a
4
\n
sert à échapper les retours à la ligne:
>>> texte = "Je suis un message\nsur deux lignes"
>>> print(texte)
Je suis un message
sur deux lignes
>>>
Pas besoin de +
pour concaténer des “littéraux”.
>>> text = "Je suis une " "longue" " string"
>>> text
'Je suis une longue string'
>>> "argh " * 3
'argh argh argh'
poème = """
Ceci est un poème
Qui contient "des quotes"
Et parle d'autre choses ...
"""
\center \huge Fonctions
Définition:
def dire_bonjour():
print("Bonjour")
def
:
à la fin et un bloc indenté (appelé le “corps”)\vfill
Appel:
>>> dire_bonjour()
Bonjour
Ici on vient de créer une nouvelle fonctionnalité
à Python. Avant qu’on définisse la fonction
dire_bonjour()
, il ne savait pas dire bonjour,
il savait uniquement afficher des messages à
l'écran.
On dit qu’on a créé une abstraction. Et c’est une technique extrêmement utile en programmation.
Définition: avec l’argument à l’intérieur des parenthèses
def dire_bonjour(prénom):
print("Bonjour " + prénom)
\vfill
Appel: en passant une variable ou une valeur dans les parenthèses
>>> dire_bonjour("Germaine")
Bonjour Germaine
>>> prénom_de_charlotte = "Charlotte"
>>> dire_bonjour(prénom_de_charlotte)
Bonjour Charlotte
C’est exatement comme si on assignait les arguments de la fonction avant d'éxécuter le code dans le corps
# Ceci:
dire_bonjour("Dimitri")
# Est équivalent à cela:
prénom_de_dimitri = "Dimitri"
print("Bonjour " + prénom_de_dimitri)
# Lui-même équivalent à:
print("Bonjour " + "Dimitri")
Les arguments d’une fonction n’existent que dans le corps de celle-ci
def dire_bonjour(prénom):
print("Bonjour " + prénom)
dire_bonjour("Dimitri") # Ok
print(prénom) # Erreur
Les variables en dehors des fonctions sont disponibles partout:
salutation = "Bonjour "
def dire_bonjour(prénom):
print(salutation + prénom)
dire_bonjour("Dimitri")
Une variable peut avoir en “cacher” une autre si elle a une portée différente
def dire_bonjour(prénom):
print("Bonjour " + prénom) # portée: uniquement dans
# le corps dire_bonjour
prénom = "Dimitri" # portée: dans tout le programme
dire_bonjour(prénom) # Ok
On peut mettre autant d’arguments qu’on veut, séparés par des virgules:
def afficher_addition(x, y):
résultat = x + y
print(résultat)
\vfill
>>> a = 4
>>> b = 5
>>> afficher_addition(a, b)
9
En Python, on peut aussi utiliser le nom des arguments au lieu de leur position:
def dire_bonjour(prénom):
print("Bonjour " + prénom)
>>> dire_bonjour(prénom="Gertrude")
Bonjour Gertrude
>>> afficher_addition(y=3, x=4)
7
On peut aussi mettre des valeurs par défaut:
Définition:
def dire_bonjour(prénom, enthousiaste=False):
message = "Bonjour " + prénom
if enthousiaste:
message += "!"
print(message)
\vfill
Appel:
>>> dire_bonjour("Thomas", enthousiaste=True)
Bonjour Thomas!
>>> dire_bonjour("Thomas", enthousiaste=False)
Bonjour Thomas
>>> dire_bonjour("Thomas")
Bonjour Thomas
Fonctions qui sont toujours présentes dans l’interpréteur. On en a déjà vu quelques unes:
print
, input
: écrire et lire sur la ligne de commandestr
, int
: convertir des entiers en strings et vice-versaIl y en a tout un tas!
La liste ici: https://docs.python.org/fr/3/library/functions.html#built-in-funcs
On peut passer autant d’arguments qu’on veut à print
et:
>>> prénom = "Charlotte"
print("Bonjour", pŕenom)
Bonjour Charlotte
On peut demander à print
de changer son séparateur:
>>> a = "chauve"
>>> b = "souris"
>>> print(a, b, sep="-")
chauve-souris
Ou de changer le caractère de fin:
>>> print("Ceci tient", end="")
>>> print("sur une seule ligne")
Ceci tient sur une seule ligne
Définition avec le mot return
def additionner(x, y):
return x + y
\vfill
Récupérer la valeur de retour
>>> a = 3
>>> b = 4
>>> c = additionner(a, b) # encore une assignation
>>> c
7
return
interrompt également l'éxécution du
corps de la fonction:
def dire_bonjour(prénom, première_fois=False):
print("Bonjour", prénom)
if not première_fois:
return
print("Heureux de faire votre connaissance")
\vfill
>>> dire_bonjour("Dimitri", première_fois=True)
Bonjour Dimitri
Heureux de faire votre connaissance
>>> dire_bonjour("Dimitri", première_fois=False)
Bonjour Dimitri
\center \huge Listes
Une liste est une suite ordonée d'éléments.
Avec []
, et les élements séparés par des virgules:
liste_vide = []
trois_entiers = [1, 2, 3]
On peut mettre des types différents dans la même liste
ma_liste = [True, 2, "trois"]
\vfill
On peut aussi mettre des listes dans des listes:
liste_de_listes = [[1, 2], ["Germaine", "Gertrude"]]
Avec len()
- encore une fonction native
>>> liste_vide = []
>>> len(liste_vide)
0
>>> trois_entiers = [1, 2, 3]
>>> len(trois_entiers)
3
Avec +
>>> prénoms = ["Alice", "Bob"]
>>> prénoms += ["Charlie", "Eve"]
>>> prénoms
['Alice', 'Bob', "Charlie", 'Eve']
\vfill
On ne peut concaténer des listes que avec d’autres listes:
>>> scores = [1, 2, 3]
>>> scores += 4 # TypeError
>>> scores += [4] # OK
Avec in
:
>>> prénoms = ["Alice", "Bob"]
>>> "Alice" in prénoms
True
\vfill
>>> prénoms = ["Alice", "Bob"]
>>> "Charlie" in prénoms
False
Avec for ... in
prénoms = ["Alice", "Bob", "Charlie"]
for prénom in prénoms:
# La variable 'prénom" est assignée à chaque
# élément de la liste
print("Bonjour", prénom)
Bonjour Alice
Bonjour Bob
Bonjour Charlie
Avec []
et un entier
Les index valides vont de 0 à n-1
où n
est la
taille de la liste.
>>> fruits = ["pomme", "orange", "poire"]
>>> fruits[0]
"pomme"
>>> fruits[1]
"orange"
>>> list[2]
"poire"
>>> fruits[3] # IndexError
Encore une assignation:
>>> fruits = ["pomme", "orange", "poire"]
>>> fruits[0] = "abricot"
>>> fruits
["abricot", "orange", "poire"]
On peut itérer sur les caractères d’une string:
for c in "vache":
print(c)
v
a
c
h
e
On peut tester si un caractère est présent:
>>> "e" in "vache"
True
>>> "x" in "vache"
False
Mais on neut peut pas modifier une string
>>> prénom = "Charlotte"
>>> prénom[0]
"C"
>>> prénom[3]
"r"
>>> prénom[0] = "X" # TypeError
\huge \center Atelier
Squellete:
def choisir_mot_au_hasard():
....
def main():
mot = choisir_mot_au_hasard()
...
main()