Skip to content

Traitement à la volée

Énoncé

On va écrire un programme très simple qui lit une succession de caractères entrés par l'utilisateur et qui s'arrête dès qu'il a vu passer NBR voyelles (on posera NBR = 5 par exemple).

Le programme affichera un message et le nombre de voyelles déjà vues à chaque fois qu'il verra passer une nouvelle voyelle. Une trace d'exécution possible du programme pourra être :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Entrez la suite de caractères à analyser (entrée après chaque caractère) :
> z
> a
Voyelle : 'a' (1/5)
> r
> t
> y
Voyelle : 'y' (2/5)
> e
Voyelle : 'e' (3/5)
> u
Voyelle : 'u' (4/5)
> d
> f
> g
> o
Voyelle : 'o' (5/5)

Correction

Cliquez ici pour révéler la correction.

voyelles.py :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python3

"""
  Lit une suite de lettre et s'arrête dès qu'on a vu passer NBR voyelles.
"""

NBR = 5


def est_voyelle(lettre):
    """
    Teste si une lettre est une voyelle
    """
    return lettre.lower() in ("a", "e", "i", "o", "u", "y")


def main():
    """
    Fonction principale
    """
    print("Entrez la suite de caractères à analyser (entrée après chaque caractère) : ")
    cpt = 0
    while cpt < NBR:
        lettre = input("> ")
        if est_voyelle(lettre):
            cpt += 1
            print(f"Voyelle : '{lettre}' ({cpt}/{NBR})")


main()