Académique Documents
Professionnel Documents
Culture Documents
1. Introduction
On a jusqu’ici utilisé Python en mode interactif, à la manière d’une calculatrice. Les instructions (ou
commandes) sont ainsi, l’une après l’autre, entrées au clavier, interprétées et suivies d’un résultat souvent
réutilisé par la suite. une séquence d’instructions peut être sauvegardée dans un fichier texte (on parle de script
Python).On peut dès lors ouvrir ce script et l’exécuter, de façon automatisée.
On peut directement convertir la réponse reçue par input en un type particulier (int et float notamment) :
On voit que les chaînes de caractères sont affichées sans leurs délimiteurs extérieurs (guillemets ou
apostrophes).
On peut préciser un autre séparateur avec l’option sep=. Un affichage par print se termine par un passage à la
ligne (mais on peut préciser un autre mode de terminaison avec l’option end=)
>>> print("a ", 11, "b ", 2222, "c ", 333); print("d ", 1/3, "e ", 1/7);
>>> print("a ", 1, "b ", 2, "c ", 3, sep= "** ", end= " --- ")
On peut rajouter une clause else (facultative) pour exécuter un autre bloc si la condition est fausse :
Plutôt que d’emboîter des clauses if, on peut utiliser une clause if suivie par une (des) clause(s) elif :
Remarques :
• Dans toutes les constructions ci-dessus, au plus un bloc est parcouru.
• ne pas oublier le caractère “deux points” qui termine chacune des lignes d’en-tête ! ! !
• se souvenir que si un bloc se réduit à une instruction, on peut le placer directement après le “ :”
5. Expressions conditionnelles
Python offre la possibilité de former des expressions dont l’évaluation est soumise à une condition.
La syntaxe est la suivante : expression1 if condition else expression2
Le résultat est bien sûr l’évaluation de expression1 si la condition est vraie, et sinon expression2.
Remarque : cette construction ne permet pas l’utilisation du mot réservé elif (mais on voit sur le deuxième
exemple ci-dessous comment emboîter deux expressions conditionnelles).
6. Structures itératives
a) La structure (while)
Pour répéter un bloc d’instructions tant qu’une condition est réalisée, Python propose la clause while :
La structure while peut être complétée par une clause else, exécutée si la condition est fausse :
L’utilisation de else attaché à un while est rare. Le bloc2 ci-dessus est en effet parcouru une seule fois, quand la
condition devient fausse, sauf si on sort du bloc n°1 par une instruction break (auquel cas bloc2 est ignoré).
b) Notion d’intervalle
On est souvent amené à répéter plusieurs fois un bloc d’instructions en fonction des valeurs successives d’un
compteur. Une façon simple (mais c’est loin d’être la seule) d’indiquer la plage des valeurs possibles de ce
compteur est d’utiliser un intervalle (ou encore range dans le langage Python) :
• la syntaxe est range(a,b,h) où a, b, h sont des valeurs entières.
• la valeur a (le début de l’intervalle) est facultative, et par défaut elle vaut 0.si a est présent, la valeur h
(le pas de l’intervalle) est facultative, et vaut 1 par défaut.
• l’intervalle range(a,b,h) est formé des valeurs x = a + kh, avec k entier tel que
L’intervalle range(a,b,h) doit être vu comme une succession de valeurs, en partant de a, et en progressant vers b
(sans jamais l’atteindre !), dans le sens croissant ou décroissant selon que le pas est positif ou négatif. Ainsi :
• l’intervalle range(7) représente la succession des valeurs 0, 1, 2, 3, 4, 5, 6
• l’intervalle range(1,7) représente la succession des valeurs 1, 2, 3, 4, 5, 6
• l’intervalle range(1,7,2) représente la succession des valeurs 1 , 3, 5
• l’intervalle range(7,2) est vide (ici le pas a sa valeur par défaut, c’est-à-dire 1)
• l’intervalle range(7,2,-1) représente la succession des valeurs 7, 6, 5, 4, 3
• si a≤b, l’intervalle range(a,b) est formé de b-a valeurs (il est notamment vide si a = b)
Pour tester l’appartenance d’une valeur à un intervalle, on utilise le mot in (résultat True ou False).
Attention : les intervalles dont il est question ici sont des échantillons de valeurs entières, ce ne sont donc pas
des intervalles au sens mathématique du terme. Voici quelques exemples :
>>> r = range(100,1000,2) # intervalle des entiers pairs, de 100 inclus à 1000 exclu.
>>> 100 in r # 100 fait-il partie de l’intervalle, réponse oui.
………………………………………………………………………………………………………………………………………………….
>>> 1000 in r # 1000 fait-il partie de l’intervalle, réponse non.
………………………………………………………………………………………………………………………………………………….
>>> 513 in r # 513 fait-il partie de l’intervalle, réponse non.
………………………………………………………………………………………………………………………………………………….
En fait, objet est ici est toute construction susceptible d’être parcourue : on pense bien sûr aux intervalles
(range), mais aussi aux chaînes (parcourues caractère par caractère), aux listes, aux tuples, aux dictionnaires (on
en parlera plus tard).
>>>for k in range(0,10): # pour k = 0, puis k = 1, etc. jusqu’à k = 9
bloc_d’instructions # on parcourt ce bloc
>>>for x in ‘abcdef’: # pour x = ’a’, puis x = ’b’, etc. jusqu’à x = ’f’
bloc_d’instructions # on parcourt ce bloc
La construction for peut être complétée par une clause else, parcourue quand la boucle est terminée :
>>>for variable in objet : # pour chaque élément (nommé pour l’occasion variable) de objet
bloc1_d’instructions # on parcourt ce bloc
else : # quand la boucle est terminée
bloc2_d’instructions # on parcourt ce bloc
L’utilisation de else attaché à une boucle for est assez rare. Le bloc2 ci-dessus est en effet parcouru une seule
fois, quand la boucle est terminée, sauf si on sort du bloc n°1 par une instruction break (auquel cas bloc2 est
ignoré).
8. Les instructions break, continue :
Le bloc qui fait suite à l’instruction while ou for peut contenir deux instructions particulières, souvent attachées
à un test if :
• break provoque la sortie immédiate de la clause while ou for.
• continue permet de passer directement à l’itération suivante dans une boucle for ou while. (ce qui restait
du bloc après continue est donc ignoré).
Exemple 1 : tester si un entier premier ou non
solution 1 : solution 2 :
N=int(input("Tapez le nombre N : ")) import math
i=2 n=int(input("Tapez le nombre n : "))
while i < N//2: premier = True
if N % i ==0: for i in range(2, int(math.sqrt(n))+1):
break if n % i == 0:
i+=1 premier=False
if i == N//2: break
print(N, "est premier") if premier:
else: print(n, "est premier")
print(N,"est non premier") else:
print(n,"est non premier")
Exemple 2: Affiche les entiers inférieurs à N+1 en excluant les multiples de 10:
N=int(input("Tapez le nombre N : "))
for i in range(1,N+1):
if i % 10 == 0 :
continue
print(i,end=' ')