Slides modified from https://github.com/UGE-IGM/courspython¶
Chapitre 1 : Valeurs, types et variables¶
Dans ce chapitre vous allez :
- découvrir des types Python de base, apprendre à les reconnaitre et les utiliser ;
- connaitre quelles opérations sont supportées pour chaque types en jeu ;
- apprendre à convertir d'un type vers un autre ;
- découvrir la notion de variable et le mécanisme d'affectation ;
- apprendre à faire saisir une donnée à l'utilisateur et utiliser sa réponse.
I Types de valeurs¶
Toutes les valeurs en Python possèdent un type. Le type d'une valeur définit les opérations qu'il est possible de lui appliquer.
Les types de base sont :
- les nombres entiers (
int) - les nombres décimaux (
float) - les booléens (
bool) - les chaines de caractères (
str) - un type de valeur indéfinie (
NoneType)
Nombres entiers (int)¶
983
983
1234
1234
-4 # un entier négatif
-4
2 ** 10 # un très très grand entier !!!
1024
Nombres décimaux (float)¶
3.14
-1.5
-1.5
.1
0.1
12.
12.0
4.56e3 # notation scientifique
4560.0
Booléens (bool)¶
Ce type permet de représenter les deux valeurs de vérité « vrai » et « faux ». On en reparlera au prochain chapitre.
True # vrai
True
False # faux
Attention : Les majuscules/minuscules sont importantes :
true # provoque une exception (une erreur)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_21928/1293955843.py in <module> ----> 1 true # provoque une exception (une erreur) NameError: name 'true' is not defined
Chaînes de caractères (str)¶
Une chaine de caractères est une succession de symboles (lettres, chiffres, ou autres) entre des guillemets.
En Python, il y a plusieurs moyen d'en construire pour répondre à la nécessité d'avoir à l'intérieur d'elle même des guillemets.
La construction des chaines de caractères¶
'asdbonjour' # guillemets simples
'asdbonjour'
"hello !" # guillemets doubles
"மனிதப் பிறவியினர் சகலரும் சுதந்திரமாகவே பிறக்கின்றனர்." # caractères non-latins
"""Pour des chaînes plus longues (par exemple un paragraphe entier) on peut utiliser des guillemets triples."""
Il faut faire un peu attention pour écrire une chaîne de caractères contenant des apostrophes ou des guillemets :
print("hello, my namne is whatever")
hello, my namne is whatever
'Mon nom est "Personne".'
Affichage de chaîne¶
print("Bonjour à toi, Ô lecteur attentif !")
Caractères spéciaux : \n, \t, ', ", \¶
"sauts\nde\nligne" # \n provoquera un passage à la ligne si on affichait la chaine de caractère
print("sauts\nde\nligne")
sauts de ligne
print("Du\ttexte\nsur\t2 colonnes") # touche ⇥
print("D'autres symboles spéciaux : \' \" \\")
Valeur indéfinie (NoneType)¶
None # ça a l'air de ne servir à rien mais en fait c'est bien pratique
Vérifier vos connaissances¶
A ce stade, vous devez être capable :
- de citer les cinq types Python de base que nous avons vu ;
- de reconnaitre le type d'une expression simple ;
- de donner les trois manières de créer une chaine de caractères ;
- d'écrire des chaines de caractères contenant elle même des guillemets ;
- de citer les principaux caractères spéciaux qu'une chaine peut contenir et d'expliquer leur effet ;
- savoir comment afficher une chaines de caractères.
Exercice 1 : Validité et correction de chaines de caractères¶
Les chaines de caractères suivantes sont-elles bien construites ? Si non, les corriger.
Remarque : Il se peut que vous ayez à faire des choix et qu'il y ait plusieurs corrections possibles.
""Bonjour""
"\"Ceci est une citation\""
"Suis je une chaine ?'
"Je contiens une \tabulatio\n"
'"Ceci est encore une citation"'
II Opérations¶
Le type d'un objet détermine les opérations qu'on peut lui appliquer.
Opérations sur les nombres¶
Addition (a + b), soustraction (a - b), multiplication (a * b), puissance (a ** b)
- sur deux
intet produisant unint - ou sur deux
floatet produisant unfloat - ou sur un
intet unfloatet produisant unfloat
4 + 5
4 - 5.
-1.0
4. * 5.
4 ** 0.5 # 4 puissance 1/2 c'est la racine carrée de 4 !
Division "réelle" (a / b) : produit toujours un float
1/3
4 / 2 # ne donne pas un entier !!
Division euclidienne :
- quotient (
a // b) - reste, ou modulo (
a % b) - si
aetbde typeint, produisent unint, sinon unfloat
7 // 2
3
7 % 2
divmod(7, 2)
4 // 2 # cette fois c'est un entier...
4 % 2 # le reste est nul car 4 est pair (divisible par 2)
4.0 // 1.75 # donne un float !
4.0 % 1.75
Les opérations suivent les règles de priorité usuelles :
4 + 2 * 1.5
On peut aussi utiliser des parenthèses :
(4 + 2) * 1.5
Opérations sur les chaînes de caractères¶
Concaténation : s + t
'Universite' + 'Sorbonne' + 'Paris' + "Nord"
'Universite' + ' Sorbonne' + ' Paris' + " Nord"
Répétition : s * a
'Hip ' * 3 + 'Hourra !'
('Hip ' * 3 + 'Hourra ! ') * 2
Beaucoup d'autres opérations (sur les chaînes, les nombres...) : on verra ça plus tard
Conversions / transformations de type¶
On a parfois besoin de convertir une valeur d'un type à l'autre :
- Une valeur en chaîne de caractères avec la fonction
str
"J'ai " + 10 + ' ans.'
"J'ai " + str(10) + ' ans.'
- Un
float, et parfois unstrenint
int(3.5) # float vers int
int('14') # str vers int
int('3.5') # impossible : deux conversions (str -> float -> int)
int('deux') # impossible : ne représente pas un nombre
- Un
int, et parfois unstrenfloat
float(3) # int vers float
float('14.2') # str vers float
float('3,5') # impossible : virgule au lieu de point
float('bonjour') # impossible : ne représente pas un nombre
Accès au typage d'une expression¶
On peut accéder au type d'une expression grâce à la fonction prédéfinie type.
type("salut")
type(4 / 2)
type(2 * 4.8)
Vérifier vos connaissances¶
A ce stade, vous devez être capable de :
- décrire les opérations disponibles en Python sur les nombres et de connaitre le type du résultat ;
- décrire les opérations disponibles en Python sur les chaines de caractères ;
- savoir convertir un type numérique en chaine de caractère, et inversement ;
- savoir comment accéder au type d'une valeur Python.
Exercice 2 : valeur et type d'une opération¶
Pour chacune des instructions suivantes :
- donner le type et le résultat de l'expression donnée ;
- vérifier le résultat.
On pourra utiliser la fonction type si nécessaire pour vérifier le type du résultat.
2 * 5
2 + 1.5
2.0 * 4
'2.0' * 4
'2.0' * 4.0
4 / 2
4.0 / 2
5 / 2
5 % 2
5 // 2
int(4.0) / 2
str(4) / 2
'toto' + str(4)
float(4) * 2
int(str(4) * 2)
'toto' + 'titi'
int('toto') + 'titi'
int(2.0) * 4
'toto' * str(4)
int('1.25')
III Variables et affectations¶
Une variable est un nom servant à désigner une valeur
- Une variable est remplacée par sa valeur dans les calculs
- Seules les opérations du type de la valeur sont permises
L'affectation est le fait de lier une valeur à une variable
- Syntaxe :
nom =expression
Attention : Ce n'est pas du tout le = des mathématiques, il faut le lire comme "prend la valeur"
x = 3
y ='USPN'
z = x + 2
print(x)
print(y)
print(z)
3 USPN 5 UPSN
- On peut réaffecter une variable (même une valeur d'un type différent)
print(x)
x = 'USPN'
print(x)
- On ne peut utiliser une variable que si elle a été préalablement définie !
print(foo)
x = 40 + 2
print(x)
- Calcul du membre droit (ici
42) et stockage dans la mémoire
- Création du nom
x(sauf si déjà créé)
- Création du lien entre variable et valeur

Deuxième exemple : y = x¶
y = x
print(x, y)
- Calcul du membre droit après remplacement de chaque variable par la valeur associée (ici
xremplacé par42)
- Création du nom
y(sauf si déjà créé)
- Création du lien entre
yet42
Troisième exemple : x = x + 1¶
x = x + 1
print(x)
- Calcul du membre droit après remplacement de chaque variable par la valeur associée (ici
xremplacé par42, résultat :43)
- Nom
xdéjà existant, création du lien entrexet 43
Remarque : L'instruction x = x + 1 peut aussi s'écrire x += 1. De même, x *= 2 est une version rapide de x = x * 2.
x += 1
print(x)
Dernier exemple : x = -6.5¶
x = -6.5
print(x)

Quelques points de détail :
- On peut réaffecter une variable avec une valeur de type différent (comme dans le dernier exemple)
- En cas de réaffectation d'une variable, le lien précédent est perdu.
- Si aucun autre lien n'existe vers la valeur précédente, celle-ci est "détruite" par le système de ramasse-miette (garbage collector)
Vérifier vos connaissances¶
A ce stade, vous devez être capable :
- d'expliquer ce qu'est une variable à quelqu'un ;
- d'expliquer ce qu'est l'opération d'affectation d'une variable ;
- dessiner l'état de la mémoire à l'issue d'une suite d'intructions simples.
Exercice 3 : Etat de la mémoire après une suite d'instruction¶
Dessiner l'état de la mémoire à l'issue des instructions suivantes :
x = 2
y = 3
x += y
y *= 2
Que vaut alors xet y ?
Nommage des variables¶
Règles de nommage des variables :
- Commencent par une lettre, suivie de lettres et de chiffres
- Le caractère underscore
'_'est considéré comme une lettre - Éviter les caractères spéciaux (accents, cédille, etc.)
- Les mots réservés (ou mots-clés) de Python sont interdits
- Il y a aussi des conventions (vues plus tard)
Exemples : _ex2 Ex2mpl1
Contre-exemple : 2014mlv
Mots-clés et autres mots réservés¶
Les mots suivants sont réservés pour le langage :
and as assert break class continue
def del elif else except finally
for from global if import in
is lambda nonlocal not or pass
raise return try while with yield
True False None
Au passage :
- Tout ce qui se trouve après un caractère
#est un commentaire - Mettre des commentaires dans le code est un bon moyen de pouvoir le reprendre facilement
Vérifier vos connaissances¶
A ce stade, vous devez être capable :
- de choisir un nom de variable correct et signifiant.
Exercice 4 : nommage de variables¶
Indiquer parmi les mots suivants ceux qui ne sont pas des noms valides pour une variable :
bonjour Hi! au revoir oui
Ciao NON byeBye7 6hello6
abc def 6hello6 _upem_
good_morning __repr__ good-afternoon f()
IV Lecture et affichage¶
Fonction de saisie : x = input("Veuillez rentrer ...")
- L'utilisateur tape une ligne au clavier
- La ligne est stockée sous forme de chaîne de caractères (
str) - Cette valeur peut ensuite être affectée à une variable (ici
x) - On peut aussi omettre le message d'invite pour l'utilisateur, mais cela devient moins convivial
Fonction d'affichage : print(x)
- Affiche dans le terminal la chaîne de caractères associée à
x - On peut afficher plusieurs valeurs d'un coup en les séparant par des virgules :
print(x, y, z, ...) - Appelle automatiquement la fonction
strsur chacun de ses arguments - S'il y a plusieurs arguments, insère automatiquement des espaces
- Passe automatiquement à la ligne
prenom = input('votre prenom : ')
prenom
print("Bonjour", prenom, "!")
Remarque : Il existe de nombreuses possibilités pour l'affichage de texte, consulter la documentation officielle pour plus de détails.
Vérifier vos connaissances¶
A ce stade, vous devez être capable :
- d'afficher n'importe qu'elle chaine de caractère
- stocker dans une variable une donnée entrée par l'utilisateur, en la convertissant correctement
Exercice 5 : lecture d'entiers¶
Commenter ligne par ligne le programme suivant et indiquer ce qui est
affiché si l'utilisateur saisit 4 :
r = input("Donnez moi un entier : ")
print(r + r)
n = int(r)
print(n + n)
Donnez moi un entier : 342 342342 684
Exercice 6 : affichage mixte¶
Corriger le programme suivant :
nombre = 3
print("j'ai" + nombre + "pommes")