2.0 Eléments de base
Note
Pour afficher du texte dans la console en Python, on utilise la fonction : print()
.
Pour demander à l’utilisateur de saisir des données, on utilise la fonction : input()
. La fonction input
renvoie toujours une chaine de caractères.
2.1 Variables et affectation
Dans un programme, les données utilisées sont stockées dans des variables. Une affection est le fait d’associer une donnée (valeur ou expression) avec un nom.
Une variable est comme une boîte sur laquelle il y a une étiquette avec un nom et dans laquelle on y range des informations diverses.
Le nom de la variable peut être n’importe quelle chaine alphanumérique (sauf certains mots clés réservés) et ne doit pas commencer par un chiffre.
L’opérateur d’affectation est noté =
.
Exemple 1 : Cette instruction associe la valeur 3
au nom x
.
X=3
Exemple 2 : Cette instruction associe la valeur de l’expression à droite du signe =
.
Y = 3 + 5 #Y vaut 8
Exemple 3 :
1X=3
2Y=3+5
3Z = X + Y
Z
vaut 11. Car il est la somme des valeurs de X
et de Y
au nom Z
.
En Python, nous pouvons faire des affectations multiples pour gagner du temps dans la rédaction et d’économiser des lignes de code. Ainsi, ces 3 lignes d’instructions :
1X=1
2Y=3
3Z=5
Peuvent tout simplement s’écrire :
x,y,z = 1,2,5
On pourrait aussi écrire :
x=1; y=2; z=5
Vocabulaire à connaitre :
Une variable est composée d’un nom (ou identificateur) ; d’une adresse en mémoire où est enregistrée une valeur (ou un ensemble de valeurs), d’un type qui définit ses propriétés.
Une expression a une valeur qui est le résultat d’une combinaison de variables ou d’objets, de constantes et d’opérateurs.
Une instruction est une commande qui doit être exécutée par la machine.
Une affectation est une instruction qui commande à la machine de créer une variable en lui précisant son nom et sa valeur.
Attention à ne pas confondre expression et instruction. Une expression se calcul, elle possède une valeur. L’instruction s’exécute et n’a pas de valeur.
L’écriture x=0.5*x**2+1
est une instruction : affecter la valeur de l’expression 0.5*x**2+1
.
2.2 Les types simples.
Les types de base qui permettent de définir l’ensemble des valeurs qui peuvent prendre les variables sont :
Les types numériques
int
.
Ce type représente les nombres entiers.
La taille d’une variable int
n’est limité que par la capacité de la machine et le temps nécessaire à leur utilisation.
Les types booléens
bool
.
Ce type permet de représenter les valeurs booléennes True
(vrai) ou 1
en binaire et False
(faux) ou 0
en binaire.
Les types flottants
float
.
Ce type est utilisé pour les nombres réels. La virgule est remplacée par le point.
Les types chaines de caractères
str
.
Les chaines de caractères.
2.3 Opérations sur les types numériques
Addition |
|
Soustraction |
|
Multiplication |
|
Exponentiation |
|
Division |
|
Division entière |
|
Opération modulo |
|
Pour chacune des écritures, il existe des syntaxes permettant d’aller plus vite dans la rédaction comme :
a = a + b
peut s’écrire a += b
par exemple.
2.4 Comparaison et opération booléens
Les opérateurs mathématiques de comparaisons s’écrivent ainsi :
Egale |
|
Différent |
|
Inférieur |
|
Inférieur ou égale |
|
Supérieur |
|
Supérieur ou égale |
|
Valeur de retour sur les opérations
x==y
prend la valeurTrue
six
ety
sont égaux, sinon prend la valeurFalse
.x!=y
prend la valeurTrue
six
ety
sont différent, sinon prend la valeurFalse
.
Valeur de retour sur les opérations logiques
a and b
prend la valeurTrue
sia
etb
sontTrue
et sinon prend la valeurFalse
.a
orb
prend la valeurFalse
sia
etb
sontFalse
et sinon prend la valeurTrue
.not a
prend la valeurTrue
sia
estFalse
et prend la valeurFalse
sia
estTrue
.
2.5 Le type chaine de caractères
str
est une abréviation de string en anglais qui veut dire chaine de caractères.
Une chaine de caractère est par exemple tout ce que l’on saisie avec les touches du clavier.
On utilise des guillemets ou des apostrophes pour les déclarer.
MyString = "hello world!"
MyString2 = 'hello world!'
Si vous écrivez Mystring = Hello
, Hello
sera considéré comme étant une variable. Si elle n’existe pas, il y aura une erreur.
Si elle existe, MyString
aura alors la valeur de la valeur de Hello
.
Nous pouvons connaitre la longueur d’une chaine, qui est le nombre de caractère qui la compose, grâce à la fonction len
.
len("hello") #a pour valeur un entier : 5
MyString = "Hello world"
len(MyString) #a pour valeur un entier : 11
Chaque caractère de la chaine possède un indice qui commence de 0 à (longueur de la chaine -1).
Indice 0 |
Indice 1 |
Indice 2 |
Indice 3 |
Indice 4 |
Indice 5 |
Indice 6 |
Indice 7 |
Indice 8 |
Indice 9 |
H |
E |
L |
L |
O |
Y |
O |
U |
! |
Nous avons ici la chaine « HELLO YOU ! ».
Si nous faisons un : len("HELLO YOU !")
nous obtenons la longueur 10.
Toutefois nous voyons dans le tableau que le dernier caractère se situe à l’indice 9( 10 – 1).
Il est possible d’accéder à l’indice i d’une chaine grâce à cette syntaxe :
MyString = "Hello world"
MyString[2] #Nous accédons à l’indice 2 de la chaine. Soit au caractère l
Nous pouvons avoir accès également à une suite de caractères d’une chaine avec la notation :
MyString [i : j]
. L’indice i
est inclus et j
est exclu.
MyString = "Hello world"
MyString [2 :4] #résultat: ll
2.6 Les types composés
Il s’agit des types tuple
, list
, dict
.
Nous étudierons ici les list
.
Un objet de type list
(« une liste »), représente un ensemble ordonné d’objets éventuellement de types différents.
De la même manière qu’avec les chaines de caractères, les éléments de la liste sont ordonnés en commençant à l’indice 0.
Comment déclarer une liste :
MyList1= [] #une liste vide.
MyList2=[4] #une liste avec un seul élément, ici l’entier 4.
MyList3=[5, 'hello', 3.14, ['a', 'b']] #une liste avec des éléments de différents types.
La fonction len
est aussi utilisable avec les listes et renvoie sa longueur.
len(MyList3)
a pour valeur l’entier 4.
L’accès à un élément ou une suite d’éléments se fait comme pour les chaînes :
MyList3[1] #est l’élément 'hello'
MyList3[0:3] #est la liste des éléments d’indices 0,1,2 soit [5,'hello',3.14]
Il est possible de modifier le contenu d’une liste de la sorte :
MyList3[1] = "AU REVOIR"
MyList3 #vaut alors [5, 'AU REVOIR', 3.14, ['a', 'b']]
La méthode append
permet d’ajouter des éléments en fin de liste.
MyList.append("ELEMENT1")
MyList.append("ELEMENT2")
#MyList vaut: ["ELEMENT1", "ELEMENT2"]
2.7 Opération sur les types str
et list
Il est possible d’indexer à partir du dernier élément :
Exemple : Nous avons une liste de : 7 éléments, rangés de l’index 0 à 6.
MyList["item1","item2","item3","item4","item5","item6","item7"]
#Je peux directement aller au dernier élément :
MyList[-1]
#Et on en déduit comment accès à l’avant dernier :
MyList[-2]
La concaténation.
Str1 = "BON"
Str2="JOUR"
Je peux créer une nouvelle chaine qui sera l’assemblage de Str1
et Str2
, on appelle cela faire une concaténation.
Str3 = Str1 + Str2
Str3
vaut alors « BONJOUR »
Nous pouvons aussi effectuer la concaténation de n copies :
strConcat = 3*Str3
strConcat
vaut :bonjourbonjourbonjour
Nous pouvons changer le type des variables grâce aux fonctions :
int
,float
,str
.
StrPI = "3.1415"
StrPI
est de type string
.Pour la convertir en float
il suffira d’écrire ceci :
float(StrPI)
De ce fait :
NombrePI = float(StrPI)
NombrePI
sera de type float
.
La fonction
list
permet de convertir une chaine de caractère en une liste dont les éléments sont les différents caractères de la chaine.
String = "3.1415"
MyList = list(String)
MyList
vaut donc ['3', '.', '1', '4', '1', '5']
3.0 Instructions conditionnelles et boucles
L’indentation est le décalage vers la droite du début de ligne. C’est un élément très important de la syntaxe en Python mais aussi dans tous les autres langages.
Cela permet de délimiter visuellement des blocs de code et aide à la lisibilité.
En Python, quand vous créez un bloc, la ligne précédente l’indentation se termine par le signe :
.
3.1 Instructions conditionnelles
if condition:
Instructions
Condition désigne une expression et instructions désigne une instruction ou un bloc d’instructions écrites sur plusieurs lignes.
Exemple :
1if n == 4:
2 n = 4 * 2
Nous pouvons aussi ajouter des instructions si la condition n’est pas respectée avec le mot clé else
.
1if n == 4:
2 n = 4 * 2
3else:
4 n = 4 + 1
Nous pouvons aussi ajouter une série de conditions dans le cas où les précédentes ne seraient pas respectées avec le mot clé elif
.
1if degree <= 0:
2 message = "Il géle !!"
3elif degree > 0 and degree < 20:
4 message = "Il fait froid !!"
5else:
6 message ="Il faut chaud!!"
N’oubliez pas que c’est l’indentation qui permet de délimiter les blocs d’instructions à exécuter si la condition est vérifiée.
3.2 Boucles conditionnelles
Structure :
while condition:
instructions
Tant que la condition est respectée, alors les instructions seront exécutées.
1a = 10
2while a > 0:
3 print("a est supérieur à zéro")
4 a = a - 1
Si j’exécute le script, j’obtiens à l’écran :
1a est supérieur à zéro
2a est supérieur à zéro
3a est supérieur à zéro
4a est supérieur à zéro
5a est supérieur à zéro
6a est supérieur à zéro
7a est supérieur à zéro
8a est supérieur à zéro
9a est supérieur à zéro
10a est supérieur à zéro
Tant que a > 10
est True
, alors on affiche « a est supérieur à zéro » puis on soustrait 1 à la variable a
.
Au bout de 10 « tours » dans la boucle, a
se retrouve égale à zéro, la condition a > 0
n’est plus vrai. Les instructions cessent alors d’être exécutées.
3.3 Boucles non conditionnelles
Structure :
for i in range(n):
instructions
Cette boucle permet de répéter n
fois une instruction ou un bloc d’instructions.
1for car in "bonjour":
2 print(10*car)
Execution:
1bbbbbbbbbb
2oooooooooo
3nnnnnnnnnn
4jjjjjjjjjj
5oooooooooo
6uuuuuuuuuu
7rrrrrrrrrr
Explication :
Pour chaque caractère un à un de la chaine « bonjour », on affiche 10 fois le caractère.
1for i in range(10):
2 print("hello")
Exécution : Pour chaque valeur de i
en partant de 1, puis en augmentant de 1 jusqu’à 10, afficher : hello.
1hello
2hello
3hello
4hello
5hello
6hello
7hello
8hello
9hello
10hello
1for i in range(6,10):
2 print("hello")
Exécution : Pour chaque valeur de i
en partant de 6, puis en augmentant de 1 jusqu’à 10, afficher : hello.
1hello
2hello
3hello
4hello
1for i in range(6,10,2):
2 print("hello")
Exécution : Pour chaque valeur de i
en partant de 6, puis en augmentant de 2 jusqu’à 10, afficher : hello.
1hello
2hello
Ajouter l’instruction break
dans la boucle permet de sortir de celle-ci.
L’instruction continue
permet d’éviter un passage dans la boucle.
3.4 Mise en pratique: Modifier une liste
1MyList = ['bijou','caillou','chou','genou','hibou','joujou','pou']
2for i in range(len(MyList)):
3 print(MyList[i])
Exécution
1bijou
2caillou
3chou
4genou
5hibou
6joujou
7pou
Nous souhaitons ajouter un “x” à la fin de chaque mot, et les afficher de nouveau.
1MyList = ['bijou','caillou','chou','genou','hibou','joujou','pou']
2for i in range(len(MyList)):
3 MyList[i] = MyList[i] + "x"
4 print(MyList[i])
Exécution
1bijoux
2cailloux
3choux
4genoux
5hiboux
6joujoux
7poux