Blocs et code
Les blocs permettent de structurer son code. La façon la plus simple de les utiliser est dans les blocs if/elif/else
qui permettent une exécution conditionnelle et les blocs while
et for
qui permettent de répéter des blocs.
Exécution conditionnelle
Permet d'exécuter un bloc si une condition logique est vraie :
if <condition logique>:
instruction 1
instruction 2
...
instruction n
elif <condition logique>:
instruction 1
instruction 2
...
instruction n
else:
instruction 1
instruction 2
...
instruction n
Notez qu'il peut y avoir autant de bloc elif
que l'on veut (même 0) et qu'il n'est pas nécessaire d'avoir de else
.
Demandez à l'utilisateur de rentrer un entier au clavier (en utilisant la fonction input
) et de répondre "C'est entre 2 et 8" si le nombre rentré est entre 2 et 8 et de répondre "ce n'est pas entre 2 et 8" sinon.
solution
solution
entier = int(input("Un entier entre 2 et 8 : "))
if 2 >= entier and entier <= 8:
print("C'est entre 2 et 8")
else:
print("ce n'est pas entre 2 et 8")
Répétition de blocs
Deux types de boucles existent en python : les boucles tant que (while
) et les boucles pour chaque (for
)
Bloc while : boucle tant que
while <condition logique>:
instruction 1
instruction 2
...
instruction n
Par exemple le bloc while
suivant :
b = 6
while b > 0:
print(b)
b = b - 1
qui va afficher :
6
5
4
3
2
1
Calculez la factorielle de 45.
solution
solution
factorielle = x = 45
while x >= 1:
factorielle = factorielle * x
x -= 1
print(factorielle)
Bloc for : boucle pour chaque
for <nom> in <itérable>:
instruction 1
instruction 2
...
instruction n
Le bloc sera exécuté pour chaque élément de l'itérable. A chaque exécution, l'élément courant de l'itérateur sera nommé <nom>
Beaucoup d'objet peuvent être considérés comme itérable (nous en verrons plusieurs par la suite) et nous en connaissons déjà un : les chaînes de caractères.
L'exécution du code suivant :
for c in "bonjour":
print(c)
Donnera :
b
o
n
j
o
u
r
La boucle for itère sur chaque caractère de la chaîne "bonjour"
et le place dans la variable nommée c
. La valeur de c
vaut donc successivement les caractères "b"
, "o"
, "n"
, "j"
, "o"
, "u"
et enfin "r"
.
Choisissez toujours des noms de variables explicatifs dans vos boucles for !
Il sera plus simple de s'y retrouver avec des noms de variables explicites qu'avec un tas de variables s'appelants i
, j
, i2
, j2
, etc.
Écrire un programme qui affiche la table de 9 :
1 x 9 = 9
2 x 9 = 18
...
solution
solution
for nombre in range(1, 11):
print(nombre, "x 9 = ", nombre * 9)
Écrire un programme qui calcule la somme des chiffres de 1 à 100.
solution
solution
somme = 0
for k in range(1, 101):
somme += k
print(somme)
Fonction range
Les boucles for sont souvent associée à la fonction range`{.language-}. Cette fonction crée un itérateur (quelque chose qui produit des nombres).
Par exemple :
for x in range(10):
print(x)
Affichera les 10 premiers entiers (de 0 à 9). Le résultat de range(10)
est un objet de type range, qui est fait pour être utilisé avec l'instruction for.
On peut utiliser la fonction range
de trois façons différentes qu'elle soit appelée avec un, deux ou trois paramètres :
- de
0
à juste avantparamètre
. Par exemplerange(10)
rendra un itérateur de la suite des 10 entiers allant de 0 à 9. - de
premier paramètre
à juste avantdeuxième paramètre
. Par exemplerange(4, 10)
rendra un itérateur de la suite des 6 entiers allant de 4 à 9. premier paramètre
à juste avantdeuxième paramètre
, avec un saut detroisième paramètre
. Par exemplerange(10, -1, -1)
rendra un itérateur de la suite 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0.
Afficher à l'écran les 16 premiers entiers, allant de 0 à 15
solution
solution
for i in range(16):
print(i)
Afficher à l'écran les 13 entiers, allant de 3 à 15
solution
solution
for i in range(3, 16):
print(i)
Afficher à l'écran les multiples de 3 allant de de 3 à 15
solution
solution
for multiple_trois in range(3, 16, 3):
print(multiple_trois)
Le troisième paramètre de la fonction range n'est pas obligatoirement positif. Ceci permet de compter à rebours :
Afficher à l'écran les entiers allant de 5 à 0, dans cet ordre.
solution
solution
for x in range(5, -1, -1):
print(x)
Exercice final
Utilisez ce que vous avez appris pour vérifier la conjecture de Syracuse pour les 100 premiers entiers Exemple :
solution
solution
for x in range(100):
while x > 1:
if x % 2 == 0:
x /= 2
else:
x = 3 * x + 1