
rudiments de Python¶
commentaires¶
tout ce qui est après un #
est un commentaire,
et sera ignoré par l’interpréteur Python
# ceci est un commentaire
10 * 10 # et ici aussi
100
nombres¶
# entiers
10
10
# flottants
3.14
3.14
# complexes
1j * (2+4j)
(-4+2j)
# booléens True et False
True
True
variables¶
pour définir une variable, il suffit de l’affecter avec le signe =
# remarquez que ceci n'affiche rien
a = 10
# l'utilité c'est bien sûr
# de garder un résultat pour
# s'en reservir ensuite
a + a
20
fonctions¶
on définit une fonction avec le mot-clé def
# on définit une fonction en donnant un nom
# aux paramètres
#
# à nouveau ici on ne va rien afficher
def P(x):
return x**2 + 3*x + 2
# mais on peut maintenant
# appeler la fonction P
P(10)
132
P(100)
10302
mots clés¶
un certain nombre de mots sont réservés dans Python
;
ce sont les “mots-clé” du langage
on ne peut pas les utiliser comme noms de variable
# ceci provoque une erreur
if = 2
File "<ipython-input>", line 3
if = 2
^
SyntaxError: invalid syntax
liste |
|
|
|
|
---|---|---|---|---|
False |
await |
else |
import |
pass |
None |
break |
except |
in |
raise |
True |
class |
finally |
is |
return |
and |
continue |
for |
lambda |
try |
as |
def |
from |
nonlocal |
while |
assert |
del |
global |
not |
with |
async |
elif |
if |
or |
yield |
importer une librairie¶
certaines fonctionnalités sont disponibles au travers
de bibliothèques, auxquelles on peut accéder en les important
import math
# attention cette façon d'obtenir de l'aide est
# spécifique à IPython / notebooks
# avec un interprète Python standard, on ferait
# help(math)
math?
utiliser une librairie¶
une bibliothèque expose typiquement un certain nombre de symboles
par exemple dans math
on va trouver
pi
une variable qui dénote le nombre $\pi$sin
une fonction qui sait calculer le sinus
pour accéder à ces symboles on utilise la notation .
math.pi
3.141592653589793
# ça devrait être 0 mais ...
math.sin(math.pi)
# ... c'est simplement tout petit
# 0.00000000000000012246467991473532
1.2246467991473532e-16
Remarquez qu’ici on devrait obtenir 0, mais les calculs sur les flottants sont faits de manière approchée.
alternative¶
on peut aussi faire comme ceci
# si on ne veut pas taper math.pi à chaque fois
from math import pi, sin
pi
3.141592653589793
# idem
sin(pi)
1.2246467991473532e-16
Préférez savoir d’où viennent les fonctions que vous utilisez !
Utilisez la forme math.sin
qui garde la trace du module d’où provient le symbole sin
précision des calculs flottants¶
bien sûr un flottant est représenté comme une suite de bits 0 ou 1
cela induit des calculs avec une précision imparfaite
# sur les architectures actuelles
# un flottant est encodé sur 64 bits
0.2 + 0.1
0.30000000000000004
0.2 + 0.1 == 0.3 # Oups !
False
précision des calculs flottants (où trouver l’info)¶
la façon de passer d’un flottant à une séquence de bits
s’appelle un encodage
dans le cas des flottants: IEE754
qui est efficace car supporté par le processeur
pour faire court :
le plus souvent avec les ordis actuels (64 bits)
la précision des calculs est de l’ordre de $10^{-15}$
voir un convertisseur en ligne pour visuels
texte (chaines)¶
# pour créer un texte, on peut
# le mettre en deux simple-quote '
texte1 = 'bonjour le monde'
print(texte1)
bonjour le monde
# ou encore, si c'est plus pratique
# entre deux double-quote "
texte2 = "bonjour le monde"
print(texte2)
bonjour le monde
# comme ça on peut insérer un "
print('Python est un langage "typé"')
Python est un langage "typé"
# ou un '
print("Python est un langage 'typé'")
Python est un langage 'typé'
print()
¶
remarquez qu’on a utilisé la fonction print
qui est prédéfinie
on peut l’appeler avec autant d’arguments qu’on veut
et de n’importe quel type
# simplement pour illustration des possibilités d'appel de fonction
# car on va voir plus loin une forme beaucoup plus pratique
# pour faire ce genre de choses
#
print("la somme de", 12, "et", 13, "vaut", 12+13)
la somme de 12 et 13 vaut 25
len()
¶
il existe une autre fonction prédéfinie très pratique: len()
qui retourne la longeur d’un objet
# sur une chaine len()
# retourne le nombre de caractères
#
# remarquez que les guillemets ne comptent pas
len("abc")
3
# on compte les caractères
# et pas les octets
len("été")
3
textes plus longs¶
si vous avez besoin d’écrire des textes de plusieurs lignes
utilisez """
au lieu de "
– (ou '''
)
# ici je mets un \ pour couper
# la ligne et continuer sur la ligne en dessous
bafouille = \
"""To be, or not to be: that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,"""
print(bafouille)
To be, or not to be: that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
# idem avec '''
court = '''a
b'''
print(court)
a
b
# le changement de ligne compte
# pour un caractère (newline)
# les caractères sont 'a', '\n', et 'b'
len(court)
3
formatage¶
pour construire des chaines lisibles,
le plus simple est la f-string
# une f-string se présente comme une chaine
# mais préfixée par un f collé
# avant le guillement ouvrant
# (qui peut être ' ou " ou """ ou ''')
f"une f-string"
'une f-string'
# l'intérêt est qu'on peut
# alors insérer des variables
# directement dans la chaine
# en les mettant entre {}
print(f'pi = {pi}')
pi = 3.141592653589793
# en fait j'ai dit 'variable' mais on peut mettre n'importe quelle expression
# c'est à dire qu'à l'intérieur des {} on peut faire des calculs, ici sin(pi)
print(f"pi = {pi} et sin(pi) = {sin(pi)}")
pi = 3.141592653589793 et sin(pi) = 1.2246467991473532e-16
formatage - suite¶
il y a des tas de possibilités pour affiner la façon
dont les données sont mises en forme
pour cela ajouter un format dans les {}
avec un :
par exemple pour afficher deux chiffres après la virgule :
print(f"bla {2*math.pi:.2f} bla")
bla 6.28 bla
méthodes sur les chaines¶
on reviendra plus tard sur la notion de méthode
mais pour l’instant voici deux méthodes très utiles sur les chaines : split
et join
longue_chaine = "une liste de mots à découper"
# sert à découper une chaine
# en morceaux
mots = longue_chaine.split()
mots
['une', 'liste', 'de', 'mots', 'à', 'découper']
# et avec join on peut réassembler
"+".join(mots)
'une+liste+de+mots+à+découper'
pour une liste complète des méthodes sur les chaines
vous pouvez aller consulter la doc
https://docs.python.org/3/library/stdtypes.html#string-methods
# une méthode s'utilise comme ceci
chaine = "bonjour"
chaine.capitalize()
'Bonjour'
# avec paramètres si besoin
# par exemple, cette méthode
# sert à centrer en précisant
# avec quoi remplir
chaine.center(13, '-')
'---bonjour---'