C5.2 : Boucle for

Prendre connaissance

Prendre connaissance de Mémo : Boucle for et de Mémo : Tableau pas à pas.

Application pour bien démarrer : analyse de code

On s'intéresse au programme suivant :

print("Début de la boucle")
for c in "NSI":
    print(c + ".", end="")
print("Fin de la boucle")

1) Sur feuille, construire le tableau du déroulement pas à pas du programme.

2) Sur l'ordinateur, avec Thonny :

3) Sur l'ordinateur, avec pythontutor :

Application : boucles avec range

Applications III_app1 : Les objets range

Sur feuille : Indiquer les séquences de valeurs correspondant aux objets range suivants :

Application III_app2 : Analyse d'un code

On s'intéresse au programme suivant :

print("Début de la boucle")
for i in range(4):
    if i < 2:
        print(i+10)
    else:
        print(i+100)
print("Fin de la boucle")

1) Sur feuille, construire le tableau du déroulement pas à pas du programme.

2) Sur l'ordinateur, avec Thonny :

3) Sur l'ordinateur, avec pythontutor :

Applications

Applications avec uniquement la variable de boucle

Application IV.1_app1

En utilisant la boucle for, écrire un programme qui affiche la liste des nombres paires de 2 à 50.

Si possible, on écrira deux versions différentes de ce programme.

Afficher la correction
# Version n° 1
for nb in range(2,51):
    if nb % 2 == 0:
        print(nb)

# Version n° 2
for nb in range(2,51,2):
    print(nb)

Application IV.1_app2

Dans cet exercice, on souhaite :

1) Écrire une fonction affiche_1_a_n(n) qui prend un nombre entier en paramètre et affiche les entiers de 1 à ce nombre.

2.a) Dans le programme principal, écrire les lignes de code qui permettent de demander un nombre à l'utilisateur et le stocker dans une variable n_utilisateur.

2.b) Compléter le programme principal avec l'appel de la fonction affiche_1_a_n.

Afficher la correction
# Définition des fonctions
def affiche_1_a_n(n:int):
    for nb in range(1, n+1):
        print(nb)

# Programme principal
n_utilisateur = int(input("Entrer un nombre entier positif : "))
affiche_1_a_n(n_utilisateur)

Application IV.1_app3

Sur feuille

On s'intéresse à la fonction suivante :

def fct(c:str):
    for i in range(len(c)):
        print(c[i])

1) Expliquer ce que fait cette fonction et lui donner un nom explicite.

2) Modifier le code de cette fonction pour qu'elle n'affiche qu'une lettre sur deux.

Afficher la correction

1) Cette fonction affiche ligne par ligne les lettres d'une chaine de caractères passée en paramètre.

2)

# Définition des fonctions
def affiche_lettres(c:str):
    for i in range(len(c)):
        print(c[i])

def affiche_lettres_sur_2_v1(c:str):
    for i in range(len(c)):
        if i % 2 == 0:
            print(c[i])

def affiche_lettres_sur_2_v2(c:str):
    for i in range(0, len(c), 2):
        print(c[i])

# Programme principal
affiche_lettres("Bonjour")
print('-----')
affiche_lettres_sur_2_v1("Bonjour")
print('-----')
affiche_lettres_sur_2_v2("Bonjour")

Applications avec une variable supplémentaire

Application IV.2_app1

Écrire un programme qui calcule puis affiche la somme des nombres de 1 à 50.

Afficher la correction
# Calcul de la somme
somme = 0
for i in range(1,51):
    somme = somme + i
# Affichage de la somme
print(somme)

Application IV.2_app2

1) Écrire un fonction somme_1_a_n(n) qui prend un entier positif en paramètre et renvoie la somme de 1 à ce nombre n.

2) Compléter le programmer principal de façon à afficher la somme des nombres entiers de 1 à un nombre entier entré par l'utilisateur.

Afficher la correction
# Définition des fonctions
def somme_1_a_n(n:int)->int:
    somme = 0
    for i in range(1,51):
        somme = somme + i
    return somme

# programme principal
n_utilisateur = int(input('Entrer un nombre entier positif : '))
print(somme_1_a_n(n_utilisateur))

Application IV.2_app3

Écrire une fonction ajoute_points(chaine:str)->str qui prend une chaine de caractères en paramètre et renvoie une chaine de caractères identique avec des points après chaque lettre.

Ainsi avec_points('abc') doit renvoyer 'a.b.c.'

Afficher la correction
# Définition des fonctions
def ajoute_points(chaine:str)->str:
    chaine_avec_points = ""
    for lettre in chaine:
        chaine_avec_points = chaine_avec_points + lettre + '.'
    return chaine_avec_points

# programme principal
ch = input('Entrer une chaine de caractères : ')
print(ajoute_points(ch))