Chapitre 1 Types de Variables
1.1 Activité 1: float et int
Dans une console Python, saisie les entrées suivantes:
= 3
nombre_entier = 3.14
nombre_flottant type(nombre_entier)
type(nombre_flottant)
= nombre_entier * 2
double = nombre_entier + nombre_flottant
somme
double somme
- Quel est le type de la variable
double
. Vérifie en utilisant l’instructiontype(double)
. - Quel est le type de la variable
somme
. - Quelle est l’erreur commise par Python lors du calcul de la somme ? Propose une explication.
1.2 Activité 2: Divisions et modulo
Il existe deux opérations divisions en Python:
La division entière
//
La division habituelle:
/
Saisie dans la console Python les calculs suivants:
16 / 5
## 3.2
16 // 5
## 3
16 % 5
## 1
- Réécrire le code précédent mais en utilisant des variables pour stocker 16 et 5 ainsi que les résultats des calculs.
- Quelle différence y a-t-il entre les deux divisions ?
- Quelle opération permet d’obtenir le quotient entier de la division ?
L’opération %
s’appelle modulo, elle retourne le reste de la division. Puisque \(16= 3\times 5 + 1\) on a 16//5 = 3
et 16%5 = 1
.
- Vérifie dans la console que le modulo d’un entier pair vaut toujours 0 et que le modulo d’un entier impaire vaut 1. C’est un moyen de tester rapidement si un entier est pair ou non.
- Un sac content 257 popcorns, calcule avec la console Python comment répartir les popcorns entre 3 personnes. Les popcorns restant seront pour le chien. Combien Médor reçoit-il de popcorn ?
1.3 Activité 3: Chaînes
Objectifs: type chaine, concaténation, conversion de type, affichage
Les chaînes sont un type de variable pouvant contenir: un caractère, un mot, un texte.
= "Hello world !" ma_chaine
- Vérifie avec l’instruction
type
le type de la variablema_chaine
.
= "Je"
a = " vois"
b = 3
nb = " pommes dans cet arbre." c
- Ajoute les chaînes a et b. Quel résultat obtiens-tu ? On dit que les chaînes a et b ont été
concaténées
. - Stocke le résultat de
a+b
dans une variablechaine_1
. - Essaye d’ajouter
chaine_1
ànb
. Relève le message d’erreur qui apparaît. Explique cette erreur.
L’opération +
n’est pas la même entre 2 chaînes et 2 nombres même si on utilise le même symbole + dans le code.
- Saisie le code suivant:
= str(nb)
chaine_nb type(chaine_nb)
Explique à quoi sert str()
- Complète le programme pour que
message
contienne la chaîne: “Je vois 3 pommes dans cet arbre”
= "Je vois "
a = 3
nb = " pommes dans cet arbre"
c = ...
nombre = a + nombre + c message
1.4 Activité 4: Affichage de chaines
Découverte
Jusqu’ici pour connaître le contenu d’une variable, on a tappé son nom dans la console puis appuyer sur entrée. On peut aussi utiliser une instruction pour afficher dans la console le contenu d’une variable ou une chaine de caractère.
- Saisie dans la console python le code suivant:
= "bonjour"
c1 = ' le monde !'
c2 print('hello')
print(c1 + c2)
- Détaille ligne à ligne l’exécution de ce script.
- Modifie la dernière ligne du script afin d’affiche:
bonjour bonjour le monde !
fstrings sont des chaînes de caractère plus complexes mais très utiles pour afficher des messages contenant des informations variables.
- Saisie dans la console python le code suivant:
= "M.DENIS"
prof = "NSI"
matiere = 19
nb_eleve = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de première."
msg print(msg)
- Détaille ligne à ligne l’exécution de ce script.
- Modifie ce code pour afficher M.MARTIN enseigne la Mathématique a 35 élèves de première.
- Ajoute une nouvelle variable
niveau
qui contient la chaine “terminale” afin d’afficher:M.MARTIN enseigne la Mathématique a 35 élèves de terminale.
Mise en forme de l’affichage des nombres
Les fstrings permettent de mettre en forme l’affichage des nombres. Voyons la syntaxe:
f ' <texte> { <expression/variable> : <format> } <texte> ... '
- le format s’écrit selon:
[alignement][signe][largeur][groupage][.précision][type]
- Saisie le code suivant:
= 3.1415926
n1 = 6358
n2 = - 123.0034
n3 print(f'nombre 1 {n1 : <10_.2f} nombre 2 {n2 : <10_.3e}')
- En utilisant la documentation ci-dessous, détaille et justifie l’affichage du programme ci-dessus.
Documentation
- alignement: détermine ou le nombre est aligné dans sa zone
- “>” aligne à droite
- “<” aligne à gauche
- “^” centré
- “=” aligne le signe à gauche et le nombre à droite
- signe: détermine l’affichage du signe
- “+” indique que le signe + doit être affiché ainsi que le -
- “-“ indique que le signe - doit être affiché (par defaut)
- “ “ n’affiche pas le + mais insére un espace à la place
- largeur : détermine la place qui doit être réservée pour l’affichage du nombre
- groupage: détermine le symbole de séparation tous les 3 chiffres
- “_”
- “,”
- précision : détermine le nombre de chiffres après la virgule
- type: détermine le mode d’affichage
- “e” ou “E” notation scientifique
- “f” ou “F” affichage classique
Modifie le code précédent pour afficher dans un espace de 10 caractères, aligné à gauche, n3 en écriture scientifique avec 3 chiffres derrière la virgule.
On veut calculer le poids d’un humain de
m=50
kg sur la Terre et sur la Lune. \[F_{Terre}=G\times \frac{m\times M_{Terre}}{r^2}\] Complète le programme suivant pour qu’il affiche
Le poids d un homme de 50 kg vaut sur la Terre 490.0 N.
Le poids d un homme de 50 kg vaut sur la Lune 6.2 N.
= 6.67e-11
G = 5.98e24
M_terre = 7.6e22
M_lune = 50
m = 6380e3 #rayon de la Terre
r_T = 1737e3 #rayon de la Lune
r_L = G*m*M_terre/r_T**2 #Calcul du poids sur Terre
F_T = .. à compléter ...
F_L
print(f'Le poids d un homme de { à compléter} kg vaut sur la Terre {F_T : <10...compléter...} N.')
print(...Compléter...)
1.5 Corrigés des Activités
1.5.1 Activité 1 corrigé
- double est une variable de type flottant: python renvoie
float
après exécution detype(double)
dans la console. - Lorsque l’on addition un float avec un int le résultat doit pouvoir contenir la partir décimal du float. C’est pourquoi somme est du type float.
- Python affiche que 6 + 3.14 = 6.140000000000001, il commet une erreur de 0.000000000000001. C’est peu mais c’est une erreur qui risque de se cumuler avec d’autres par la suite. Seul les nombres entiers sont exacts en python.
1.5.2 Activité 2: Divisions et modulo correction
16 / 5
## 3.2
16 // 5
## 3
16 % 5
## 1
= 16
a = 5
b = a / b
quotient = a // b
quotient_entier = a % b reste
/
calcul le quotient décimal//
renvoie la valeur entière du quotient.
# NB de popcorns pour chaque personne
= 257
popcorns = 3
nb_personnes // nb_personnes
popcorns # Pour Médor
## 85
% nb_personnes popcorns
## 2
1.5.3 Activité 3: Chaînes correction
Objectifs: type chaine, concaténation, conversion de type, affichage
Les chaînes sont un type de variable pouvant contenir: un caractère, un mot, un texte.
- Vérifie avec l’instruction
type
le type de la variablema_chaine
.
= "Hello world !"
ma_chaine type(ma_chaine)
## <class 'str'>
- Ajoute les chaînes a et b. Quel résultat obtiens-tu ? On dit que les chaînes a et b ont été
concaténées
.
= "Je"
a = " vois"
b +b a
## 'Je vois'
- Stocke le résultat de
a+b
dans une variablechaine_1
.
= "Je"
a = " vois"
b = 3
nb = a + b
chaine_1 chaine_1
## 'Je vois'
- Essaye d’ajouter
chaine_1
ànb
. Relève le message d’erreur qui apparaît. Explique cette erreur.
= "Je"
a = " vois"
b = 3
nb = a + b
chaine_1 + nb chaine_1
Explication chaine_1
et nb
sont deux variables qui contiennent des informations de type différents. On ne peut additionner que des données de même type. On peut additionner deux entiers, un flottant avec un entier ou encore deux chaines mais pas une chaine et un entier.
- Saisie le code suivant:
= str(nb)
chaine_nb type(chaine_nb)
## <class 'str'>
str()
permet de convertir le nombre nb
en une donnée de type chaine de caractère. La valeur 3 contenue dans nb est transformée en chaine de caractère “3.” Il est alors possible de concaténé “3” avec une autre chaine.
- Complète le programme pour que
message
contienne la chaîne: “Je vois 3 pommes dans cet arbre”
= "Je vois "
a = 3
nb = " pommes dans cet arbre"
c = str(nb)
nombre = a + nombre + c
message message
## 'Je vois 3 pommes dans cet arbre'
1.5.4 Activité 4: fstring correction
Découverte
= "bonjour" #affectation de "bonjour" à la variable c1
c1 = ' le monde !' #affectation de " le monde !" à la variable c2
c2 print('hello') #affiche le message hello
## hello
print(c1 + c2) # affiche la valeur de c1 + c2 c est a dire bonjour le monde
## bonjour le monde !
- On ajoute " " entre deux c1 pour obtenir l’espace entre les deux bonjour.
print(c1+ " " + c1 + c2)
## bonjour bonjour le monde !
fstrings
- msg est une
fstring
. Entre accolade on trouve le nom des variables dont on veut afficher le contenu.
= "M.DENIS"
prof = "NSI"
matiere = 19
nb_eleve = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de première."
msg print(msg)
## M.DENIS enseigne la NSI a 19 élèves de première.
- Détaille ligne à ligne l’exécution de ce script.
- Modifie ce code pour afficher M.MARTIN enseigne la Mathématique a 35 élèves de première.
= "M.MARTN"
prof = "Mathématique"
matiere = 35
nb_eleve = "terminale"
niveau = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de première."
msg print(msg)
## M.MARTN enseigne la Mathématique a 35 élèves de première.
- Ajoute une nouvelle variable
niveau
qui contient la chaine “terminale” afin d’afficher:M.MARTIN enseigne la Mathématique a 35 élèves de terminale.
= "M.MARTN"
prof = "Mathématique"
matiere = 35
nb_eleve = "terminale"
niveau = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de {niveau}."
msg print(msg)
## M.MARTN enseigne la Mathématique a 35 élèves de terminale.
Mise en forme de l’affichage des nombres
- Saisie le code suivant:
= 3.1415926
n1 = 6358
n2 = - 123.0034
n3 print(f'nombre 1 {n1 : <10_.2f} nombre 2 {n2 : <10_.3e}')
## nombre 1 3.14 nombre 2 6.358e+03
- n1 affiche avec alignement à gauche
<
et sur10
caractères le caractère_
pour séparer les milliers si besoin et.
comme virgule. On affiche2
chiffres après la virgule en notation classique (décimale). - n2 idem que n1 mais en notation scientifique avec 3 chiffres derrière la virgule.
- Modifie le code précédent pour afficher dans un espace de 10 caractères, aligné à gauche, n3 en écriture scientifique avec 3 chiffres derrière la virgule.
print(f"nombre 3 {n3 : <10_.3e}")
## nombre 3 -1.230e+02
= 6.67e-11
G = 5.98e24
M_terre = 7.6e22
M_lune = 50
m = 6380e3
r = G*m*M_terre/r**2
F_T = G*m*M_lune/r**2
F_L
print(f'Le poids d un homme de {m} kg vaut sur la Terre {F_T : <10_.1f} N.')
print(f'Le poids d un homme de {m} kg vaut sur la Lune {F_L : <10_.1f} N.')