Aller au contenu

Sujet n°15

Sujet original

Pour télécharger l'énoncé original, cliquer ici.

Exercice n°1

Écrire une fonction Python appelée nb_repetitions() qui prend en paramètres un élément elt et une liste tab et renvoie le nombre de fois où l’élément apparaît dans la liste.

Commentaires

Ici, le mot « liste » est à comprendre dans le sens « liste Python » (c'est-à-dire tableau) plutôt que dans le sens du type abstrait de données liste étudié en Terminale.

Exemples

>>> nb_repetitions(5, [2, 5, 3, 5, 6, 9, 5]) 
3

>>> nb_repetitions('A', ['B', 'A', 'B', 'A', 'R']) 
2

>>> nb_repetitions(12, [1, '!', 7, 21, 36, 44]) 
0
Commentaires

Le dernier exemple mélange les type d'éléments dans le tableau, ce qui n'est pas souhaitable selon les programmes officiels.

Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def nb_repetitions(elt, tab):
    """
    elt - valeur de type inconnu
    tab - list, tableau d'éléments
    Sortie: int, nombre d'occurences de elt dans tab
    """
    compte = 0
    for valeur in tab:
        if valeur == elt:
            compte += 1
    return compte


if __name__ == '__main__':
    print(nb_repetitions(5, [2, 5, 3, 5, 6, 9, 5]) == 3)
    print(nb_repetitions('A', ['B', 'A', 'B', 'A', 'R']) == 2)
    print(nb_repetitions(12, [1, '!', 7, 21, 36, 44]) == 0)

Exercice n°2

Pour rappel, la conversion d’un nombre entier positif en binaire peut s’effectuer à l’aide des divisions successives comme illustré ici :

divisions successives

Image du sujet original

Merci à S. Hoarau, auteur de la figure plus explicite qui illustre le fait de s’arrêter quand le quotient est 0, plutôt que lorsqu'il vaut 1. L'illustration originale est :

divisions successives

Voici une fonction Python basée sur la méthode des divisions successives permettant de convertir un nombre entier positif en binaire :

1
2
3
4
5
6
7
def binaire(a): 
    bin_a = str(...) 
    a = a // 2 
    while a ... : 
        bin_a = ...(a%2) + ... 
        a = ... 
    return bin_a

Compléter la fonction binaire.

Exemples

>>> binaire(0)
'0'

>>> binaire(77) 
'1001101'
Commentaires sur le code original
  1. Pour télécharger l'original du fichier à compléter, cliquer ici.

  2. Identifiez bien le type de la valeur en sortie : c'est une chaîne de caractères.

Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def binaire(a):
    bin_a = str(a%2)
    a = a // 2
    while a != 0 :
        bin_a = str(a%2) + bin_a
        a = a//2
    return bin_a


if __name__ == '__main__':
    print(binaire(0) == '0')
    print(binaire(77) == '1001101')
    print(binaire(123) == '1111011')