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 :
|
# Commentaire | Commentaire sur une ligne |
""" Commentaire Suite du commentaire """ | Commentaire multiligne |
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"
Le type de la valeur que contient une variable se retrouve avec la fonction type()
.
int | 83 0 -23 2 | Entier |
float | 9.23 0.0 -1.7e-6 | Nombre à virgule |
str | "Un deux" 'Un deux' "L'avion" | Chaîne de caractères |
list | ["3", 3, 3.0] | Liste |
range | range(20) range(3,20) range(3,20,5) | Suite arithmétique d'entiers |
bool | True False | Booléen |
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"
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
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
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"))
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
+ | 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
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
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
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
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
\
txt='"Bonjour !", dit−elle.\n"Bonjour", répondit−il.' print(txt)
Affichage :
"Bonjour !", dit-elle. "Bonjour", répondit-il.
Remarques :
ch = "Constance" print(ch[0], ch[4], ch[8])
Affichage :
Cte
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
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]
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.
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']
if
nombre = -10 if nombre>0 : print("Le nombre choisi est positif") print("Fin du programme")
Affichage :
Fin du programme
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
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
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é
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
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é")
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
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
Une bibliothèque (library en anglais) s'importe de trois manières différentes.
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))
Evite les conflits de variable ou de fonction.
import numpy print(numpy.sqrt(9)) print(numpy.sin(2))
Donne un nom plus court à la bibliothèque.
import numpy as np print(np.sqrt(9)) print(np.sin(2))
En Python, on évite les mots tableau
ou vecteur
qui prêtent à confusion, ou alors on précise de quoi il s'agit.
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
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'}
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'}