PYTHON
RESUME

Syntaxe générale

Instruction
...
Bloc 1 :
    instruction
    …
    Bloc 2 :
        instruction
        ...
    Instruction
    ...
Instruction
...

:: à la fin d'une ligne définit le début d'un bloc d’instructions
Indentation Deux espaces ou une tabulation matérialisent un bloc d’instructions :
  • Sous-programme
  • Instruction conditionnelle
  • Instruction répétitive
# CommentaireCommentaire sur une ligne
"""
Commentaire
Suite du commentaire
"""
Commentaire multiligne

Variables

Affectation

L'affectation consiste à attribuer une valeur à une variable.

a = 83
b = 9.23
c1 = "Un deux trois"
c2 = "Un \"deux\" trois"
c3 = "Un deux\ntrois"

Type d'une variable

Le type de la valeur que contient une variable se retrouve avec la fonction type().

int83    0    -23    2Entier
float9.23    0.0    -1.7e-6Nombre à virgule
str"Un deux"    'Un deux'    "L'avion"Chaîne de caractères
list["3", 3, 3.0]Liste
rangerange(20)    range(3,20)    range(3,20,5)Suite arithmétique d'entiers
boolTrue    FalseBooléen

Conversion de type

Diverses fonctions permettent de changer le type d'une variable.

int("15")      # 15
int(-15.56)    # -15 (troncature)
float(-15)     # -15.0
float("-2e-3") # -0.002
str(15)        # "15"
str(-0.002)    # "-0.002"

Typage dynamique

A quelques exceptions près, lors des opérations sur deux types différents, un type est modifié automatiquement pour rendre l'opération possible.

var=3/2
print(var,type(var))
var=3.0+2
print(var,type(var))
var=3*True
print(var,type(var))
var=3*(2>1)
print(var,type(var))
var="3"+2
print(var,type(var))

Résultat :

1.5 <class 'float'>
5.0 <class 'float'>
3 <class 'int'>
3 <class 'int'>
TypeError

Variables globale, locale

Même nom mais deux variables différentes :

a = 15       # variable globale
def plusUn() :
  a = 0      # variable locale à la fonction plusUn()
  a = a + 1
  print(a)

plusUn()     # 1
print(a)     # 15

Programme qui ne fonctionne pas :

a = 15       # variable globale
def plusUn() :
  a = a + 1  # erreur car a n’est pas initialisée
  print(a)

plusUn()
print(a)

Variable globale dans une fonction ou procédure :

a = 15       # variable globale
def plusUn() :
  global a
  a = a + 1
  print(a)

plusUn()     # 16
print(a)     # 16

Entrées-sorties

Entrées avec la fonction input()

Saisie d’une chaîne de caractères :

nom = input("Quel est votre nom ?")

Saisie d’un entier :

n = int(input("Nombre de frères et sœurs"))

Saisie d’un nombre à virgule :

x = float(input("Température à 12h00"))

Sorties avec la fonction print()

Affichage d’une valeur :

print("Bonjour !")
print(15)

Résultat :

Bonjour !
15

Affichage de la valeur que contient une variable :

message = "Bonjour !"
print(message)

Résultat :

Bonjour !

Affichage du résultat d'un calcul :

a = 15
print(3*a)

Résultat :

45

Affichage de la valeur retournée par une fonction :

def saluer(nom) :
  return "Bonjour "+nom+"!"
print(saluer("Julie"))

Résultat :

Bonjour Julie!

Affichage sur une même ligne :

a = -3
print("Le carré de ", a," est " , a * a)

Variante :

a = -3
print("Le carré de ", end = " ")   # end = " " évite le retour à la ligne
print(a, end = " ")
print(" est ", end = " ")
print(a*a)

Résultat :

Le carré de  -3  est  9

Nombres

Opérations sur les nombres

+Addition
-Soustraction
*Multiplication
/Division
//Division entière
%Reste de la division
**Puissance
a = 2
print(a + 3)     # 5
print(a - 3)     # -1
print(3 * a)     # 6
print(15 / 6)    # 2.5
print(15 // 6)   # 2
print(15 % 6)    # 3
print(3 ** a)    # 9
print(a ** 0.5)  # 1.4142135623730951

Fonctions natives

Quelques fonctions mathématiques sont toujours disponibles.

print(round(3.815164, 2))  # 3.82
print(int(3.815164))       # 3
print(abs(2.3))            # 2.3
print(abs(-2.3))           # 2.3
print(max(2,4,6))          # 6

Fonctions mathématiques

La plupart des fonctions mathématiques nécessitent d'importer une bibliothèque, comme math, numpy, scipy ou sympy (calcul formel).

from math import *
print(sqrt(16))   # 4.0
print(sin(pi/4))  # 0.7071067811865475
print(acos(0.5))  # 1.0471975511965979
print(pi/3)       # 1.0471975511965979

Fonctions aléatoires

Les fonctions random(), choice() et randint() appartiennent à la bibliothèque random.

from random import *

a = random()         # nombre aléatoire dans [0; 1[ - exemple : 0.8365827741773375

L = [7, 3, 8, 5, 6]
a = choice(L)        # élément au hasard dans la liste L - exemple : 5

a = randint(5, 10)   # entier aléatoire dans [5; 10] - exemple : 7

Chaînes de caractères

Opérations sur les chaînes

a = "Je dis "
b = "bla "
print(a + b)  # concaténation
print(5 * b)  # répétition

Affichage :

Je dis bla
bla bla bla bla bla
ch = "Pierre"
print(len(ch))  # longueur de la chaîne

Affichage :

6

Caractère d'échappement \

txt='"Bonjour !", dit−elle.\n"Bonjour", répondit−il.'
print(txt)

Affichage :

"Bonjour !", dit-elle.
"Bonjour", répondit-il.

Remarques :

Accès aux caractères individuels

ch = "Constance"
print(ch[0], ch[4], ch[8])

Affichage :

Cte

Accès aux sous-chaines

nb = "123456789"
print(nb[1:3])
print(nb[0:len(nb)-2])
print(nb[:-2])
print(nb[2:len(nb)])
print(nb[2:])

Affichage :

23
1234567
1234567
3456789
3456789

Listes

Opérations sur les listes

Une liste est une suite ordonnée d'éléments (valeurs ou variables) séparées par des virgules, l'ensemble étant encadré entre crochets. A chaque élément de la liste correspond un indice (ou index). L'indice du premier élément est 0.

liste = ["a", "b", 20, 30, "cd"]
print(len(liste))                   # 5
print(liste[0], liste[2], liste[4]) # a 20 cd
print(liste.index("b"))             # 1
liste[0] = "e"                      # ["e", "b", 20, 30, "cd"]
del(liste[3])                       # ["e", "b", 20, "cd"]
liste.append("a")                   # ["e", "b", 20, "cd", "a"]  équivaut à liste+=["a"]
liste.remove("b")                   # ["e", 20, "cd", "a"]

liste = [1, 3, 2, 4]
min(liste)                          # 1
max(liste)                          # 4
liste.reverse()                     # [4, 2, 3, 1]
liste.sort()                        # [1, 2, 3, 4]
liste.sort(reverse=True)            # [4, 3, 2, 1]

A partir d'une suite arithmétique

La fonction range() définit une suite arithmétique de nombres entiers, positifs ou négatifs. Elle prend 1 à 3 paramètres. La fonction list() convertit le type range en type list.

list(range(5))       # [0, 1, 2, 3, 4]
list(range(2,5))     # [2, 3, 4]
list(range(0,5,2))   # [0, 2, 4]
list(range(2,-3,-2)) # [2, 0, -2]

Remarque : range(5) définit 5 valeurs mais la première valeur est 0 donc la dernière est 4.

A partir d'une chaîne de caractères

La méthode split() sectionne une chaîne de caractères pour former une liste. Chaque élément de la liste est une chaîne de caractères. Cette méthode prend pour paramètre le séparateur, par défaut un espace.

texte='Salut à tous!'
texte.split()         # ['Salut', 'à', 'tous!']
IPv4="192.168.45.67"
IPv4.split(".")       # ['192', '168', '45', '67']

Bloc d’instructions

Structure de choix (ou conditionnelle)

Avec un if

nombre = -10
if nombre>0 :
  print("Le nombre choisi est positif")
print("Fin du programme")

Affichage :

Fin du programme

Avec un if ... else

nombre = 10
if nombre>0 :
  print("Le nombre choisi est positif")
else :
  print("Le nombre choisi est négatif ou nul")
print("Fin du programme")

Affichage :

Le nombre choisi est positif
Fin du programme

Test de plusieurs valeurs

n = 10
if n<0 :
  print("Le nombre est négatif")
elif n==0 :
  print("Le nombre est égal à zéro")
else :
  print("Le nombre est positif")

Affichage :

Le nombre est positif

Opérateurs de test

if n==0 :n est égal à zéro
if n>=0 :n est supérieur ou égal à 0
if n!=34 :n est différent de 34
if (0<10) and (n<10) :n est compris strictement entre 0 et 10
if 0<n<10 :
if (n<0) or (n>10) :n est négatif ou strictement supérieur à 10
if n%5==0 :n est divisible par 5

Différences entre =, == et != :

n = 10          # affectation
n == 0 # False  # test d'égalité
n = 0           # affectation
n == 0 # True   # test d'égalité
n != 0 # True   # test d'inégalité

Structure de répétition (ou répétitive)

Boucle bornée for ... in

Avec une suite arithmétique d'entiers :

for n in range(3) :
  print("Entier", n)

Affichage :

Entier 0
Entier 1
Entier 2

Avec une liste :

for n in ["Paul", "Alice", "Julie"] :
  print("Bonjour", n)

Affichage :

Bonjour Paul
Bonjour Alice
Bonjour Julie

Boucle non bornée while

Le nombre d’itérations n'est pas toujours connu à l’avance.

gagne = 0
while gagne == 0 :
  n=int(input("Entrer un nombre"))
  if n == 10 :
    gagne = 1
    print("Gagné")

Sous-programmes

Fonctions

Une fonction prend communément un ou plusieurs paramètres et retourne une valeur :

def puissance(x,n) :
  y = x**n
  return y

print(puissance(3,2)) # 9

Procédures

Une procédure exécute une suite d'instructions sans retourner de valeur :

def table7() :
  for i in range(1,11) :
    print(7*i)

table7()  # 7 14 21 28 35 42 49 56 63 70

Elle prend éventuellement un ou plusieurs paramètres :

def table(base) :
  for i in range(1,11) :
    print(base*i)

table(8)  # 8 16 24 32 40 48 56 64 72 80

Bibliothèques

Une bibliothèque (library en anglais) s'importe de trois manières différentes.

Sans rappel du nom de la bibliothèque

A réserver aux programmes simples.

from numpy import *
print(sqrt(9))
print(sin(2))

Il est possible d'importer seulement les fonctions désirées.

from numpy import sqrt, sin
print(sqrt(9))
print(sin(2))

Avec rappel du nom de la bibliothèque

Evite les conflits de variable ou de fonction.

import numpy
print(numpy.sqrt(9))
print(numpy.sin(2))

Avec un alias

Donne un nom plus court à la bibliothèque.

import numpy as np
print(np.sqrt(9))
print(np.sin(2))

Autres types natifs

En Python, on évite les mots tableau ou vecteur qui prêtent à confusion, ou alors on précise de quoi il s'agit.

N-uplet

Un n-uplet (tuple en anglais) est une suite non modifiable d'éléments.

t = (1, "a", 2.3)

print(len(t))
print(t[1])
t[1] = "b" # Erreur, les éléments d'un n-uplet ne peuvent se modifier

Résultat :

3
a
TypeError: 'tuple' object does not support item assignment

Ensemble

e1 = {"moineau", "couleuvre", "renard", "renard"}
e2 = {"moineau", "gardon", "lion"}
e3 = {"moineau"}

print(e1)      # "renard" ne compte qu'une fois
print(len(e1))
for p in e1:
  print(p)
print(e1 | e2) # Union
print(e1 & e2) # Intersection
print(e1 - e3) # Différence

Résultat :

{'renard', 'moineau', 'couleuvre'}
3
renard
moineau
couleuvre
{'lion', 'renard', 'couleuvre', 'moineau', 'gardon'}
{'moineau'}
{'couleuvre', 'renard'}

Dictionnaire

d = {"oiseau":"moineau", "reptile":"couleuvre", "mammifere":"renard"}

print(d["reptile"])
for p in d:
  print(d[p])
d["poisson"] = "gardon" # Ajout d'un élément
del d["reptile"]        # Retrait d'un élément
d["oiseau"] = "pinson"  # Modification d'un élément
print(d)

Résultat :

couleuvre
moineau
couleuvre
renard
{'oiseau': 'pinson', 'mammifere': 'renard', 'poisson': 'gardon'}