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

Lors de certaines 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 ou scipy.

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 = "Un cours"
b = " ça s’apprend !"
c = a + b  # concaténation
print(c)

Affichage :

Un cours ça s’apprend !
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 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]) # a20cd
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]

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

Instructions conditionnelles

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 positif
if n!=34 :n est différent de 34
if (n>0) and (n<10) :n est compris strictement entre 0 et 10
if 0<n<10 :n est compris strictement entre 0 et 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é

Instructions répétitives

Boucle bornée for ... in

for n in range(3) :
  print("Bonjour")
print("Fin")

Affichage :

Bonjour
Bonjour
Bonjour
Fin

Remarques :

for n in range(10) :
  print(n)  # affichage des valeurs de 0 à 9

Remarque :

for n in range(1,10) :
  print(n)  # affichage des valeurs de 1 à 9

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

Importation des bibliothèques

Les bibliothèques s'importent 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.

Tuple (ou n-uplet)

t = (1, "a", 2.3)

print(len(t))
print(t[1])
t[1] = "b" # Erreur, les éléments d'un tuple sont immuables

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