Chapitre 1 Types de Variables

1.1 Activité 1: float et int

Dans une console Python, saisie les entrées suivantes:

nombre_entier = 3 
nombre_flottant = 3.14
type(nombre_entier)
type(nombre_flottant)
double = nombre_entier * 2
somme = nombre_entier + nombre_flottant
double
somme
  1. Quel est le type de la variable double. Vérifie en utilisant l’instruction type(double).
  2. Quel est le type de la variable somme.
  3. 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:

  1. La division entière //

  2. La division habituelle: /

  3. Saisie dans la console Python les calculs suivants:

16 / 5
## 3.2
16 // 5
## 3
16 % 5
## 1
  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.
  2. Quelle différence y a-t-il entre les deux divisions ?
  3. 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.

  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.
  2. 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.

ma_chaine = "Hello world !"
  1. Vérifie avec l’instruction type le type de la variable ma_chaine.
a = "Je"
b = " vois"
nb = 3
c = " pommes dans cet arbre."
  1. 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.
  2. Stocke le résultat de a+b dans une variable chaine_1.
  3. 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.

  1. Saisie le code suivant:
chaine_nb = str(nb)
type(chaine_nb)

Explique à quoi sert str()

  1. Complète le programme pour que message contienne la chaîne: “Je vois 3 pommes dans cet arbre”
a = "Je vois "
nb = 3
c = " pommes dans cet arbre"
nombre = ...
message = a + nombre + c

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.

  1. Saisie dans la console python le code suivant:
c1 = "bonjour"
c2 = ' le monde !'
print('hello')
print(c1 + c2)
  1. Détaille ligne à ligne l’exécution de ce script.
  2. 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.

  1. Saisie dans la console python le code suivant:
prof = "M.DENIS"
matiere = "NSI"
nb_eleve = 19
msg = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de première."
print(msg)
  1. Détaille ligne à ligne l’exécution de ce script.
  2. Modifie ce code pour afficher M.MARTIN enseigne la Mathématique a 35 élèves de première.
  3. 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]
  1. Saisie le code suivant:
n1 = 3.1415926
n2 = 6358
n3 = - 123.0034
print(f'nombre 1 {n1 : <10_.2f} nombre 2 {n2 : <10_.3e}')
  1. 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
  1. 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.

  2. 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.
G = 6.67e-11
M_terre = 5.98e24
M_lune = 7.6e22
m = 50
r_T = 6380e3 #rayon de la Terre 
r_L = 1737e3 #rayon de la Lune 
F_T = G*m*M_terre/r_T**2 #Calcul du poids sur Terre
F_L = .. à compléter ... 

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é

  1. double est une variable de type flottant: python renvoie float après exécution de type(double) dans la console.
  2. 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.
  3. 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
a = 16
b = 5
quotient = a / b
quotient_entier = a // b
reste = a % b
  1. / calcul le quotient décimal
  2. // renvoie la valeur entière du quotient.
# NB de popcorns pour chaque personne
popcorns = 257
nb_personnes = 3
popcorns // nb_personnes
# Pour Médor
## 85
popcorns % nb_personnes
## 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.

  1. Vérifie avec l’instruction type le type de la variable ma_chaine.
ma_chaine = "Hello world !"
type(ma_chaine)
## <class 'str'>
  1. 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.
a = "Je"
b = " vois"
a+b
## 'Je vois'
  1. Stocke le résultat de a+b dans une variable chaine_1.
a = "Je"
b = " vois"
nb = 3
chaine_1 = a + b
chaine_1
## 'Je vois'
  1. Essaye d’ajouter chaine_1 à nb. Relève le message d’erreur qui apparaît. Explique cette erreur.
a = "Je"
b = " vois"
nb = 3
chaine_1 = a + b
chaine_1 + nb

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.

  1. Saisie le code suivant:
chaine_nb = str(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.

  1. Complète le programme pour que message contienne la chaîne: “Je vois 3 pommes dans cet arbre”
a = "Je vois "
nb = 3
c = " pommes dans cet arbre"
nombre = str(nb)
message = a + nombre + c
message
## 'Je vois 3 pommes dans cet arbre'

1.5.4 Activité 4: fstring correction

Découverte

c1 = "bonjour" #affectation de "bonjour" à la variable c1
c2 = ' le monde !' #affectation de " le monde !" à la variable 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 !
  1. On ajoute " " entre deux c1 pour obtenir l’espace entre les deux bonjour.
print(c1+ " " + c1 + c2)
## bonjour bonjour le monde !

fstrings

  1. msg est une fstring. Entre accolade on trouve le nom des variables dont on veut afficher le contenu.
prof = "M.DENIS"
matiere = "NSI"
nb_eleve = 19
msg = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de première." 
print(msg)
## M.DENIS enseigne la NSI a 19 élèves de première.
  1. Détaille ligne à ligne l’exécution de ce script.
  2. Modifie ce code pour afficher M.MARTIN enseigne la Mathématique a 35 élèves de première.
prof = "M.MARTN"
matiere = "Mathématique"
nb_eleve = 35
niveau = "terminale"
msg = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de première." 
print(msg)
## M.MARTN enseigne la Mathématique a 35 élèves de première.
  1. 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.
prof = "M.MARTN"
matiere = "Mathématique"
nb_eleve = 35
niveau = "terminale"
msg = f"{prof} enseigne la {matiere} a {nb_eleve} élèves de {niveau}." 
print(msg)
## M.MARTN enseigne la Mathématique a 35 élèves de terminale.

Mise en forme de l’affichage des nombres

  1. Saisie le code suivant:
n1 = 3.1415926 
n2 = 6358
n3 = - 123.0034
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 sur 10 caractères le caractère _ pour séparer les milliers si besoin et . comme virgule. On affiche 2 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.
  1. 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
G = 6.67e-11
M_terre = 5.98e24
M_lune = 7.6e22
m = 50
r = 6380e3
F_T = G*m*M_terre/r**2
F_L = G*m*M_lune/r**2

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.')