NSI Debuter Python V2
NSI Debuter Python V2
Débuter en Python
Première partie
Variables et affichages
Exercice 1. Éditeur et console sous Python
1.1 Lancer l’éditeur Python
On ouvre un éditeur Python :
1. avec un éditeur en ligne : www.repl.it
2. avec un éditeur comme Spyder : https ://pypi.org/project/spyder/
3. avec un éditeur comme Edupython : https ://edupython.tuxfamily.org/
Exercice 1.1
Lancer les instructions suivantes dans la console en appuyant sur Enter à chaque fin de ligne et regarder le résultat
Exercice 2.2
Lancer les instructions suivantes dans la console en appuyant sur Enter à chaque fin de ligne et regarder le résultat.
#
Le symbole # (se lit « croisillon », « hash » en anglais , symbole proche du « dièse ») permet de faire
figurer dans le corps du programme un commentaire qui ne sera pas pris en compte lors de son
exécution.
=
Le symbole = n’est pas celui de l’égalité mathématique, il n’est d’ailleurs pas symétrique. Il s’agit
d’affecter une valeur à une variable : on stocke une valeur numérique ou du texte dans une mémoire.
# Exemples
# Dans la console Python
>>> age=5
>>> type(age)
>>> taille=8.
>>>type(taille)
>>> poids=7.2
>>>type(poids)
>>> nom="khofi"
>>>type(nom)
>>> YeuxBleu=False
>>>type(YeuxBleu )
On peut afficher ces variables avec la fonction print() par exemple print(age) ou taper seulement ag e dans la console puis
Ent er
Exercice 3. Variables
On considère l’algorithme ci-dessus écrit sous Python. On considère l’algorithme ci-dessus écrit sous Python.
Compléter le tableau suivant et donner l’affichage de la Compléter le tableau suivant et donner l’affichage de la
ligne 4. ligne 5.
Vous pourrez ensuite tapez le programme sous Python pour Vous pourrez ensuite tapez le programme sous Python pour
vérifier vos résultats. vérifier vos résultats.
Ligne a b
Ligne a b L1 ··· ···
L1 ··· ··· L2 ··· ···
L2 ··· ··· L3 ··· ···
L3 ··· ··· L4 ··· ···
Remarque
Notez la différence entre les résultats.
— Dans l’exemple de gauche ci-dessus, les valeurs de a et b sont affectées simultanément en
utilisant les valeurs des lignes précédentes.
— En revanche dans celui de droite, les affectations sont successives, ce qui explique les résultats
différents.
Ainsi a, b = b, a échange les valeurs des deux variables a et b (sans utilisation d’une variable tam-
pon).
L1 Traitement : U ← 500
L2 N ←0
L3 U ← 0.7 ×U + 300
L4 N ← N +1
Ligne U N
L1 ··· ···
L2 ··· ···
L3 ··· ···
L4 ··· ···
1. La fonction définie ci-dessus renvoit l’image de la variable x par la fonction f définie par f (x) = x 2 − x + 41.
Tester le programme avec des entiers naturels en écrivant dans la console (à droite sur ripl.it ou votre logiciel IDLE)
directement f (1) ou f (2) par exemple.
2. On veut maintenant calculer les valeurs de la fonction f pour x entier variant de 0 à 19 par exemple.
Pour visualiser le résultat, écrire simplement valeursx et valeursf dans la console de droite.
Remarque
S’inspirant de l’écriture mathématique d’un ensemble en compréhension, par exemple
n o
x | x ∈ 0 ; 19
Python propose une syntaxe utile pour la création d’une liste en compréhension :
x for x in range(20)
£ ¤
Remarque
Les fonction mathématiques de base sont présentes dans le module math qu’il faut appeler au dé-
but du programme sous la forme import math.
Pour le nombre π écrire tout simplement : math.pi
Astuce : En écrivant from math import * au début on importe directement toutes les fonctions et
from math import pi on importe le nombre pi (enfin une valeur approchée !) ce qui permet d’écrire
directement pi (au lieu de math.pi)
Docstring
Les docstrings sont des chaines de caractères qui doivent être placées juste en dessous des défini-
tions de fonction et entre 3 apostrophes ’ ’ ’. On définit ainsi les variables de la fonction en entrée
(IN) et celles en sortie de la fontion (OUT). Les docstrings sont récupérables dynamiquement avec
la fonction help( ).
def f (x):
’ ’ ’ In : x décimal (un flottant)
Out : image de x par f definie par f (x) = x 2 + 1’ ’ ’
return x * * 2 + 1
def perimetre(r):
'''IN : r le rayon du cercle
OUT : une valeur approchée du périmètre du cercle de rayon r'''
return ...
def aire(r):
'''IN : r le rayon du disque
OUT : une valeur approchée de l'aire du disque de rayon r'''
return ...
def calc_TTC(prix_HT):
'''IN : prix HT d'un article
OUT : Prix TTC avec une TVA à 20%'''
return ...
def calc_HT(prix_TTC):
'''IN : Prix TTC avec une TVA à 20%
OUT : prix HT correspondant'''
return ...
def f(p,t):
'''IN : p prix initial,
t correspond à une évolution de t%
OUT : prix après evolution de t%'''
return ...
Remarque
Les fonction mathématiques de bases sont listées sur la fiche 1 Python
Compléments
Les instructions input et print ne sont plus à mettre en avant. Il est cependant très utile pour comprendre un programme
de faire des affichages de valeurs, parfois même dans une boucle afin de comprendre comment les variables sont modi-
fiées.
2. Quelques compléments.
Print("Texte",var)
— print() affiche la valeur numérique ou le texte qui suit.
— print(a, b) affiche à la suite sans passer à la ligne les éléments a et b.
— print("Texte",var) affiche le texte suivi de la valeur de la variable var.
— print(a,end="") affiche l’élément a et ne passe pas à la ligne : le prochain affichage conti-
nuera sur cette ligne.
— \n : permet de passer à la ligne dans l’affichage d’une même instruction print().
— \ : si une ligne de script est trop longue pour notre écran, on peut la casser avec un \ sans
que Python interprète cela comme un saut de ligne.
nom=input("question") et a=float(input("question"))
— var=input("question") :
La fonction input, dont la syntaxe est : nom=input(question) affiche une fenêtre où figure le
texte question et un cadre blanc dans lequel on entrera ce qui est demandé.
La réponse est alors affectée à la variable var qui est alors considérée comme une chaine de
caractère (un mot).
— a=float(input("question")) : si la valeur de a demandée est considérée comme un nombre flot-
tant,
— a=int(input("question")) : pour un entier.
Par exemple :
Deuxième partie
Instructions conditionnelles
Exercice 12. Si ... alors... sinon
if test
effectue (une fois) les instructions indentées qui suivent lorsque le test est vérifié.
def soleq(a,b):
'''IN : a et b flotants
OUT : solution éventuelle de l'équation ax=b'''
if a!=0: # si a est différent de 0
return b/a
Exécutez-le dans la console de droite avec deux valeurs de votre choix. Il permet la résolution de l’équation ax = b
avec un test pour savoir si a est bien différent de zéro.
La condition « a différent de zéro » s’écrit « a !=0 » . Aucun affichage n’est proposé ici.
2. Si on entre soleq(0,2) observer le résultat produit. Pour compléter, on va utiliser la structure « if ... else »
def soleq(a,b):
'''IN : ...
OUT : ...'''
if a!=0: # si a est différent de 0
return b/a
else:
return "pas de solution (ou une infinité)"
Aide
a % b : Renvoie le reste de la division euclidienne de a par b.
Par exemple 17 = 7 × 2 + 3 donc le reste de la division euclidienne de 17 par 7 est 3. Donc :
>>>17%7
3
def g(n):
'''IN : ...
OUT : ...'''
if ...
return ...
else:
return ...
Aide
if n = = int(n) : teste si la variable n est égale à sa partie entière, et donc si n est entier.
3. Facultatif : Vérifier votre graphique à l’aide du logiciel géogébra en utilisant l’instruction Si(condition,expression,sinon
condition,expression)
Aide
Des exemples sur la page d’aide de Geogebra https://wiki.geogebra.org/fr/Fonctions.
Exemple :
x + 1 : x > 5
définit la fonction f : x 7−→ f (x) = x 3 : 0 < x ≤ 5
1 − 5x : x ≤ 0
Aide
Indication : Utilisez le test : condition 1 and condition 2
1
2. Compléter alors les tableaux de valeurs suivants et
tracer Cg dans le repère ci-contre. Attention, bien −6 −5 −4 −3 −2 −1
−1 1 2 3 4 5 6 7 8 9
identifier les fonctions de référence (fonctions af- −2
fines, fonctions polynôme du second degré ...)
−3
−4
x −5 −3 −2 −1 −0, 5 −0.1 0 −5
g (x) −6
−7
−8
x 0.5 1 2 3 4 5 6
−9
g (x)
si · · · · · ·
½
············
f : n 7−→ f (n) =
············ si · · · · · ·
1. On considère le programme ci-dessous qui calcule l’image d’un nombre x par une fonction h définie par morceaux
sur R. Écrire l’expression de cette fonction en fonction des valeurs de x.
si · · · · · ·
············
h : x 7−→ h(x) = ············ si · · · · · ·
············ si · · · · · ·
def h(x):
'''IN : ...
OUT : ...'''
if x<0:
return 2*x+3
elif x<2: # Donc x >=0 et x<2 soit 0 <= x < 2
return 3-x
else: # cas où x >= 2
return x**2-3
2. Exécuter ce programme (dans la console) pour différentes valeurs de x puis tracer la courbe représentative de cette
fonction sur l’intervalle [−5 ; 5] dans un repère de votre choix. Vous pourrez utiliser le logiciel Geogébra.
Troisième partie
Structures itératives
Comme dans la plupart des langages, il existe en Python principalement deux manières de réaliser une boucle, c’est à dire
une répétition d’un bloc d’instructions. Comme pour l’instruction « if » , la partie à répéter sera indentée vers la droite, ce
qui permet en plus une bonne visibilité de l’algorithme.
# Dans l'éditeur
# On définit une liste L5
L5 = ['B' , 'o' , 'n' , 'j' , 'o' , 'u' , 'r' , '!']
def ex1(liste):
for i in liste :
print (i)
Remarque
end = "" permet de ne pas renvoyer à la ligne automatiquement après une instruction print().
Tester donc la même fonction avec print (i,end = "").
def ex2():
for n in range(10) :
print (n)
def ex3():
for n in range(7,13) :
print (n)
4. Modifiez le programme suivant pour qu’il affiche les entiers impairs de 5 à 17 puis créez une fonction ex5(A,B) qui
renvoie la liste des entiers de A à B de deux en deux.
def ex4():
Liste = [ i for i in range( 10 , 20 , 2 ) ]
return Liste
S(10) = 0 + 1 + · · · + 10 = · · · et S(15) = 0 + 1 + · · · + 15 = · · ·
2. On cherche une fonction qui renvoie la somme des entiers de 0 à n, où n est le paramètre. Compléter le programme
et vérifier que la valeur en sortie est correcte pour plusieurs valeurs de n.
def somme(n):
'''IN : entier n >=0
OUT : somme des entiers de 0 à n'''
s = 0 # on initialise s à 0
for i in range (...):
s= ...
return s
3. Il est souvent utile de compléter un tableau avec les valeurs des variables pour chaque itération . Faites-le ici
pour :
n = 10
i X 0 1 2 3 4 5 6 7 8 9 10
s 0
I (10) = 1 + 3 + 5 + 7 + 9 = · · ·
(b) Écrire un programme qui renvoie la somme des entiers impairs de 1 à n entier , où n > 0.
2. On cherche une fonction qui renvoie la somme des carrés entiers de 0 à n, où n est le paramètre. Compléter le
programme et vérifier que la valeur en sortie est correcte pour plusieurs valeurs de n.
def sommecarres(n):
'''IN : entier n >=0
OUT : somme des carrés des entiers de 0 à n'''
s = 0 # on initialise s à 0
...
3. Il est souvent utile de compléter un tableau avec les valeurs des variables pour chaque itération . Faites-le ici
pour :
n = 10 .
i X 0 1 2 3 4 5 6 7 8 9 10
s 0
2. Écrire un programme qui calcule la somme des inverses des carrés de 1 à n. Tester votre programme avec le calcul
précédent.
def inv(n):
'''IN : entier n >=0
OUT : somme des inverses des carrés des entiers de 1 à n'''
...
3. Calculer des valeurs pour n très grand et conjecturer la limite de cette somme.
π2
Comparer votre résultat au nombre ≈ 1, 64493416.
6
Pour calculer une valeur approchée de ce nombre, n’oubliez-pas d’importer le module math.
Remarque historique
C’est le génial mathématicien suisse Leonhard Euler (1707-1783) qui démontre le premier que cette somme
converge (on parle de série convergente). Il prouve ce merveilleux résultat :
1 1 1 1 π2
+ + + + · · · =
12 22 32 42 6
Une liste : L
Une liste est une suite d’éléments numérotés de même type dont le premier indice est 0. En Python,
une liste s’écrit entre crochets [... , ..., ..., ...] avec les éléments séparés par des virgules.
— Le premier élément de la liste est L[0], le 2e est L[1], ...
— Une liste peut être écrite de manière explicite : L = ["Lundi", "Mardi","Mercredi"]
— Sa longueur est donnée par l en(L).
— Si les éléments de la liste sont comparables, le max. est donné par max(L), le min. par min(L)
— L=[] permet de définir une liste vide.
— Si L est une liste, l’instruction L.append(x) va ajouter l’élémentt [x] à la liste L.
3. On veut écrire une fonction qui renvoie la la moyenne des termes d’une liste. Compléter-le et tester-le sur L1 et L2 .
4. Modifier-le pour que la fonction renvoie aussi la longueur de L, la valeur maximale et la minimale de la liste.
max(L) et min(L) :
max(L) et min(L) renvoie les valeurs maximale et minimale des éléments de la liste L.
Question Bonus
(a) Écrire une fonction maxi(liste) qui donne le maximum de la liste, sans utiliser la fonction
max.
(b) Écrire une fonction mini(liste) qui donne le minimum de la liste, sans utiliser la fonction
min.
while condition :
while condition : Exécute une instruction ou un bloc d’instructions tant que la condition est vérifiée.
(La boucle peut donc ne jamais être exécutée si, d’entrée la condition n’est pas remplie).
Aide
Un milliard se note : 1 000 000 000 = 109 , et s’écrit sous Python : 10 ∗ ∗9.
Dix milliards se note : 10 × 109 = 1010 , et s’écrit sous Python : 10 ∗ 10 ∗ ∗9
ou 10 ∗ ∗10.
1. Le programme suivant cherche à déterminer en quelle année, si cette évolution se poursuit, la population mondiale
dépassera 10 milliards et quelle sera cette population . Compléter puis exécuter cet algorithme dans la console afin
d’obtenir la réponse cherchée .
def f(seuil):
Pseudo Code
'''IN : le seuil
OUT : l'année et la population qui Fonction f(seuil)
dépasse le seuil''' population,annee ← 7577000000, 2018
population=7 577 000 000 Tant que · · · · · · Faire
annee=2018 annee ← · · · · · ·
while .... : population ← · · · · · ·
annee=... Fin Tant que
population=... Renvoyer (annee , population)
return (annee,population)
2. On cherche un affichage différent. Compléter le programme ci-dessous et lancer-le pour déterminer quand la po-
pulation mondiale dépassera les 20 milliards et qu’elle sera cette population.
(a,b)=f(...)
print("La population sera de ",....," milliards en ",...)
3. Modifier l’algorithme afin de renvoyer une valeurs arrondie au centième de la population, exprimée en milliards.
round(b , n)
round(b , n) va renvoyer l’arrondie de b à 10−n près.
Par exemple : round(2.2563 , 2) => 2.26
3. Applications
Exercice 24. La fonction factorielle
On note n! (se lit « factoriel n ») le nombre 1 × 2 × 3 × · · · × n, pour tout entier naturel n > 0. Par convention on définit :
(
0! = 1
n! = 1 × 2 × 3 × · · · × n , n ∈ N∗
Remarque historique
La notation factorielle est introduite par le mathématicien Christian KRAMP (1760-1826) en 1808 dans Éléments
d’arithmétique universelle (1808).
Aide
Factorielle : n! = 1 × 2 × 3 × ... × n .
Ce produit ce nomme factoriel n et se note n!.
Avec le module math, il existe un fonction en python qui le calcul directement : math.factorial(n).
Pour l’appeler, il faut charger le module math au début du programme (ligne 1),
la syntaxe est import math.
Chargez le module math en ligne 1 en écrivant import math puis vérifiez que math.factorial(n) donne bien le même
résultat que votre fonction pour quelques valeurs de n.
Quatrième partie
Les Listes
Exercice 25. TD sur les listes
Faire le TD :
— TD 1 - Recherche des occurrences sur des valeurs de type quelconque.
[v al 0 , v al 1 , ..., v al n−1 ] :
[v al 0 , v al 1 , ..., v al n−1 ] crée un tableau contenant n valeurs indicées de 0 à n–1. C’est un objet de
type list.
Une liste : L
Une liste est une suite d’éléments numérotés de même type dont le premier indice est 0. En Python,
une liste s’écrit entre crochets [... , ..., ..., ...] avec les éléments séparés par des virgules.
— Le premier élément de la liste est L[0], le 2e est L[1], ...
— Une liste peut être écrite de manière explicite : L = ["Lundi", "Mardi","Mercredi"]
— Sa longueur est donnée par l en(L).
— Si les éléments de la liste sont comparables, le max. est donné par max(L), le min. par min(L)
— L=[] permet de définir une liste vide.
— Si L est une liste, l’instruction L.append(x) va ajouter l’élémentt [x] à la liste L.
— Pour parcourir la liste L , deux solutions sont possibles :
— un parcours sur les indices :
for i in range(len(L)):
L[i] ...
— un parcours direct sur les éléments :
for X in L:
X ...
Remarquer que l’on peut faire parfois la même chose avec des chaînes de caractères : Essayer ces instructions (elles ne
fonctionnent pas toutes) :
Cinquième partie
Les Dictionnaires (facultatifs)
Cette section peut être omise ne première lecture. Nous y reviendrons.
{cl é1 : v al 1 , cl é2 : v al 2 , ..., cl én : v al n } :
{cl é1 : v al 1 , cl é2 : v al 2 , ..., cl én : v al n } est une liste dont la clé n’est pas l’indice de position mais qui
une valeur qui peut être de n’importe quel type.
- Un dictionnaire en python est donc une sorte de liste mais au lieu d’utiliser des index , on utilise
des clés alphanumériques.
- Dans un dictionnaire, les informations ne sont pas stockées dans un ordre précis. Pour accéder aux
valeurs, on utilise les clés.
Exemples :
>>> dico
{'nom': 'Turing', 'prenom': 'Alan', 'annee_naissance': 1912}
>>> dico
{'nom': 'Turing', 'prenom': 'Alan', 'annee_naissance': 1912}
>>> dico
{'nom': 'Turing', 'prenom': 'Alan', 'annee_naissance': 1912}
>>>dico.get("nom")
'Turing'
>>>dico.get("annee_naissance")
1912
>>>dico.get("poids") # si la clé n'est pas trouvée, rien ne s'affiche
25.3 .key() : Comment récupérer les clés d’un dictionnaire python par une boucle ?
Pour récupérer les clés on utilise la méthode keys .
25.4 .value() : Comment récupérer les valeurs d’un dictionnaire python par une boucle ?
Pour cela on utilise la méthode values .
25.5 .item() : Comment récupérer les clés et les valeurs d’un dictionnaire python par une boucle ?
Pour récupérer les clés et les valeurs en même temps, on utilise la méthode items qui retourne un tuple .
fiche = {"nom":"Wayne","prenom":"Bruce"}
for cle,valeur in fiche.items():
print cle, valeur