Programmation Impérative
Boucle 'for' en Python
5
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Terminal/Bash/Interpreteur/Programme
la fenêtre que l'on lance au départ
exécute bash
en mode interactif
Bash interactif
demande de taper une ligne de commande
découpe en morceaux avec l'espace comme séparateur
le premier morceau est le programme lancé
les autres morceaux sont les paramètres passé au programme
affiche la sortie du programme lancé, et recommence
Script Bash à partir d'un fichier
lancé avec
bash nomdefichier.bash p1 p2 p3 ...
exécute les lignes du fichier une par une
chaque ligne est découpée et exécutée
possibilité d'accéder aux paramètres avec
${1}
,
${2}
,
${3}
, ...
Un script est donc un programme
on peut le lancer sans se soucier de son contenu
on peut lui passer des paramètres
6
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Bash/Python/Interpreteurs
Bash
2 modes : interactif et à partir d'un fichier
lancement d'autres programmes
Python
2 modes : interactif et à partir d'un fichier
exécution d'affectation, d'appel de fonction (
print
, ...), ...
Python interactif
lancé avec
python3
(sans paramètres)
comme
bash
, exécute au fur et à mesure ce que l'on tape
Python à partir d'un fichier
lancé avec
python3 monfichier.py p1 p2 p3 ...
exécute chaque ligne, une par une
17
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Entrée Utilisateur : la Fonction
input
But : rendre un programme interactif
Comment : demander à l'utilisateur de taper du texte
Fonction
input(invite)
affiche l'invite à l'utilisateur
attend que l'utilisateur tape du texte et valide avec « entrée »
renvoie la chaîne tapée par l'utilisateur
Exemple
1
nom = input(
"Entrez votre nom : "
)
2
msg = input(
"Entrez un message : "
)
3
print(
"Yo"
, nom,
"! Tu as dit «"
, msg,
"»"
)
Le programme est interactif !
Faut-il utiliser la fonction
input
?
plus « fun »
mais moins automatisable
18
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Lecture de Nombres : Conversions
input()
renvoie une chaîne de caractères
1
nb = input(
"Entrez un nombre : "
)
# 5
2
msg = input(
"Entrez un message : "
)
# Poum Tchak
3
print( nb * msg )
# erreur chaine*chaine
But : conversion stringnombre (pas limité au cas de
input
)
fonction
int(chaine)
renvoie un entier
fonction
float(chaine)
renvoie un flottant (réel)
fonction
str(truc)
renvoie une string
1
print( int(
"123"
) ==
123
)
# True
2
print( float(
"42.12"
) ==
42.1200
)
# True
3
print( int(nb) * msg)
# ok!
1
age_string = input(
"Quel est votre age ? "
)
2
suivant = int(age_string) +
1
3
suivant_str = str(suivant)
4
print(
"Vous allez avoir "
+ suivant_str +
" ans !"
)
19
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
>_ bash
Paramètres d'un Programme
But : l'utilisateur donne des paramètres au programme
bash creer-tp.bash tp1 tp2
accès aux paramètres avec
${1}
,
${2}
, ... et
$@
python3 monprog.py poum tchak 5
importation du « module »
sys
(détails plus tard)
sys.argv
contient une liste avec
le nom du fichier .py
puis les paramètres
chaque paramètre est une chaîne de caractères
1
import
sys
2
3
print(sys.argv)
4
# ["monprog.py", "poum", "tchak", "5"]
5
print(len(sys.argv))
6
# 4 (le nom du fichier + 3 paramètres)
7
8
texte = sys.argv[
1
] +
"-"
+ sys.argv[
2
] +
" "
9
nb = int(sys.argv[
3
])
# conversion vers un entier
10
print(nb * texte)
21
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Pseudo-Listes : les String
Une chaîne de caractères (string)
est accessible comme une liste
1
ch =
"salut, bonjour"
2
print(ch[
0
])
# s
3
print(ch[
5
])
# ,
4
print(ch[len(ch)-
2
])
# u
Les chaînes peuvent aussi être concaténées avec
ch1 + ch2
Une chaîne peut être convertie en (vraie) liste
1
ch =
"Salut !"
2
l = list(ch)
3
print(l)
# ['S', 'a', 'l', 'u', 't', ' ', '!']
22
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Pseudo-Listes : la Fonction
range
Fonction
range
range(N)
, suite de
N
nombres, de 0 à
N
1
range(A,B)
, suite de
B
A
nombres, de
A
à
B
1
range(A,B,S)
, nombres de
A
à
B
1
en comptant de
S
en
S
NB :
range(N)
équivaut à
range(0, N)
NB :
range(A, B)
équivaut à
range(A, B, 1)
Peut être accédé comme une liste
1
r = range(
10
,
100
)
# les 90 entiers de 10 à 99
2
print(r[
0
])
# 10
3
print(r[
9
])
# 19
4
print(r[len(r)-
1
])
# 99
Peut être converti en (vraie) liste
1
r = range(
5
,
10
)
2
l = list(r)
3
print(l)
# [5, 6, 7, 8, 9]
27
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Itération sur les Listes : Boucle
for
But des boucles
exécuter plusieurs fois les mêmes instructions
pour différentes valeurs
ex : afficher les carrés d'un ensemble de nombres
Exemple
1
nombres = [
1
,
2
,
3
,
5
,
7
,
11
]
2
3
for
n
in
nombres:
4
print(n,
"a pour carré"
, n*n)
Suivant le modèle
1
for
«var»
in
«liste»:
2
# ci-dessous : exécuté pour chaque élément de «liste»
3
«instr»
# dans le for
4
«instr»
# dans le for
5
# dans le for
6
# apres le for
for
,
in
,
:
et l'indentation sont
obligatoires
28
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Autre Exemple de Boucle
for
Fonction
range
(rappel)
range(N)
, liste de
N
éléments de 0 à
N
1
range(A,B)
, liste de
B
A
éléments de
A
à
B
1
1
for
n
in
range(
5
):
2
print(n,
"a pour carré"
, n*n)
1
0
a pour carre
0
2
1
a pour carre
1
3
2
a pour carre
4
4
3
a pour carre
9
5
4
a pour carre
16
35
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
Itérer sur les Indices d'une Liste
But : avoir à la fois l'indice et la valeur d'une liste
1
nbr = [
1
,
2
,
3
,
5
,
7
,
11
]
2
3
for
i
in
«????»:
4
print(
"nbr["
, i,
"] ="
, nbr[i])
Solution avec
range
:
1
for
i
in
range(len(nbr)):
2
print(
"nbr["
, i,
"] ="
, nbr[i])
Autre solution avec
enumerate
(plus tard)
Points Clés
Rappels sur l'articulation terminal/bash/python
Rappels sur les
if
Rappels sur les listes
Fonction
range
range(N)
, suite de
N
nombres, de 0 à
N
1
range(A,B)
, suite de
B
A
nombres, de
A
à
B
1
range(A,B,S)
, nombres de
A
à
B
1
en comptant de
S
en
S
Boucle
for
répéter un block pour chaque élément d'une liste
avec
range
et
len
, permet aussi de parcourir les indices
38
/
38
Rémi Emonet
Programmation Impérative Boucle 'for' en Python
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !