Algorithmique et programmation en PYTHON
Ce cours contient quelques approximations dans un souci de simplification. Il est destiné aux lycéens, et non pas aux informaticiens professionnels!Les Types de variables et l'Affectation de variables
Les types de variables standards à connaître sont:
Number (les Nombres), String (les Chaîne de caractères) et List (les Listes).
Un nombre peut, entre autres, être un int (un Entier relatif) ou un float (un nombre à écriture à virgule).
Affecter une valeur à une variable se fait en utilisant le signe =
Pour information, les listes sont au programme de première.
Exemple
en langage naturel
$U$ ← 10 (la variable U prend la valeur 10)
$V$ ← 1,414 (la variable V prend la valeur 1,414)
en PYTHON
U=10
V=1.414 Noter le . pour marquer la virgule
Ici, les variables U et V sont de type Number (ce sont des nombres).
Plus précisément, U est de type int (c'est un entier relatif).
V est de type float (c'est un nombre à virgule).
Exemple
en langage naturel
$t$ ← "bonjour" (la variable t prend la valeur 'bonjour')
en PYTHON
t="bonjour" On peut aussi noter 'bonjour'
Ici, la variable t est de type String (c'est une chaîne de caractères)
Exemple
Cet exemple manipule les listes, qui sont au programme de première.
en langage naturel
$L$ ← [1,5,12] (la variable L prend la valeur [1,5,12])
$M$ ← [37,"mix",L] (la variable M prend la valeur [37,'mix',[1,5,12]])
en PYTHON
L=[1,5,12]
M=[37,"mix",L]
Ici, les variables L et M sont de type List (ce sont des listes).
Remarquer qu'une liste peut contenir des types différents. Ici, la liste M contient un nombre, une chaîne de caractère, et une liste !
Les Procédures et les Fonctions
Une procédure est un bloc d'instructions destiné à être utilisé ultérieurement.
La syntaxe pour la définition d'une procédure est la suivante.
def nom de la procédure (liste de paramètres):
bloc d'instructions
Ne pas oublier les deux points après le nom de la procédure, et remarquer que le bloc d'instructions est indenté (décalé vers la droite).
Exemple
Considérons le programme de 3 lignes suivant.
1. def jesuispoli():
2. print("bonjour")
3. jesuispoli()
Après exécution, il s'affichera dans la console le texte bonjour.
On notera que la procédure jesuispoli() n'a pas de paramètre.
Exemple
Considérons le programme de 3 lignes suivant.
1. def jaffichelasomme(a,b):
2. print(a+b)
3. jaffichelasomme(2,3)
Après exécution, il s'affichera dans la console la valeur 5.
On notera que la procédure jaffichelasomme(a,b) a deux paramètres, a et b.
Lorsque la procédure doit renvoyer une valeur y, elle doit se terminer par l'instruction return y
On peut aussi écrire return(y)
Si la procédure possède des paramètres, et si elle renvoie une valeur, alors il s'agit d'une fonction.
La valeur retournée est fonction du ou des paramètres.
Pour information, une procédure qui ne se termine pas par l'instruction return renvoie en fait l'objet None, et par là, si elle a des paramètres, elle est une fonction.
Exemple
Considérons le programme de 5 lignes suivant.
1. def jerenvoielasomme(a,b):
2. c=a+b
3. return c
4. z=jerenvoielasomme(2,3)
5. print(z)
Pendant l'exécution du programme, la variable z prend la valeur 5, puis il s'affiche dans la console cette valeur 5.
.
Les Instructions conditionnelles
La syntaxe des instructions soumises à des tests est la suivante.
if condition :
instructions
elif condition :
instructions
else :
instructions
Les clauses elif et else sont facultatives.
Ne pas oublier les : après la ou les conditions ou le else, et remarquer que les blocs d'instructions sont indentés (décalés vers la droite).
Exemple
en langage naturel
Affecter à x un entier aléatoire entre 1 et 6
Si x=1, Alors
resultat="un"
Sinon
Si x=2 ou x=3, Alors
resultat="deux ou trois"
Sinon
resultat="quatre, cinq ou six"
Fin du Si
Fin du Si
en PYTHON
from math import*
x=randint(1,6)
if x==1:
resultat="un"
elif (x==2 or x==3):
resultat="deux ou trois"
else:
resultat="quatre, cinq ou six"
On notera le double égal pour tester la valeur de x.
Un égal simple ne serait pas correct.
On notera de plus que le début des instructions conditionnelles est bien marqué par les deux points.
Et toute instruction conditionnelle est alors indentée (décalée vers la droite).
La fin de l'indentation marque la fin des instructions conditionnelles.
Après exécution de ces instructions, la variable resultat contient une chaîne en rapport avec la valeur de x. Par exemple, si x vaut 3, alors resultat est la chaîne "deux ou trois".
Les Boucles for
La syntaxe d'une boucle for est la suivante.
for k in Ensemble :
instructions
La variable k prend ses valeurs successives dans Ensemble.
Souvent, Ensemble est une liste.
Exemple
en langage naturel
Affecter à N la valeur 1
Pour k allant de 1 à 3
N=N$×$k
Fin du Pour
en PYTHON
N=1
for k in range(1,4):
N=N*k
A savoir: si a et b sont deux entiers avec a$<$b, alors la fonction range(a,b) renvoie la séquence des entiers à partir de a jusqu'à b-1
et la fonction range(b) renvoie la séquence des entiers à partir de 0 jusqu'à b-1
Par exemple, range(1,4) est la séquence des entiers à partir de 1 jusqu'à 3.
range(5) est la séquence des entiers à partir de 0 jusqu'à 4
Le fonctionnement de ce programme est le suivant.
N vaut 1
k vaut 1 (il sera augmenté de 1 à chaque boucle et vaudra 3 à la dernière boucle)
dans la première boucle, N devient égal à 1$×$1, soit 1.
k vaut 2
dans la seconde boucle, N devient égal à 1$×$2, soit 2.
k vaut 3
dans la troisième boucle, N devient égal à 2$×$3, soit 6.
Les Boucles while
La syntaxe d'une boucle while est la suivante.
while condition :
instructions
Exemple
en langage naturel
Affecter à x la valeur 0
Tant que x $<$ 20
x=x+7
Fin du Tant que
en PYTHON
x=0
while x $<$ 20:
x=x+7
Le fonctionnement de ce programme est le suivant.
x vaut 0
Comme x $<$ 20, on effectue une première boucle.
dans la première boucle, x devient égal à 7.
Comme x $<$ 20, on effectue une seconde boucle.
dans la seconde boucle, x devient égal à 14.
Comme x $<$ 20, on effectue une troisième boucle.
dans la troisième boucle, x devient égal à 21.
Ce programme donne le plus petit multiple de 7 supérieur ou égal à 20
A retenir
Une boucle for s'utilise quand on connait le nombre de boucles à répéter.
Une boucle while s'utilise quand on ne connait pas le nombre de boucles à répéter.
Les Entrées et les Sorties
non exigibles, mais très pratiques
La fonction input(paramètre) provoquera une interruption dans le programme. L'utilisateur devra alors entrer des caractères au clavier, puis il les validera.
La fonction retournera une valeur correspondant à ce que l'utilisateur a entré.
Le paramètre est facultatif; c'est un message explicatif destiné à l'utilisateur.
La fonction print(liste de paramètres) affiche les textes ou les valeurs des variables spécifiées dans les paramètres.
Exemple
en PYTHON
t=input("Ecris un message")
print("Ton message est",t)
A l'exécution de ce programme, l'utilisateur est invité à écrire un message. Ce qu'il va écrire sera affecté à la variable t.
Puis il s'affichera le texte "Ton message est", suivi du message rentré par l'utilisateur.
Exemple
en PYTHON
t=int(input("Donne un entier"))
carré=t**2
print(carré)
A l'exécution de ce programme, l'utilisateur est invité à écrire un entier.
int() va alors convertir les caractères entrés par l'utilisateur en un entier.
Cet entier sera affecté à la variable t.
La variable carré va contenir le carré de t.
Puis il s'affichera la valeur du carré.
Remarque
On a vu que l'usage de int(paramètre) permet de convertir paramètre en un entier (si c'est possible).
De même, l'usage de float(paramètre) permet de convertir paramètre en un flottant (si c'est possible).
Les Modules
non exigibles, mais très pratiques
Un module est un fichier contenant des définitions et des instructions.
L'instruction from nom du module import * va importer toutes les procédures définies dans le module considéré.
L'instruction from nom du module import nom de la procédure ne va importer que la procédure citée définie dans le module considéré.
Exemple
en PYTHON
from math import sqrt
from random import *
x=sqrt(9)
y=randint(1,6)
A l'exécution de ce programme, la variable x contient le nombre 3.0
et la variable y contient un entier aléatoire entre 1 et 6.
Sans la première ligne, le programme ne fonctionne pas car Python ne connaît pas la fonction sqrt(), définie dans le module math
Sans la seconde ligne, le programme ne fonctionne pas car Python ne connaît pas la fonction randint(), définie dans le module random