Aller au contenu

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

  1. Les noms des variables commencent toujours par une lettre ou un tiret bas (_).

  2. Les noms des variables contiennent uniquement des lettres, des chiffres, ou des tirets bas.

  3. Les noms des variables sont sensibles à la casse.

  4. Les noms de variables ne peuvent pas être des mots réservés en Python.

  5. Il ne peut pas y avoir d'espaces dans les noms des variables.

  6. 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 exemple 1+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 Prenomet 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

  1. Créer une variable de type dict qui contient les couples identifiant - mot de passe ci-dessus.

  2. 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, et False dans le cas contraire.

    Exemples

    lmartin sloub6074 → True

    lmartin sloub7074 → False

    martin sloub6074 → False (ce cas est plus compliqué à traiter)