Première NSI

Fiche Exercices sur la séquence "Chaîne de caractères"

Correction des Exercices sur les bases de Python

Exercice 1

Écrire une fonction somme() qui renvoie la somme de trois valeurs passées en paramètres.

In [1]:
# Une solution possible

def somme(nombre1, nombre2, nombre3):
    """
    La fonction calcule la somme de trois nombres données en paramètre
    @param nombre1: (float) nombre réel 
    @param nombre2: (float) nombre réel
    @param nombre3: (float) nombre réel
    @return: (float) la fonction renvoie la somme des nombres nombre1, nombre2 et nombre3
    """    
    resultat = nombre1 + nombre2 + nombre3
    return resultat

# Jeu d'essai
print("Pass test1 --> ",somme(1, 5, 7) == 13)
print("Pass test2 --> ",int(somme(1.2, -6, 5)*10) == 2)
Pass test1 -->  True
Pass test2 -->  True
In [2]:
# Une autre solution possible

def somme1(nombre1, nombre2, nombre3):
    """
    La fonction calcule la somme de trois nombres données en paramètre
    @param nombre1: (float) nombre réel 
    @param nombre2: (float) nombre réel
    @param nombre3: (float) nombre réel
    @return: (float) la fonction renvoie la somme des nombres nombre1, nombre2 et nombre3
    """
    return nombre1 + nombre2 + nombre3

# Jeu d'essai
print("Pass test1 --> ",somme(1, 5, 7) == 13)
print("Pass test2 --> ",int(somme(1.2, -6, 5)*10) == 2)
Pass test1 -->  True
Pass test2 -->  True

Exercice 2

Écrire une fonction mention() qui à partir d’une note renvoie la mention correspondant (None,P,AB,B,TB)

In [3]:
# Une solution possible 
# Ici on utlise un seul return, la réponse est est stockée dans une variable qui est retournée à la fin.


def mention(note):
    """
    La fonction détermine la mention pour une note donnée en paramaètre
    @param note: (float) nombre réel 
    @return: (string) la fonction renvoie la mention
    """
    assert 0 <= note and note <= 20, "La note doit être comprise entre 0 et 20 inclus"
    if 0 <= note < 10:
        resultat = None
    elif note < 12:
        resultat = "P"
    elif note < 14:
        resultat = "AB"
    elif note < 16:
        resultat = "B"
    elif 16 <= note <= 20:
        resultat = "TB"
    return resultat
    
# Jeu d'essai
print("Pass test1 --> ",mention(8) == None)
print("Pass test2 --> ",mention(10) == "P")
print("Pass test3 --> ",mention(11) == "P")
print("Pass test4 --> ",mention(12) == "AB")
print("Pass test5 --> ",mention(13) == "AB")
print("Pass test6 --> ",mention(14) == "B")
print("Pass test7 --> ",mention(15) == "B")
print("Pass test8 --> ",mention(16) == "TB")
print("Pass test9 --> ",mention(18) == "TB")
Pass test1 -->  True
Pass test2 -->  True
Pass test3 -->  True
Pass test4 -->  True
Pass test5 -->  True
Pass test6 -->  True
Pass test7 -->  True
Pass test8 -->  True
Pass test9 -->  True
In [4]:
# Une autre solution 
# Ici on utlise un return après chaque condition.

def mention(note):
    """
    La fonction détermine la mention pour une note donnée en paramaètre
    @param note: (float) nombre réel 
    @return: (string) la fonction renvoie la mention
    """
    assert 0 <= note and note <= 20, "La note doit être comprise entre 0 et 20 inclus"
    if 0 <= note < 10:
        return None
    elif note < 12:
        return "P"
    elif note < 14:
        return "AB"
    elif note < 16:
        return "B"
    elif 16 <= note <= 20:
        return "TB"
    
    
# Jeu d'essai
print("Pass test1 --> ",mention(8) == None)
print("Pass test2 --> ",mention(10) == "P")
print("Pass test3 --> ",mention(11) == "P")
print("Pass test4 --> ",mention(12) == "AB")
print("Pass test5 --> ",mention(13) == "AB")
print("Pass test6 --> ",mention(14) == "B")
print("Pass test7 --> ",mention(15) == "B")
print("Pass test8 --> ",mention(16) == "TB")
print("Pass test9 --> ",mention(18) == "TB")
Pass test1 -->  True
Pass test2 -->  True
Pass test3 -->  True
Pass test4 -->  True
Pass test5 -->  True
Pass test6 -->  True
Pass test7 -->  True
Pass test8 -->  True
Pass test9 -->  True

Exercice 3

Écrire une fonction fizzbuzz(n) qui renvoie :
la chaîne "Fizz" si le nombre est un multiple de 3.
la chaîne "Buzz" si le nombre est un multiple de 5.
None sinon.

In [6]:
# Une solution possible.
# Mais cette fonction ne traite pas le cas ou un nombre est à la fois divisible par 3 et 5. 
#On devrait avoir 'FizzBuzz' ou 'BuzzFizz' en retour

def fizzbuzz1(nombre):
    """
    La fonction détermine si un nombre est divisible par 3 et 5
    @param nombre: (int) entier naturel 
    @return: (string) la fonction renvoie une chaine de caractère si divisible par 3 ou 5 sinon ne retourne rien
    """  
    assert nombre >= 0 and isinstance(nombre, int),"Vous devez entrer un entier naturel"
    if nombre % 3 == 0:
        return "Fizz"
    elif nombre % 5 == 0:
        return  "Buzz"
    else:
        return None
       
    
# Jeu d'essai
print("Pass test1 --> ",fizzbuzz1(1) == None)
print("Pass test2 --> ",fizzbuzz1(3) == "Fizz")
print("Pass test3 --> ",fizzbuzz1(5) == "Buzz")
print("Pass test4 --> ",fizzbuzz1(6) == "Fizz")
print("Pass test5 --> ",fizzbuzz1(7) == None)
Pass test1 -->  True
Pass test2 -->  True
Pass test3 -->  True
Pass test4 -->  True
Pass test5 -->  True
In [8]:
# Autre solution plus complète

def fizzbuzz(nombre):
    """
    La fonction détermine si un nombre est divisible par 3 et 5
    @param nombre: (int) entier naturel 
    @return: (string) la fonction renvoie une chaine de caractère si divisible par 3 ou 5 sinon ne retourne rien
    """  
    assert nombre >= 0 and isinstance(nombre, int),"Vous devez entrer un entier naturel"
    chaine = ""
    if nombre % 3 == 0:
        chaine = chaine + "Fizz"
        if nombre % 5 == 0:
            chaine = chaine + "Buzz"
    elif nombre % 5 == 0:
        chaine = chaine + "Buzz"
    else:
        chaine = None
    return chaine
       
    
# Jeu d'essai
print("Pass test1 --> ",fizzbuzz(1) == None)
print("Pass test2 --> ",fizzbuzz(3) == "Fizz")
print("Pass test3 --> ",fizzbuzz(5) == "Buzz")
print("Pass test4 --> ",fizzbuzz(6) == "Fizz")
print("Pass test5 --> ",fizzbuzz(7) == None)
Pass test1 -->  True
Pass test2 -->  True
Pass test3 -->  True
Pass test4 -->  True
Pass test5 -->  True
In [9]:
# Pour nombre = 15 . Nombre divisible par 3 et par 5
print(fizzbuzz(15))
FizzBuzz

Exercice 4

Écrire une fonction fizzbuzz100() utilisant la fonctionfizzbuzz() de l'exercice pécédent.
Cette fonction fizzbuzz100 énumère les nombres de 1 à 100 et affiche :
1:None, 2:None, 3:Fizz, 4:None, 5:Buzz, 6:Fizz, 7:None, ... etc jusqu'à 100

In [10]:
# Une solution possible
def fizzbuzz100():
    for nombre in range (1, 101):
        print(f"{nombre} : {fizzbuzz(nombre)}")

fizzbuzz100()
1 : None
2 : None
3 : Fizz
4 : None
5 : Buzz
6 : Fizz
7 : None
8 : None
9 : Fizz
10 : Buzz
11 : None
12 : Fizz
13 : None
14 : None
15 : FizzBuzz
16 : None
17 : None
18 : Fizz
19 : None
20 : Buzz
21 : Fizz
22 : None
23 : None
24 : Fizz
25 : Buzz
26 : None
27 : Fizz
28 : None
29 : None
30 : FizzBuzz
31 : None
32 : None
33 : Fizz
34 : None
35 : Buzz
36 : Fizz
37 : None
38 : None
39 : Fizz
40 : Buzz
41 : None
42 : Fizz
43 : None
44 : None
45 : FizzBuzz
46 : None
47 : None
48 : Fizz
49 : None
50 : Buzz
51 : Fizz
52 : None
53 : None
54 : Fizz
55 : Buzz
56 : None
57 : Fizz
58 : None
59 : None
60 : FizzBuzz
61 : None
62 : None
63 : Fizz
64 : None
65 : Buzz
66 : Fizz
67 : None
68 : None
69 : Fizz
70 : Buzz
71 : None
72 : Fizz
73 : None
74 : None
75 : FizzBuzz
76 : None
77 : None
78 : Fizz
79 : None
80 : Buzz
81 : Fizz
82 : None
83 : None
84 : Fizz
85 : Buzz
86 : None
87 : Fizz
88 : None
89 : None
90 : FizzBuzz
91 : None
92 : None
93 : Fizz
94 : None
95 : Buzz
96 : Fizz
97 : None
98 : None
99 : Fizz
100 : Buzz