Conversion en binaire - Sujet 42 - EP NSI 2025
É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^4tabest de typelistet peut être videtabpeut mélanger des éléments de types différents (par exempleintetstr)eltpeut être de n’importe lequel de ces types- les éléments entiers vérifient
-10^9 <= x <= 10^9; les éléments de typestront une longueur inférieure ou égale à100 - la comparaison est décidée uniquement par
==: la fonction ne doit lever aucune exception, même sieltet un élément detabn’ont pas le même type - la valeur renvoyée est un
intcompris entre0etlen(tab); elle vaut0sieltn’apparaît pas danstab
Exercice 2
Contraintes :
aest de typeintet vérifie0 <= a <= 10^9, la valeur0étant incluse- les valeurs négatives de
asont 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ères0et1 - la représentation renvoyée ne comporte pas de zéro initial superflu :
binaire(0)renvoie'0'et, poura > 0, le premier caractère est1