TP1 - Types primitifs et listes ¶
0. Avant de commencer¶
Python¶
Python est un langage interprété, de haut niveau et orienté objet !
Un langage interprété est directement exécuté par l'interpréteur, contrairement à un langage compilé qui est traduit par un compilateur avant de pouvoir être exécuté par la machine.
Un langage de haut niveau se rapproche du langage naturel, contrairement à un langage de bas niveau comme l'assembleur qui se rapproche du langage machine.
Un langage orienté objet se base sur des classes qui permettent de simplifier son utilisation.
Ce charabia n'en sera plus à la fin de l'année...
IDLE¶
IDLE est un environnement de développement pour Python qui permet d'utiliser :
- le mode interactif qui consiste en un dialogue avec l'interpréteur
- le mode programme qui consiste à faire exécuter, par l'interpréteur, un programme dans un fichier source
Nous serons amenés à utiliser cet environnement dans l'année...
Jupyter Notebook¶
Jupyter Notebook est un autre environnement de développement pour Python qui permet de combiner dans le même document :
- du texte en markdown
- des formules en latex
- du code en Python
Nous privilégierons cet environnement pour ses capacités de partage et d'apprentissage.
1. Les types primitifs¶
Les booléens¶
Les booléens de type bool ont deux valeurs possibles : True et False.
Les opérateurs de comparaison retournent des booléens
# Une ligne débutée par un hashtag est un commentaire (non exécuté)
# L'égalité
1 == 1
# La différence
1 != 2
# L'inégalité stricte
1 > 2
# L'inégalité large
1 <= 1
On peut utiliser les opérateurs logiques :
- la négation not
- la conjonction and
- la disjonction or
- le OU EXCLUSIF ^
not(True)
True and False
True or False
(1 <= 2) == (1<2 or 1==2)
Les entiers¶
Les entiers de type int représentent les entiers relatifs.
On peut utiliser les opérations élémentaires :
- l'addition +
- la soustraction -
- la multiplication *
- la division /
# La priorité des opérations est usuelle
2+5*(10-2)
# Le résultat est bien un entier
type(2+5*(10-2))
# Observons la division (décimale)
(2+5*(10-2))/7
# Attention, la division ne fournit pas un entier (aviez-vous remarqué le .0 ?)
type((2+5*(10-2))/7)
# On peut obtenir le quotient de la division euclidienne (entière)
50//6
# Mais aussi le reste de la division euclidienne
50%6
Les décimaux¶
Les flottants de type float représentent les décimaux.
# Les réprésentations des nombres ne sont pas toujours exactes
1/3
# Attention, un réel non décimal (nombre infini de chiffres après la virgule) est approché par un décimal
type(1/3)
Les chaînes de caractères¶
Les chaînes de caractères de type str représentent les textes.
# Elles sont délimitées par " ou bien '
"Bienvenue au Gymnase d'Yverdon"
# Il s'agit bien d'une chaîne de caractères
type("Bienvenue au Gymnase d'Yverdon")
# Attention, les délimiteurs " ou ' doivent être différents des caractères de la chaîne
'Bienvenue au Gymnase d'Yverdon'
# A l'aide des [], on peut accéder à un caractère à partir de sa position dans la chaîne
# Attention, la première position est 0
"Gymnase"[0]
"Gymnase"[4]
# On peut aussi utiliser sa position en partant de la fin (la première position est alors -1)
"Gymnase"[-1]
"Gymnase"[-3]
# Pour accéder à une tranche de la chaîne, il suffit d'utiliser le sympbole : pour décrire les positions limites
# Attention, le premier est inclus, mais le dernier est exclus
"Gymnase"[1:5]
# Un même symbole représente des opérations différentes qui dépendent du type
"Bienvenue " + "au " + "Gymnase"
"PS" * 2
2. Les listes¶
Les listes de type list permettent de stocker plusieurs objets (pas forcément tous du même type).
Une chaîne de caractères peut être vue comme une liste contenant des caractères. On retrouve les manipulations présentées pour les chaînes de caractères.
# Elles sont délimitées par des crochets
# Les éléments sont séparés par une virgule
[False, 2, 2.0, "gyyv"]
# Il s'agit bien d'une liste
type([False, 2, 2.0, "gyyv"])
# Le troisième élément (en position 2) de la liste est un flottant
type([False, 2, 2.0, "gyyv"][2])
Dans le TP2, nous introduirons les notions de variable et d'affectation ce qui permettra de simplifier le code
liste = [False, 2, 2.0, "gyyv"]
liste[0]
# Devinez ce que donne l'instruction suivante, puis vérifiez en exécutant la cellule :
liste = [False, 2, 2.0, "gyyv"]
liste[-1][1:3] == "y"*2
# Calculez la moyenne des notes pondérée par les coefficents associés
# Nous traiterons cet exercice de manière de plus en plus performante au fil de l'année...
notes = [5, 4.5, 4.5, 5.5]
coeff = [2, 3, 2, 1]
Dans le TP2, nous verrons aussi :
- comment afficher le résultat d'un programme à l'aide de la fonction print()
- comment l'utilisateur peut interagir avec un programme grâce à la fonction input()