Corrigé - Atelier 6 - For
Essayez de faire l'atelier avant de consulter ce corrigé.
Compréhension
Numéro 1
total vaut 10 (1 + 2 + 3 + 4 = 10).
Numéro 2
10
8
6
4
2
Écriture
Numéro 3
for i in range(1, 11):
print(i)
Numéro 4
for i in range(10, 0, -1):
print(i)
Numéro 5
for i in range(5, 101, 5):
print(i)
Numéro 6
total: int = 0
for i in range(1, 101):
total = total + i
print(f"La somme de tous les nombres entre 1 et 100: {total}")
Numéro 7
nombre: int
resultat: int = 1
nombre = int(input("Veuillez entrer un nombre: "))
for i in range(1, nombre + 1):
resultat = resultat * i
print(f"{nombre}! = {resultat}")
Numéro 8
hauteur: int
hauteur = int(input("Combien de lignes? "))
for i in range(1, hauteur + 1):
print("*" * i)
Numéro 9
nombre1: int
nombre2: int
resultat: int = 0
nombre1 = int(input("Veuillez entrer un nombre: "))
nombre2 = int(input("Veuillez entrer un nombre: "))
for i in range(nombre2):
resultat = resultat + nombre1
print(f"{nombre1} * {nombre2} = {resultat}")
Numéro 10
nb: int
nombreOriginal: int
nbChiffres: int
inverse: int = 0
nb = int(input("Veuillez entrer un nombre: "))
nombreOriginal = nb
nbChiffres = len(str(nb))
for i in range(nbChiffres):
inverse = inverse * 10 + nb % 10
nb = nb // 10
print(f"L'inverse de {nombreOriginal} est {inverse}")
Analyse
Numéro 12
total = 0 est à l'intérieur de la boucle, il est donc réinitialisé à chaque itération avant d'ajouter i. Le résultat n'est jamais réellement accumulé, on obtient seulement la valeur du dernier i (10) au lieu de la somme (55). Il faut initialiser total avant la boucle:
total: int = 0
for i in range(1, 11):
total = total + i
print(total)
Numéro 13
range(1, 12) s'arrête à 11, la 12e partie n'est jamais affichée puisque la borne de fin est exclusive. Il faut utiliser range(1, 13):
for partie in range(1, 13):
print(partie)
Numéro 14
Le code fonctionne correctement, mais utilise un if avec un modulo pour filtrer les multiples de 5, alors que le pas (3e argument) de range fait exactement ça, plus simplement:
for i in range(5, 51, 5):
print(i)