Chapitre 1 - Variables, Types et Opérateurs
Définition
En informatique, les variables sont des éléments qui associent un nom (l'identifiant) à une valeur. La valeur peut être de nature différente : nombre, texte, etc. Les variables sont physiquement implantées dans la mémoire du système programmé (ordinateur, carte microprocesseur, etc.) et peuvent varier au cours de l'exécution du programme.
Règles pour les choix des noms des variables en Python
-
Les noms des variables commencent toujours par une lettre ou un tiret bas (_).
-
Les noms des variables contiennent uniquement des lettres, des chiffres, ou des tirets bas.
-
Les noms des variables sont sensibles à la casse.
-
Les noms de variables ne peuvent pas être des mots réservés en Python.
-
Il ne peut pas y avoir d'espaces dans les noms des variables.
-
Il est conseillé de choisir des noms de variables qui décrivent autant que possible ce à quoi correspondent les variables.
Affectation
Affecter une valeur à une variable revient à attribuer une valeur à une variable. En Python, on utilise le symbole =
pour affecter une valeur à une variable, on peut aussi inviter l'utilisateur à saisir une valeur pour une variable grâce à l'instruction input
.
temperature = 25
note_physique = input("Quelle est ta dernière note obtenue en physique ?")
Remarques
Il existe une différence importante entre ces deux façons d'affecter une variable.
Pour affecter plusieurs variables rapidement, on peut aussi écrire:
x,y,z=1,2,3
Différents types de variables
Dans ce cours, on s'intéressera surtout à des variables élémentaires. Nous reverrons de façon exhaustive au cours de l'année les variables de type list
et dict
c'est à dire les listes et les dictionnaires.
1 - Le type int
(integer : nombres entiers)
age=17
La fonction print
affiche la valeur de la variable :
print(age)
La fonction type()
retourne le type de la variable :
print(type(age))
int
est le type des nombres entiers.
Remarques
Si on commence une ligne avec le symbole #
, alors la ligne n'est pas interprétée en Python. On utilise les commentaires pour être lu, pour expliquer ce que l'on fait ou pour pouvoir facilement reprendre son travail. On peut aussi utiliser """ ou ''' pour écrire un commentaire sur plusieurs lignes.
#Ceci est un commentaire
age=age+1
print(age)
"""
Ceci
est
aussi
un commentaire
"""
age=age-3
print(age)
age=age*2
print(age)
a=6*3-20
print(a)
b=25
c=a+2*b
print(b,c)
L'opérateur //
donne la division entière (division euclidienne) :
d=450//360
print(d)
L'opérateur %
donne le reste de la division (opération modulo) :
reste=450%360
print(reste)
L'opérateur **
donne la puissance :
Mo=2**20
print(Mo)
2 - Le type float
(nombres en virgule flottante)
b=17.0 #le séparateur est un point ! (et pas une virgule).
print(b)
a=17
a==b
print(type(b))
c=14.0/3.0
print(c)
c=14.0//3.0 #C'est la division entière (le quotient dans la division euclidienne)
print(c)
Notation scientifique:
a=-1.784892e4
print(a)
Les fonctions mathématiques
Pour utiliser les fonctions mathématiques, il faut commencer par importer le module math
:
import math
La fonction dir(module)
retourne la liste des fonctions et données d'un module :
dir(math)
Pour appeler une fonction d'un module, la syntaxe est la suivante : module.fonction(arguments)
Pour accéder à une donnée d'un module : module.donnée
print(math.pi) # donnée pi du module math (nombre pi)
print(math.sin(math.pi/4.0)) # fonction sin() du module math (sinus)
print(math.sqrt(2.0)) # fonction sqrt() du module math (racine carrée)
print(math.sqrt(-5.0))
print(math.exp(-3.0)) # fonction exp() du module math
print(math.log(math.e)) # fonction log() du module math (logarithme népérien)
3 - Le type str
(string : chaîne de caractères)
nom = 'Dupont' # entre apostrophes
print(nom)
print(type(nom))
prenom = "Pierre" # on peut aussi utiliser les guillemets
print(prenom)
print(nom,prenom) # ne pas oublier la virgule
La concaténation désigne la mise bout à bout de plusieurs chaînes de caractères.
La concaténation utilise l'opérateur +
.
chaine = nom + prenom # concaténation de deux chaînes de caractères
print(chaine)
chaine = prenom + nom # concaténation de deux chaînes de caractères
print(chaine)
chaine=prenom+' '+nom
print(chaine)
chaine = chaine + ' 18 ans' # en plus court : chaine += '18 ans'
print(chaine)
La fonction len()
retourne la longueur (length) de la chaîne de caractères :
print(len(chaine))
print(chaine[0]) # premier caractère (indice 0)
print(chaine[1]) # deuxième caractère (indice 1)
print(chaine[1:4])
print(chaine[2:])
print(chaine[-1]) # dernier caractère (indice -1)
chaine='Aujourd'hui'
chaine = "Aujourd'hui"
print(chaine)
La séquence d'échappement \n
représente un saut ligne :
chaine = 'Première ligne\nDeuxième ligne'
print(chaine)
Plus simplement (ou pas), on peut utiliser les triples guillements (ou les triples apostrophes) pour encadrer une chaîne définie sur plusieurs lignes:
chaine="""Première ligne
Deuxième ligne"""
print(chaine)
On ne peut pas mélanger les serviettes et les torchons (ici type str
et
type int
) :
chaine='17.45'
print(type(chaine))
print(type(float(chaine)))
chaine=chaine+'2'
print(chaine)
La fonction float()
permet de convertir un type str en type float.
nombre = float(chaine)
print(nombre)
print(type(nombre))
nombre = nombre + 2 # en plus court : nombre += 2
print(nombre)
La fonction input()
lance une invite de commande (en anglais : prompt
) pour saisir une chaîne de caractères.
# saisir une chaîne de caractères et valider avec la touche Enter
chaine = input("Entrer un nombre : ")
print(chaine)
print(type(chaine))
nombre = float(chaine) # conversion de type
print(nombre**2)
4 - Le type list
(liste)
Une liste est une structure de données. Le premier élément d'une liste possède l'indice (l'index) 0. Dans une liste, on peut avoir des éléments de plusieurs types.
Ici, la liste infoperso
contient 5 éléments de types str
, str
, int
, float
et float
:
infoperso = ['Pierre' , 'Dupont' , 17 , 1.75 , 72.5]
print(type(infoperso))
print(infoperso)
print('Prénom : ',infoperso[0]) # premier élément (indice 0)
print('Age : ',infoperso[2]) # le troisième élément a l'indice 2
print('Taille : ',infoperso[3]) # le quatrième élément a l'indice 3
La fonction range()
crée une liste d'entiers régulièrement espacés :
maliste = range(10)
print(maliste)
print(type(maliste))
maliste = range(1,10,2) # range(début,fin non comprise,intervalle)
print(list(maliste))
print(maliste[2])
On peut créer une liste de listes, qui s'apparente à un tableau à 2 dimensions (ligne, colonne) :
0 | 1 | 2 |
---|---|---|
10 | 11 | 12 |
20 | 21 | 22 |
maliste = [[0,1,2],[10,11,12],[20,21,22]]
print(maliste[0])
print(maliste[0][0])
print(maliste[2][1]) # élément à la troisième ligne et deuxième colonne
maliste[2][1] = 69 # nouvelle affectation
print(maliste)
5 - Le type bool
(booléen)
Deux valeurs sont possibles : True
et False
a = True
print(type(a))
Les opérateurs de comparaison :
Opérateur | Signification | Remarque |
---|---|---|
< | strictement inférieur | |
<= | inférieur ou égal | |
> | supérieur | |
>= | supérieur ou égal | |
== | égal | Attention : deux signes == |
!= | différent | |
is | identique | Deux conditions: égal et même type |
is not | non identique |
a=12
b=12.0
a==b
a is b
b=10
print(b>8)
print(b==5)
print(b!=10)
print(0<=b<=20)
Les opérateurs logiques : and
, or
, not
.
note=13
mentionab = note>=12.0 and note<14.0 # ou bien : mentionab = 12.0 <= note < 14.0
print(mentionab)
print(not mentionab)
print(note==20.0 or note==0.0)
L'opérateur in
s'utilise avec des chaînes (type str
) ou des listes (type list
) :
chaine = 'Bonsoir'
# la sous-chaîne 'soir' fait-elle partie de la chaîne 'Bonsoir' ?
a = 'soir' in chaine
print(a)
print('b' in chaine)
maliste = [4,8,15]
# le nombre entier 9 est-il dans la liste ?
print(9 in maliste)
print(8 in maliste)
print(14 not in maliste)
6 - Le type dict
(dictionnaire)
Un dictionnaire stocke des données sous la forme de couples clé - valeur. Une clé est unique et n'est pas nécessairement un entier (comme c'est le cas de l'indice d'une liste).
moyenne = {'math':12.5,'anglais':15.8} # entre accolades
print(type(moyenne))
print(moyenne['anglais'])
print(moyenne)
moyenne['sport']=11.0
print(moyenne)
7 - Autres types
Nous avons vu (rapidement) les types les plus courants. Il en existe bien d'autres :
long
(nombres entiers de longueur quelconque, par exemple 4284961775562012536954159102L)complex
(nombres complexes, par exemple1+2.5j
)tuple
(structure de données)set
(structure de données)file
(fichiers)- ...
Exercices
Exercice 1.1 ☆
Afficher la taille en octets et en bits d'un fichier de 536 ko.
On donne : 1 ko (1 kilooctet) = \(2^{10}\) octets !!!
1 octet = 1 byte = 8 bits
Exercice 1.2 ☆
Proposer un code qui permet d'échanger les valeurs des variables de noms a
et b
.
Exercice 1.3 ★
Le numéro de sécurité sociale est constitué de 13 chiffres auquel s'ajoute la clé de contrôle (2 chiffres).
Exemple : 1 89 11 26 108 268 **
La clé de contrôle est calculée par la formule : 97 - (numéro de sécurité sociale modulo 97)
Retrouver la clé de contrôle du numéro de sécurité sociale donné ci-dessus. Quel est l'intérêt de la clé de contrôle ?
Exercice 1.4 ★
Afficher la valeur numérique de la racine carrée de (4,63 - 15/16)
Comparer avec votre calculette.
Exercice 1.5 ★
À partir des deux variables Prenom
et Nom
, afficher les initiales (par exemple LM pour Léa Martin).
Modifier votre script (=programme) afin d'afficher la dernière lettre du Prenom
et la dernière lettre du Nom
.
Exercice 1.6 ★☆
L'identifiant d'accès au réseau du lycée est construit de la manière suivante : initiale du prénom puis les 8 premiers caractères du nom (le tout en minuscule). (Vous pouvez bien sûr chercher en ligne comment faire pour "minusculiser" !)
Exemple : Alexandre Lecouturier → alecoutur
A partir des deux variables Prenom et Nom, construire l'identifiant.
Exercice 1.7 ★★★
On donne un extrait des logins d'accès au réseau du lycée :
admin pinkzup37
lmartin sloub6074
glahlou gplgnu6074
-
Créer une variable de type
dict
qui contient les couples identifiant - mot de passe ci-dessus. -
La saisie du login fournit deux variables Identifiant et Motdepasse: une pour l'identifiant et l'autre pour le mot de passe.
Construire une variable booléenne qui donne
True
en cas d'identification correcte, etFalse
dans le cas contraire.Exemples
lmartin sloub6074 →
True
lmartin sloub7074 →
False
martin sloub6074 →
False
(ce cas est plus compliqué à traiter)