NSI Introduction À La Programmation Avec Python
NSI Introduction À La Programmation Avec Python
NSI Introduction À La Programmation Avec Python
Appréciation Évaluation
Introduction à la
programmation en
langage python
TD 1:
Objectifs d'apprentissages:
A la 3n de ce cours, vous saurez:
Sortie[5]:
:
Initiation au langage Python
Cet algorithme est d'abord conçu dans notre langage. Un algorithme utilise deux
éléments essentiels : les variables (qui stockent l'information et qu'il faudra gérer
ou structurer) et les instructions (qui permettent de modi3er l'état des variables).
Il va donc falloir passer de notre langage à celui de l'ordinateur (langage machine
= bits). Pour cela on va écrire un programme dans un langage compréhensible
par l'homme mais qui peut être utilisé par un compilateur (un autre programme
qui véri3e qu'il n'y a pas de d'erreur de syntaxe, de type de variable...) et qui va
produire un nouveau programme appelé exécutable qui sera écrit en langage
machine.
:
Au lycée, vous allez apprendre l’un de ces langages : le langage Python. Vous
l’utiliserez dans diNérentes disciplines : Mathématiques, SNT, Physique-Chimie,
spécialité NSI notamment.
DiSérences collège/lycée
Python: pourquoi ?
Ceci est une section en langage naturel, écrit avec Markdown, un système
d’édition et de formatage de texte.
for i in range(0,4):
print("i =",i)
:
Ceci est une section en langage naturel écrite sans mise en forme. Elle peut être
modi3ée par vos soins mais ne comporte pas de lignes de code Python
exécutables. La cellule suivante est, quant à elle, une section qui cotient du code
en Python exécutable.
Entrée[ ]:
Entrée[36]: a=12
Pour exécuter une cellule de code, vous pouvez également cliquer sur le bouton
[Exécuter], ou encore utiliser le menu Cell>Run Cells. Remarque: Les cellules
Python exécutables de Jupyter Notebook se comportent comme si vous utilisiez
l'interpréteur intéractif de Python.
Entrée[37]: 10+7
Sortie[37]:
2. Variables
Tout simplement car les données qu’elle contient peuvent varier (au cours du
temps) : si un ami change de numéro de téléphone, vous êtes content de pouvoir
le modi3er. Alors, Les entrées = variables Pour construire un algorithme, nous
avons besoin de deux choses: Des variables et des instructions. Commençons par
dé3nir des variables. Ce sont nos entrées. Elles peuvent être assimilées à des
espaces mémoire dans l'ordinateur où l'on stocke des information. Elles seront
manipulées par les instructions.
Pour dé3nir une variable, il faut lui donner un nom. Evitez absolument les noms
d'instructions!!
Ex de variable:
rappel:
Les lignes commençant par In [ ] sont des lignes où il y aura du code Python. Pour
exécuter le code, sélectionner la cellule et valider avec SHIFT+Entrée. Exécuter
chaque ligne.
Les lignes In [ ] vides sont des lignes que vous devrez compléter.
:
Types de variables
Le type d’une variable est la nature de l’information qu’elle contient. Vous
conviendrez que l’heure de votre réveil et votre dernier SMS reçu n’ont pas la
même nature : le premier correspond à des nombres et le second à du texte.
Dans un premier temps, voici les trois types de base qui nous intéressent :
Activité 1
Question : Indiquez le type des variables (entier, hottant ou chaîne de
caractères) permettant de stocker sur votre smartphone les informations
suivantes :
Dans le langage Python, il y a des règles à respecter pour nommmer les variables.
Voici celles qui vous concernent :
Règle 1 : un nom ne peut contenir que des lettres (a-z, A-Z), des chiNres
(0 - 9) et le caractère _ (underscore).
Règle 2 : un nom ne peut pas commencer par un chiNre.
Règle 3 : les noms sont sensibles à la casse, cela signi3e qu’il y a une
distinction entre les minuscules et les majuscules : la variable nommée
snt est diNérente de la variable Snt .
(Règle 4) : il est préférable de toujours choisir un nom de variable
représentatif : par exemple, si vous voulez stocker le nom d’une
personne dans une variable, il est préférable de l’appeler nom plutôt
que x .
(Règle 5) : il est préférable de ne pas utiliser de caractères accentués
dans le nom d’une variable (nous n’entrerons pas dans le pourquoi du
comment).
Activité 2
Question 1 : Quels sont les noms de variables incorrects parmi ceux proposés
? Vous indiquerez pourquoi.
Votre réponse :
1. le nombre de filles de Seconde G : nbr_f_2ndG
2. le tarif d’un repas au self : prix_cantine
3. l’aire d’un triangle : aire_triangle
4. la note à un devoir d’anglais : note_angl
:
Valeurs des variables
Chaque variable possède une valeur qui est l’information qu’elle porte. Par
exemple,
Exemple
Le programme Python
note = 15
note = 15.5
prenom = "Louane"
permet de :
créer une variable note dont la valeur vaut 15, c'est donc une variable de
type entier ( int en Python)
puis de modi3er la valeur de la variable note qui vaut 15.5 à l'issue de la
deuxième ligne.
Important : on utilise le point ( . ) et non pas la virgule pour écrire des
nombres décimaux.
Dans ce cas, le type de la variable a changé : c'est devenu un Dottant
( float en Python).
et en3n de créer une variable prenom dont la valeur est la chaine de
caractères "Louane".
Important : On utilise les guillemets ( "" ) pour désigner les chaînes de
caractères.
note = 15
note = 15.5
prenom = "Louane"
:
À l'issue du programme précédent on peut évaluer la valeur de chaque variable
en exécutant les cellules ci-dessous : (si une erreur s'ajche, c'est sans doute que
vous avez oublié d'exécuter la cellule précédente)
Entrée[2]: note
Sortie[2]:
Entrée[3]: prenom
Sortie[3]:
On peut aussi voir le type d'une variable en utilisant la fonction type comme ci-
dessous :
Entrée[4]: type(note)
Sortie[4]:
Entrée[5]: type(prenom)
Sortie[5]:
Entrée[6]: note = 15
print(note)
note = 15.5
print(note)
prenom = "Louane"
print(prenom)
15
15.5
Louane
:
3. Opérations sur les variables de type
nombre ( int et float )
Nous nous contenterons ici de montrer quelques opérations possibles sur les
entiers et les hottants (on parle rapidement des chaînes de caractères en 3n de
document).
Addition a + b
Soustraction a - b
Multiplication a * b
Division a / b
Élever a à la puissance n a ** n
Opération Caractère
Addition +
Soustraction -
Multiplication *
Division /
Division entière //
Reste %
Puissance **
Sortie[1]:
Entrée[2]: 13 / 5
Sortie[2]:
Entrée[3]: 13 % 5
Sortie[3]:
print(e, f)
9 21
print(e, f)
4.5 10.8
age = 16
age = age + 5
print(f"Dans 5 ans, vous aurez {age} ans.")
a = 15
b = 10
c = a + b
d = c / 2
Votre réponse :
<class a 'int'>
<class b 'int'>
<class c 'int'>
<class d 'float'>
Entrée[10]: a = 15
b = 10
c = a + b
d = c / 2
Les sorties
Jusqu'à présent, on s'est contenté d'entrer des variables dans notre programme.
Mais, à la 3n, on aura peut-être besoin d'ajcher de nouveau ces variables ou de
nouvelles qui auront été traitées par les instructions.
Entrée[11]: print(d)
print (type(a))
print (type(b))
print (type(c))
print (type(d))
12.5
<class 'int'>
<class 'int'>
<class 'int'>
<class 'float'>
Entrée[35]: a = input()
print(a)
b = input("Entrez votre âge : ")
11
11
Entrez votre âge : 14
Entrée[21]: print(nom)
CC
Entrée[23]: age
Sortie[23]:
------------------------------------------------------------
---------------
TypeError Traceback (most re
cent call last)
/var/folders/s7/7v7j1z_n009bfwc1gr6wvy3m0000gn/T/ipykernel_9
08/630095058.py in <module>
1 nombre=input("Combien de baguettes désirez-vous ?")
#ici le code n'indique pas que la valeur tapé sera un chiffr
e il faut donc corriger cette ligne
----> 2 prix = nombre * 1.1
3 print("Vous avez à payer",prix,"euros.")
Il y a un problème car le nombre taper par l'utilisateur est considéré comme une
chaine de caractére (un texte en gros) et donc pas de calcul possible. Tester ce
programme maintenant. Que constatez-vous?
a = 15
b = 10
c = a + b
d = c / 2
Entrée[ ]:
4. À vous de jouer !
Activité 4
On considère le programme Python suivant :
a = 8
b = 3
a = a - 4
b = 2 * b
a = a + b
print(a)
Votre réponse :
17
Consigne : Cliquez sur le lien ci-dessus pour ouvrir l'éditeur de code puis
recopiez dans la fenêtre d'édition (celle de gauche) le programme de l'activité
précédente. Vous exécuterez ensuite le programme en cliquant sur le bouton
"Exécuter" et observerez bien que c'est dans la console (fenêtre de droite) que
s'ajche la valeur de la variable a .
:
Activité 6
On considère le programme de calcul suivant.
A prend la valeur 5
Multiplier A par 3
Soustraire 4 au résultat
Elever le résultat au carré
Ajcher le résultat
121
:
Activité 7
6.449999999999999
:
5. Opérations sur les chaînes de
caractères
Pour les chaînes de caractères c’est plus court car il n’y a que deux opérations
possibles :
Louane
LouLouLou
On ne peut pas concaténer une chaîne de caractères avec une valeur numérique
directement. Il faut au préalable transformer la valeur numérique en chaîne de
caractères au moyen de la fonction str() :
Entrée[33]: age = 25
début = "J'ai "
fin = " ans."
phrase = début + str(age) + fin
print(phrase)
J'ai 25 ans.
J'ai 21 ans.
Entrée[4]: len('Bonjour')
Sortie[4]:
Sortie[7]:
Entrée[8]: len('a\nb\nc')
Sortie[8]:
Remarque 1 : les espaces et les retours à la ligne sont comptés comme des
caractères, mais pas les caractères d'échappement
Remarque 2: Pour ajcher certains caractères spéciaux que l'on ne peut pas saisir
directement dans une chaîne, on utilise comme caractère d'échappement
l'antislash (backslash en anglais) \ :
\n : nouvelle ligne (aller à la ligne) \t : tabulation ' : apostrophe (utilisable dans une
chaîne qui est entre apostrophes) \ : antislash \
Bonjour
Ceci est un très long texte sur plusieurs lignes.
Je ne sais pas trop quoi raconter mais ce matin je me suis l
evé à l'aube.
Bonjour
Ceci est un très long texte sur plusieurs lignes.
Je ne sais pas trop quoi raconter mais ce matin je me suis l
evé à l'aube.
Remarques :
On utilise la même syntaxe pour les chaînes de caractères que pour les listes
(ou les tableaux en informatique) qui seront vues dans le prochain chapitre.
On ne peut pas modi3er une chaîne de caractères déjà existante. Il faut créer
une nouvelle chaîne à chaque fois qu'on souhaite apporter une modi3cation
à une chaîne. Ainsi, le code suivant provoque une erreur :
Entrée[9]: s="Bonjour"
print(s[0])
print(s[2])
B
n
------------------------------------------------------------
---------------
TypeError Traceback (most re
cent call last)
/var/folders/s7/7v7j1z_n009bfwc1gr6wvy3m0000gn/T/ipykernel_1
171/3115295765.py in <module>
1 mot = "mare"
----> 2 mot[1] = "u"
Entrée[11]: f= len(s)
print(f)
Entrée[12]: print(s[-1])
print(s[len(s)-1])
r
r
Entrée[13]: print(s[-1])
Entrée[14]: print(s[-4])
Exemple:
Entrée[ ]: 3<5
Entrée[ ]: 3>5
Entrée[ ]: 3==5
Entrée[25]: 3!=5
Sortie[25]:
Le type bool est utilisé pour les booléens. Un booléen peut prendre les valeurs
True ou False.
Entrée[17]: a = True
b = not(a)
𝑐1 𝑐2 𝑐1 and 𝑐2 𝑐1 or 𝑐2 not 𝑐1
Sortie[18]:
Sortie[19]:
and, del, from, not, while, as, elif, global, or, with, assert, else, if, pass, yield,
break, except, import, print, class, exec, in, raise, continue, qnally, is, return,
def, for, lambda, try
Sommaire
1. Les conditions
2. Les conditions multiples
:
Les conditions nous permettent de rendre nos programmes adaptatifs en leur
donnant la possibilité de se comporter diNéremment selon qu'une certaine
condition est réalisée ou pas.
1- Les conditions
**Structure conditionnelle de base : si ... alors ... sinon ...**
:
Cela correspond au pseudo-code suivant :
instructions A
Si condition vraie faire :
instructions B
Sinon
instructions C
instructions D
Symbole Signiqcation
== égal à
!= diNérent de
Bloc A
Si condition vraie faire :
Bloc B
Bloc C
Ainsi, si la condition est vraie, on eNectuera les blocs A-B-C.
Si la condition n'est pas vraie, on eNectuera les blocs A-C
Exercice : Réécrire le programme qui ajche la plus grande des deux valeurs
saisies par l'utilisateur, mais cette fois sans utiliser la clause else .
Pour éviter trop de blocs imbriqués, on dispose du mot clé elif contraction de
else et if .
if vacciné:
print("Vous pouvez entrer...")
else:
if testNégatif:
print("Vous pouvez entrer!")
else:
print("Vous ne pouvez pas entrer!")
if vacciné:
print("Vous pouvez entrer...")
elif testNégatif:
print("Vous pouvez entrer!")
else:
print("Vous ne pouvez pas entrer!")
Remarques :
element est une variable créée par le for , ce n'est pas à vous de
l'instancier. Elle prend successicement chacune des valeurs 3gurant dans la
sequence parcourue ;
la sequence parcourue peut être :
une séquence de nombres entiers générée par la fonction range (voir
ci-dessous)
:
une chaîne de caractères, un tuple, une liste, un dictionnaire (tout ceci
sera étudié cette année)
d'autres types de séquences que l'on n'évoquera pas ici
La fonction range
La fonction range() pour créer des séquences de nombres entiers :
Exemples :
0
1
2
3
4
Sortie[24]:
for i in range(36):
bloc_instructions
ou encore :
for i in range(1,37):
bloc_instructions
ou encore :
Lorsque la variable créée par le for n'a pas d'importance pour la boucle, plutôt
que de lui donner un nom, on peut la nommer _ (un underscore) pour marquer
le fait que l'on se moque du nom de cette variable :
for _ in range(36):
bloc_instructions
!!!
Si la variable de boucle est utilisée dans les instructions de la boucle for , les
bornes utilisées dans la fonction range sont souvent importantes.
!!!
Pour preuve, les deux programmes ci-dessous ne sont alors plus équivalents :
Entrée[29]: a = 2
for i in range(5): # i varie de 0 à 4
a = a + i
#print(a)
print(a)
12
Entrée[30]: a = 2
for i in range(3, 8): # i varie de 3 à 7
a = a + i
#print(a)
print(a)
27
En eNet, bien que dans les deux cas, l'instruction a = a + i est répétée 5 fois,
comme les valeurs de i sont diNérentes et que ces valeurs sont utilisées pour
évaluer la nouvelle valeur de a , alors la valeur 3nale de cette variable n'est pas la
même.
:
Q1 : Quelles sont les valeurs générées par la fonction range dans les trois
cas suivants ?
range(10)
range(2, 10)
range(2, 10, 3)
Voir la correction
print(list(range(1, 11)))
print(list(range(0)))
print(list(range(1, 0)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 5, 10, 15, 20, 25]
[0, 3, 6, 9]
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
[]
[]
while condition:
bloc_instructions
!!!
Entrée[35]:
nb = 1
stop = 5
while nb <= stop:
print(nb, nb**2)
nb += 1
1 1
2 4
3 9
4 16
5 25
Les fonctions
:
Dans un langage de programmation, on utilise ce qu'on appelle des fonctions.
Une fonction est un ensemble d'instructions qui peut recevoir des arguments et
qui peut renvoyer un résultat qui est souvent le contenu d'une ou plusieurs
variables.
Exemple :
lorsque nous allons executer le code cela ne fonctionnera pas, par ce qu' il
ne faut pas oublier d'appeller la fonction
Entrée[37]: addition(2, 5)
Sortie[37]:
:
L'instruction return
Elle permet de renvoyer une ou plusieurs valeurs calculées par la fonction.
Entrée[39]: fonction_debile(2, 5)
Sortie[39]:
Cela ne veut pas dire qu'on ne peut pas écrire plusieurs return dans une
fonction.
!!!
Par exemple, la fonction gagnant écrite un peu plus haut peut s'écrire de
manière équivalente comme suit :
Entrée[41]: gagnant(2, 3)
Sortie[41]:
Entrée[44]: addition_avec_print(2, 5)
addition_avec_print1(2, 5)
Sortie[44]:
Bien que cela donne l'impression d'être similaire, la distinction entre les deux est
primordiale !
!!!
En eNet, dans le cas du return , le résultat est renvoyé par la fonction (dans un
notebook on le voit car l'appel produit une sortie) ; tandis que le print ne fait
qu'ajcher le résultat.
Dans le premier cas, comme la valeur est renvoyée par la fonction, cette valeur
peut être réutilisée ailleurs dans le programme, ce qui est impossible si elle est
uniquement ajchée.
Entrée[46]: somme_et_produit(2, 5)
Sortie[46]:
:
Exercice : Ecrire une fonction estPrésent(lettre,message) qui renvoie
True ou False selon que la lettre est présente ou non dans le message.
Entrée[19]: # Version 1
def estPrésent(lettre,message):
résultat = False
for i in range(len(message)):
if message[i] == lettre:
résultat = True
return résultat
print(estPrésent('a','abracadabra'))
print(estPrésent('r','abracadabra'))
print(estPrésent('R','abracadabra'))
True
True
False
print(nbOccurences('a','abracadabra') == 5)
print(nbOccurences('A','abracadabra') == 0)
print(nbOccurences('a','abracadabra') )
print(nbOccurences('A','abracadabra'))
True
True
5
0
Entrée[ ]:
:
: