Conseils
Même si ce site permet de tester de petits programmes en Python,
il est fortement conseillé de sauvegarder ces programmes à
l'aide d'un environnement de programmation en Python
(Pyzo, Geany, etc...). Pour cela, il faut donner à chaque programme
un nom explicite puis les «organiser» dans les répertoires adéquats.
On pourra commencer par créer un dossier [Boucle_for]
.
Ce dossier contiendra tous les programmes (scripts) rédigés à
partir de cette page.
Ensuite, il faut prendre l'habitude d'insérer des commentaires (pertinents)
dans son programme. En Python, ces commentaires sont
précédés d'un dièse «#
». Ils ne sont pas interprétés lors
de l'exécution des instructions.
Remarque importante
Les programmes en Python rédigés avec ce site
ne doivent pas comporter d'accents !
A cause d'un seul caractère accentué, le programme est susceptible de ne pas
être exécuté correctement.
Il en sera de même pour les dossiers : pas
de caractères accentués ou d'espaces.
Ce problème d'encodage des caractères sera étudié plus tard au cours de l'année.
Application directe du cours
Écrire un programme qui affiche (comme ci-dessous) la
table de multiplication de 5
, depuis
«1 * 5
» jusqu'à
«20 * 5
».
1 * 5 = 5
2 * 5 = 10
etc...
- Une piste ?
- Une solution ?
- Une autre solution ?
Ne pas oublier la méthode .format()
qui permet de mettre en forme l'affichage...
for i in range(1, 21):
print('{0} * 5 = {1}'.format(i, i*5))
for i in range(20):
print('{0} * 5 = {1}'.format(i+1, (i+1)*5))
On donne une liste d'acteurs :
liste_acteurs = ['Tahar', 'Omar', 'Guillaume', 'Swann', 'Alex', 'Roschdy']
Utilisez cette liste pour produire la sortie suivante :
Tahar a eu le César du meilleur acteur
Omar a eu le César du meilleur acteur
Guillaume a eu le César du meilleur acteur
Swann a eu le César du meilleur acteur
Alex a eu le César du meilleur acteur
Roschdy a eu le César du meilleur acteur
- Une piste ?
- Une autre piste ?
- Une solution ?
Il faut parcourir la liste...
Ne pas oublier d'utiliser une variable qui va prendre les différentes valeurs de la liste...
liste_acteurs = ['Tahar', 'Omar', 'Guillaume', 'Swann', 'Alex', 'Roschdy']
for acteur in liste_acteurs:
print("{} a eu le César du meilleur acteur".format(acteur))
❤️ Concaténation de caractères ❤️
Il est possible de coller (le vrai mot est concaténer) deux chaînes de caractères par l'opérateur + :
Par exemple, "a" + "b"
en Python donne "ab"
Dans l'extrait de code suivant :
chaine
est une variable initialisée avec un str
vide : ""
;
- on veut qu'en sortie de programme cette variable contienne la valeur
'bravo'
.
L'idée est d'ajouter une par une les lettres à la variable chaine
.
À l'exécution, le programme doit afficher uniquement bravo
.
Compléter le code.
chaine = ""
for ... in ['b', 'r', 'a', 'v', 'o']:
...
print(chaine)
Cette variable chaine
est appelée un accumulateur.
l'entier n
saisi par l'utilisateur.
- Une piste ?
- Une autre piste ?
- Encore une piste ?
- Une solution ?
Avez-vous lu le paragraphe sur la Concaténation de chaînes de caractères au dessus de l'exercice ?
En python, 'b' + 'r'
donne 'br'
.
Vous n'avez pas oublié d'utiliser la variable chaine
?
Trop d'indices, il n'y aura pas de correction sur cet exercice :)
L'utilisateur entre un entier naturel. Dans l'exemple d'affichage
ci-dessous, l'utilisateur a entré la valeur
10
après le message incitatif.
Entrer un entier positif : 10
La somme des entiers de 0 à 10 est 55
Écrire un programme qui calcule et affiche la somme des entiers jusqu'à
l'entier n
saisi par l'utilisateur.
- Une piste ?
- Une autre piste ?
- Encore une piste ?
- Une solution ?
Quelles sont les deux valeurs à stocker ?
L'utilisateur saisi une valeur stockée dans la variable
n
. On additionne 1
avec 2
avec
3
avec ... (jusqu'à)
avec n
.
Il faut retourner la valeur de la somme
.
Au tout début du programme, cette somme
vaut forcément
0
car l'utilisateur n'a pas
encore entré la valeur de n
. On ajoute ensuite dans
la somme
, au fur et à mesure, un nouvel entier
successeur du précédent jusqu'à n
.
somme = 0 # on stocke la somme
n = int(input('Entrer un entier positif n : '))
for i in range(n+1): # Pour aller de 0 à n compris
somme += i # équivaut à somme = somme + i
print('La somme des entiers de 0 a {0} est {1}'.format(n, somme))
Modifier le script de l'exercice précédent pour calculer et afficher la
somme des entiers pairs de
0
à n
.
- Une piste ?
- Une autre piste ?
- Une solution ?
Une unique contrainte a été ajoutée. Laquelle ?
Qu'est-ce qu'un entier pair ?
Réponse : un entier multiple du nombre
2
...
somme = 0 # on stocke la somme
n = int(input('Entrer un entier positif n : '))
for i in range(0, n+1, 2): # De 0 à n compris, avec un pas de 2
somme += i # équivaut à somme = somme + i
print('La somme des entiers pairs de 0 a {0} est {1}'.format(n, somme))
Écrire un programme qui demande combien d'élèves il y a dans une classe,
demande la note de chaque élève et calcule sa moyenne.
- Une piste ?
- Une solution ?
Il faut d'abord interroger l'utilisateur avec la méthode bien connue.
Puis, il faut réutiliser ce nombre pour notre boucle qui va demander les notes.
Enfin, on calcule la moyenne, en utilisant la somme des notes...
n = int(input("Combien y a-t-il d'élèves : "))
somme = 0
for _ in range(n):
note = int(input("Entrer une note : "))
somme += note
moyenne = somme / n
print("La moyenne est de", moyenne)
Dessinons avec Turtle
Compléter le programme ci-dessous.
Ce programme doit permettre de réaliser le tracé ci-contre. Les longueurs en pixels
sont là pour aider à la conception du programme, il n'est pas nécessaire qu'elles
s'affichent à l'écran...
- Une piste ?
- Un schéma ?
- Une analyse ?
- Une solution ?
Il faut chercher un «pattern», c'est-à-dire un schéma répétitif
dans le motif. Pour cela, écrire sur une feuille ce qu'il se passe de nouveau
à chaque nouvelle étape.
Décomposition des premiers mouvements à effectuer par le crayon :
Le crayon doit...
- avancer de 20 pixels ;
- tourner à gauche de 90° ;
- avancer de 40 = 2 × 20 pixels ;
- tourner à gauche de 90° ;
- avancer de 60 = 3 × 20 pixels ;
- tourner à gauche de 90° ;
- avancer de 80 = 4 × 20 pixels ;
- tourner à gauche de 90° ;
- etc...
from turtle import *
t = Turtle()
##--- Ci-dessous, on complete le programme ---##
distance = 20 # Longueur "constante" ajoutée au déplacement
for i in range(9): # Valeurs prises de 0 à 8
t.forward(distance*(i+1)) # donc i+1 va de 1 à 9...
t.left(90)
##--- Fin du programme ---##
exitonclick()
Un peu de mathématiques...
La suite (un) est définie par
u0 = 1
et, pour tout entier naturel n, par
un+1 = 2 un+3.
Écrire un programme qui :
- demande à l'utilisateur un entier naturel
n
,
- puis affiche la valeur de u
n
.
Ci-dessous, l'utilisateur a entré la valeur
10
après le message incitatif.
Entrer un entier positif : 10
u_10 = 4093
- Une piste ?
- Une autre piste ?
- Une solution ?
- Variante
Le «numéro» du tour de boucle ne sert pas à faire
de calcul.
Regarder son cours de maths pour avoir une idée de l'algorithme
en pseudo-code.
n = int(input('Entrer un entier positif : '))
u = 1 # Valeur du 1er terme
for i in range(n):
u = 2*u+3
print('u_{0} = {1}'.format(n, u))
Pour afficher TOUS les termes de la suite
jusqu'à un
, il faut penser à
afficher le premier terme et le dernier terme :
n = int(input('Entrer un entier positif : '))
u = 1 # Valeur du 1er terme
for i in range(n):
print('u_{0} = {1}'.format(i, u)) # Affiche de u_0 à u_(n-1)
u = 2*u+3 # Calcule de u_1 à u_n
print('u_{0} = {1}'.format(n, u)) # Affiche u_n