Support Global
Support Global
Support Global
Larhlimi
0- Noms de variables
Le nom d'une variable s'écrit avec des lettres (non accentuées), des chiffres
ou bien l'underscore _
Le nom d'une variable ne doit pas commencer par un chiffre.
En langage Python, l'usage est de ne pas utiliser de lettres majuscules pour
nommer les variables (celles-ci sont réservées pour nommer les classes).
Exemple : age, mon_age, temperature1
A éviter : Age, AGE, MonAge, monAge, Temperature1
1- Le type int (integer : nombres entiers)
Pour affecter (on dit aussi assigner) la valeur 17 à la variable nommée age :
>>> age = 17
La fonction print() affiche la valeur de la variable :
>>> print(age)
17
La fonction type() retourne le type de la variable :
>>> print(type(age))
2 A. Larhlimi
<class 'int'>
int est le type des nombres entiers.
>>> # ceci est un commentaire
>>> age = age + 1 # en plus court : age += 1
>>> print(age)
18
>>> age = age - 3 # en plus court : age -= 3
>>> print(age)
15
>>> age = age*2 # en plus court : age *= 2
>>> print(age)
30
>>> a = 6*3 - 20
>>> print(a)
-2
>>> b = 25
>>> c = a + 2*b
>>> print(b, c) # ne pas oublier la virgule
25 48
L'opérateur // donne la division entière :
>>> tour = 450//360
>>> print(tour)
1
L'opérateur % donne le reste de la division (opération modulo) :
>>> angle = 450%360
>>> print(angle)
90
3 A. Larhlimi
-17848.92
Les fonctions mathématiques
Pour utiliser les fonctions mathématiques, il faut commencer par importer le
module math :
>>> import math
La fonction dir() retourne la liste des fonctions et données d'un module :
>>> dir(math)
['__doc__', '__name__', '__package__', 'acos',
'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh',
'degrees', 'e', 'erf',
'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor',
'fmod', 'frexp', 'fsum',
'gamma', 'hypot', 'isinf', 'isnan', 'ldexp',
'lgamma', 'log', 'log10', 'log1p',
'modf', 'pi', 'pow', 'radians', 'sin', 'sinh',
'sqrt', 'tan', 'tanh', 'trunc']
Pour appeler une fonction d'un module, la syntaxe est la suivante :
module.fonction(arguments)
Pour accéder à une donnée d'un module :
module.data
>>> print(math.pi) # donnée pi du module math
(nombre pi)
3.14159265359
>>> print(math.sin(math.pi/4.0)) # fonction sin() du
module math (sinus)
0.707106781187
>>> print(math.sqrt(2.0)) # fonction sqrt() du module
math (racine carrée)
1.41421356237
>>> print(math.sqrt(-5.0))
Traceback (most recent call last):
5 A. Larhlimi
print math.sqrt(-5.0)
ValueError: math domain error
>>> print(math.exp(-3.0)) # fonction exp() du module
math (exponentielle)
0.0497870683679
>>> print(math.log(math.e)) # fonction log() du
module math (logarithme népérien)
1.0
3- Le type str (string : chaîne de caractères)
>>> nom = 'Dupont' # entre apostrophes
>>> print(nom)
Dupont
>>> print(type(nom))
<class 'str'>
>>> prenom = "Pierre" # on peut aussi utiliser
les guillemets
>>> print(prenom)
Pierre
>>> print(nom, prenom) # ne pas oublier la virgule
Dupont Pierre
La concaténation désigne la mise bout à bout de plusieurs chaînes de
caractères.
La concaténation utilise l'opérateur +
>>> chaine = nom + prenom # concaténation de deux
chaînes de caractères
>>> print(chaine)
DupontPierre
>>> chaine = prenom + nom # concaténation de deux
chaînes de caractères
>>> print(chaine)
6 A. Larhlimi
PierreDupont
>>> chaine = prenom + ' ' + nom
>>> print(chaine)
Pierre Dupont
>>> chaine = chaine + ' 18 ans' # en plus court :
chaine += ' 18 ans'
>>> print(chaine)
Pierre Dupont 18 ans
La fonction len() retourne la longueur (length) de la chaîne de caractères :
>>> print(len(chaine))
20
Indexage et slicing :
>>> print(chaine[0]) # premier caractère (indice
0)
P
>>> print(chaine[1]) # deuxième caractère (indice 1)
i
>>> print(chaine[1:4]) # slicing
ier
>>> print(chaine[2:]) # slicing
erre Dupont 18 ans
>>> print(chaine[-1]) # dernier caractère (indice
-1)
s
>>> print(chaine[-6:]) # slicing
18 ans
En résumé :
+---+---+---+---+---+---+
| M | u | r | i | e | l |
7 A. Larhlimi
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
<class 'str'>
>>> chaine = chaine + 2
TypeError: Can't convert 'int' object to str
implicitly
La fonction float() permet de convertir un type str en type float
>>> nombre = float(chaine)
>>> print(nombre)
17.45
>>> print(type(nombre))
<class 'float'>
>>> nombre = nombre + 2 # en plus court :
nombre += 2
>>> print(nombre)
19.45
La fonction input() lance une invite de commande (en anglais : prompt)
pour saisir une chaîne de caractères.
>>>#saisir une chaîne de caractères et valider avec la touche Enter
>>> print(type(choix))
<class 'bool'>
Les opérateurs de comparaison :
>>> b = 10
>>> print(b > 8)
True
>>> print(b == 5)
False
>>> print(b != 10)
False
>>> print(0 <= b <= 20)
True
Les opérateurs logiques : and, or, not
>>> note = 13.0
>>> mention_ab = note >= 12.0 and note < 14.0 # ou
bien : mention_ab = 12.0 <= note < 14.0
>>> print(mention_ab)
True
>>> print(not mention_ab)
False
>>> print(note == 20.0 or note == 0.0)
False
10 A. Larhlimi
L'opérateur in s'utilise avec des chaînes (type str) ou des listes (type
list) :
>>> chaine = 'Bonsoir'
>>> # la sous-chaîne 'soir' fait-elle partie de la
chaîne 'Bonsoir' ?
>>> resultat = 'soir' in chaine
>>> print(resultat)
True
>>> print('b' in chaine)
False
>>> maliste = [4, 8, 15]
>>> # le nombre entier 9 est-il dans la liste ?
>>> print(9 in maliste)
False
>>> print(8 in maliste)
True
>>> print(14 not in maliste)
True
Barème : bonne réponse 2 points, mauvaise réponse -0,25 point, je ne sais pas 0 point
a = 12
b=8
c=a
a=b
b=c
print(a,b)
Qu'affiche le script ?
11 A. Larhlimi
Je ne sais pas
A) 8 8
B) 8 12
C) 12 8
D) 12 12
Barème : bonne réponse 2 points, mauvaise réponse -0,25 point, je ne sais pas 0 point
toto = 1+3/5
print(toto)
Qu'affiche le script ?
Je ne sais pas
A) 0.8
B) 1.0
C) 1
D) 1.6
Barème : bonne réponse 2 points, mauvaise réponse -0,25 point, je ne sais pas 0 point
toto = 1.0+3.0/5.0
print(toto)
Qu'affiche le script ?
Je ne sais pas
A) 0.8
B) 1.0
C) 1
D) 1.6
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
12 A. Larhlimi
toto = 13.4
Toto = 10.5
Toto = Toto -5.5
print(toto)
Qu'affiche le script ?
Je ne sais pas
A) 5.0
B) 10.5
C) 13.4
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a = '10'
b = '2'
c=a+b
print(c)
Qu'affiche le script ?
Je ne sais pas
A) 12
B) 102
C) 210
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a = 12e3
print(type(a))
Qu'affiche le script ?
Je ne sais pas
A) <class 'int'>
B) <class 'float'>
C) <class 'str'>
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a = "4*5"
print(a)
Qu'affiche le script ?
Je ne sais pas
A) 4*5
B) 20
C) 20.0
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a = 2,5
b = 1,8
print(a*b)
Qu'affiche le script ?
Je ne sais pas
A) 4,5
B) 4.5
C) Le script génère une erreur.
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a="Bon"
b="jour"
print(b+a)
Qu'affiche le script ?
Je ne sais pas
A) jourBon
14 A. Larhlimi
B) Bonjour
C) b+a
Barème : bonne réponse 2 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
toto = 'Bonsoir'
print(toto[3:7])
Qu'affiche le script ?
Je ne sais pas
A) toto[3:7]
B) soir
C) nsoir
15 A. Larhlimi
Syntaxe
if expression: # ne pas oublier le signe de ponctuation ':'
bloc d'instructions # attention à l'indentation
# suite du programme
16 A. Larhlimi
Premier script
Nous allons commencer par créer le script Condition1.py :
Ouvrir IDLE :
Démarrer → Programmes → Python → IDLE (Python GUI)
File → New Window
Copier puis coller le code source ci-dessous :
# script Condition1.py
chaine = input("Note sur 20 : ")
note = float(chaine)
if note >= 10.0:
# ce bloc est exécuté si l'expression (note >=
10.0) est vraie
print("J'ai la moyenne")
print("Fin du programme")
File → Save As
Répertoire : C:\PythonXX
Nom du fichier : Condition1.py
Pour exécuter le script :
Run → Run Module (ou touche F5) :
>>>
Note sur 20 : 16
J'ai la moyenne
Fin du programme
>>>
Note sur 20 : 5
Fin du programme
L'instruction else
17 A. Larhlimi
>>>
Note sur 20 : 56
Note invalide !
Fin du programme
>>>
Note sur 20 : 14.6
J'ai la moyenne
Fin du programme
On ajoute encore un niveau d'imbrication pour traiter les cas particuliers 0 et
20 :
# script Condition4.py
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme
L'instruction elif
Une instruction elif (contraction de else if) est toujours associée à une
instruction if
Syntaxe
if expression 1:
bloc d'instructions 1
elif expression 2:
bloc d'instructions 2
elif expression 3:
bloc d'instructions 3 # ici deux instructions
elif, mais il n'y a pas de limitation
else:
bloc d'instructions 4
# suite du programme
Si l'expression 1 est vraie alors le bloc d'instructions 1 est exécuté, et on passe
à la suite du programme.
Si l'expression 1 est fausse alors on teste l'expression 2 :
si l'expression 2 est vraie on exécute le bloc d'instructions 2, et on passe à
la suite du programme.
21 A. Larhlimi
Exemple
# script Condition5.py
# ce script fait la même chose que Condition4.py
elif note >= 10.0 and note < 20.0: # ou bien : elif
10.0 <= note < 20.0:
print("J'ai la moyenne")
else:
print("Note invalide !")
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 77
Note invalide !
Fin du programme
Exercices
Exercice 2.1 ★ Le numéro de sécurité sociale est constitué de 13 chiffres
auquel s'ajoute la clé de contrôle (2 chiffres).
La clé de contrôle est calculée par la formule : 97 - (numéro de sécurité
sociale modulo 97)
Ecrire un script qui contrôle la validité d'un numéro de sécurité sociale.
On pourra utiliser la fonction int()pour convertir le type str en type int.
Exemple :
>>>
Entrer votre numéro de sécurité sociale (13 chiffres)
--> 1891126108268
23 A. Larhlimi
Exercice 2.5 ★★ Ecrire un script qui résout l'équation du second degré : ax²
+ bx + c = 0
Par exemple :
>>>
Résolution de l'équation du second degré : ax² + bx +
c = 0
Coefficient a ? 1
Coefficient b ? -0.9
Coefficient c ? 0.056
Discriminant : 0.586
Deux solutions :
0.0672468158199
0.83275318418
>>>
Résolution de l'équation du second degré : ax² + bx +
c = 0
Coefficient a ? 2
Coefficient b ? 1.5
Coefficient c ? 4
Discriminant : -29.75
Il n'y a pas de solution.
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a=7
b=12
if a>5:
b=b-4
if b>=10:
b=b+1
Que vaut la valeur finale de la variable b ?
26 A. Larhlimi
Je ne sais pas
A) 8
B) 9
C) 12
D) 13
Barème : bonne réponse 4 points, mauvaise réponse -1 point, je ne sais pas 0 point
a=3
b=6
if a>5 or b!=3:
b=4
else:
b=2
Que vaut la valeur finale de la variable b ?
Je ne sais pas
A) 2
B) 4
C) 6
Barème : bonne réponse 4 points, mauvaise réponse -1 point, je ne sais pas 0 point
a=2
b=5
if a>8:
b=10
elif a>6:
b=3
Je ne sais pas
A) 3
B) 5
C) 10
27 A. Larhlimi
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a=2
b=0
if a<0:
b=1
elif a>0 and a<5:
b=2
else:
b=3
Je ne sais pas
A) 0
B) 1
C) 2
D) 3
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
a=10
if a<5:
a=20
elif a<100:
a=500
elif a<1000:
a=1
else:
a=0
Je ne sais pas
A) 0
B) 1
C) 10
D) 20
E) 500
29 A. Larhlimi
L'instruction while
Syntaxe
while expression:# ne pas oublier le signe de ponctuation ':'
bloc d'instructions # attention à l'indentation
# suite du programme
Si l'expression est vraie (True) le bloc d'instructions est exécuté, puis
l'expression est à nouveau évaluée.
Le cycle continue jusqu'à ce que l'expression soit fausse (False) : on passe
alors à la suite du programme.
30 A. Larhlimi
L'instruction for
Syntaxe
for élément in séquence :
bloc d'instructions
# suite du programme
Les éléments de la séquence sont issus d'une chaîne de caractères ou bien
d'une liste.
i
r
Fin de la boucle
Exemple avec les éléments d'une liste
# script Boucle5.py
3
4
Fin de la boucle
Table de multiplication
La création d'une table de multiplication paraît plus simple avec une boucle
for qu'avec une boucle while :
# script Boucle7.py
for compteur in range(1,11):
print(compteur, '* 9 =', compteur*9)
print("Et voilà !")
>>>
1 * 9 = 9
2 * 9 = 18
3 * 9 = 27
4 * 9 = 36
5 * 9 = 45
6 * 9 = 54
7 * 9 = 63
8 * 9 = 72
9 * 9 = 81
10 * 9 = 90
Et voilà !
L'instruction break
L'instruction break provoque une sortie immédiate d'une boucle while ou
d'une boucle for.
Dans l'exemple suivant, l'expression True est toujours ... vraie : on a une
boucle sans fin.
L'instruction break est donc le seul moyen de sortir de la boucle.
35 A. Larhlimi
Astuce
Si vous connaissez le nombre de boucles à effectuer, utiliser une boucle for.
Autrement, utiliser une boucle while (notamment pour faire des boucles
sans fin).
Exercices
Exercice 3.1 ★ Ecrire un script qui affiche toutes les tables de multiplication
(de 1 à 10).
Exercice 3.2 ★ Ecrire un script qui calcule la moyenne d'une série de notes.
On pourra utiliser une variable qui contient la somme intermédiaire des
notes.
>>>
36 A. Larhlimi
Nombre de notes ? 3
--> 15
--> 11.5
--> 14
Moyenne : 13.5
>>>
Exercice 3.3 ★
1) Avec une boucle for, écrire un script qui compte le nombre de lettres z
dans une chaîne de caractères.
Par exemple :
>>>
Entrer la chaîne : Zinedine Zidane
Résultat : 2
2) Faire la même chose, directement avec la méthode count() de la classe
str.
Pour obtenir de l'aide sur cette méthode :
>>> help(str.count)
Exercice 3.4 ★ Avec une boucle while, écrire un script qui affiche l'heure
courante avec une actualisation chaque seconde.
On utilisera la fonction sleep() du module time.
Pour obtenir de l'aide sur cette fonction :
>>> import time
>>> help(time.sleep)
Par exemple :
>>> # Taper CTRL + C pour arrêter le programme.
>>>
Heure courante 12:40:59
Heure courante 12:41:00
Heure courante 12:41:01
Heure courante 12:41:02
37 A. Larhlimi
KeyboardInterrupt
>>>
Remarque : il est vilain de forcer l'arrêt d'un programme avec CTRL + C
Nous verrons comment interrompre proprement un programme dans le
chapitre Gestion des exceptions.
Exercice 3.5 ★☆
1) Ecrire le script du jeu de devinette suivant :
>>>
Le jeu consiste à deviner un nombre entre 1 et 100 :
---> 50
trop petit !
---> 75
trop petit !
---> 87
trop grand !
---> 81
trop petit !
---> 84
trop petit !
---> 85
Gagné en 6 coups !
2) Quelle est la stratégie la plus efficace ?
3) Montrer que l'on peut deviner un nombre en 7 coups maximum.
Bibliographie : La dichotomie
Remarque : pour créer un nombre entier aléatoire entre 1 et 100 :
import random
nombre = random.randint(1,100)
Exercice 3.6 ★★ Code de César
En cryptographie, le code de César est une technique de chiffrement
38 A. Larhlimi
4 1.74135758045
5 1.44494338196
6 1.41454033013
7 1.41421360012
8 1.41421356237
9 1.41421356237
10 1.41421356237
>>>
Exercice 3.8 ★★ Fraction continue infinie
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
40 A. Larhlimi
n = 0
while n<15 :
n = n + 2
print(n)
Qu'affiche le script ?
Je ne sais pas
A) 14
B) 15
C) 16
D) 17
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
n = 10
while n>=11 :
n = n + 2
print(n)
Qu'affiche le script ?
Je ne sais pas
A) 10
B) 11
C) 12
D) 13
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
41 A. Larhlimi
n = 0
for i in range(5) :
n = n + 1
print(n)
Qu'affiche le script ?
Je ne sais pas
A) 4
B) 5
C) 6
D) 7
Barème : bonne réponse 4 points, mauvaise réponse -0,5 point, je ne sais pas 0 point
n = 0
for i in range(5) :
n = n + 1
print(i)
Qu'affiche le script ?
Je ne sais pas
A) 4
B) 5
C) 6
D) 7
Barème : bonne réponse 4 points, mauvaise réponse -1 point, je ne sais pas 0 point
resultat = ""
42 A. Larhlimi
for c in "Bonsoir" :
resultat = resultat + c
print(resultat)
Qu'affiche le script ?
Je ne sais pas
A) Bonsoir
B) riosnoB
C) BonsoirBonsoirBonsoirBonsoirBonsoirBonsoirBonsoir