Conversion en binaire - Sujet 42 - EP NSI 2025

Moyen Officiel
Python (3.14.0)

Énoncé du problème

Exercice 1

Écrire une fonction Python appelée nb_repetitions qui prend en paramètres un élément elt et un tableau tab (type list) d’éléments du même type et qui renvoie le nombre de fois où l’élément apparaît dans le tableau.

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

Exercice 2

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

[Figure : schéma des divisions successives de 77 par 2, disposé en escalier. On divise 77 par 2 (reste 1, quotient 38), puis 38 par 2 (reste 0, quotient 19), puis 19 par 2 (reste 1, quotient 9), puis 9 par 2 (reste 1, quotient 4), puis 4 par 2 (reste 0, quotient 2), puis 2 par 2 (reste 0, quotient 1), puis 1 par 2 (reste 1, quotient 0). Une flèche rouge remontant la diagonale des restes porte la mention « Lecture du résultat ».]

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

Compléter la fonction binaire.

def binaire(a):
    '''convertit un nombre entier a en sa representation
    binaire sous forme de chaine de caractères.'''
    if a == 0:
        return '0'
    bin_a = ...
    while ...:
        bin_a = ... + bin_a
        a = ...
    return bin_a

Exemples :

>>> binaire(0)
'0'
>>> binaire(77)
'1001101'

Les contraintes ci-dessous sont ajoutées par la plateforme et ne font pas partie du sujet.

Exercice 1

Contraintes :

  • 0 <= len(tab) <= 10^4
  • tab est de type list et peut être vide
  • tab peut mélanger des éléments de types différents (par exemple int et str)
  • elt peut être de n’importe lequel de ces types
  • les éléments entiers vérifient -10^9 <= x <= 10^9 ; les éléments de type str ont une longueur inférieure ou égale à 100
  • la comparaison est décidée uniquement par == : la fonction ne doit lever aucune exception, même si elt et un élément de tab n’ont pas le même type
  • la valeur renvoyée est un int compris entre 0 et len(tab) ; elle vaut 0 si elt n’apparaît pas dans tab

Exercice 2

Contraintes :

  • a est de type int et vérifie 0 <= a <= 10^9, la valeur 0 étant incluse
  • les valeurs négatives de a sont hors du champ du sujet et ne sont pas testées
  • la valeur renvoyée est une chaîne de caractères (str) composée uniquement des caractères 0 et 1
  • la représentation renvoyée ne comporte pas de zéro initial superflu : binaire(0) renvoie '0' et, pour a > 0, le premier caractère est 1