Licence CC BY-NC-ND Thierry Parmentelat
_images/inria-25-alpha.png

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

booléens

True
True
False
False

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---'