Aller au contenu

Ep 19

▶ TĂ©lĂ©charger le sujet en pdf.

EXERCICE 1⚓

Écrire une fonction recherche qui prend en paramĂštres un tableau tab de nombres entiers triĂ©s par ordre croissant et un nombre entier n, et qui effectue une recherche dichotomique du nombre entier n dans le tableau non vide tab.

Cette fonction doit renvoyer un indice correspondant au nombre cherchĂ© s’il est dans le tableau, -1 sinon.

Exemples :

🐍 Script Python
    >>> recherche([2, 3, 4, 5, 6], 5)
    3
    >>> recherche([2, 3, 4, 6, 7], 5)
    -1

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre ici votre codebksl-nlbksl-nl



Solution

###
def recherche(tab, n):bksl-nl indpy-unddebut = 0bksl-nl indpy-undfin = len(tab) - 1bksl-nl while indpy-unddebut <= indpy-undfin:bksl-nl indpy-undmilieu = (indpy-unddebut + indpy-undfin) // 2bksl-nl if tab[indpy-undmilieu] == n:bksl-nl return indpy-undmilieubksl-nl elif tab[indpy-undmilieu] < n:bksl-nl indpy-unddebut = indpy-undmilieu + 1bksl-nl else:bksl-nl indpy-undfin = indpy-undmilieu - 1bksl-nl return -1bksl-nlbksl-nl



EXERCICE 2⚓

Le codage de CĂ©sar transforme un message en changeant chaque lettre en la dĂ©calant dans l’alphabet. Par exemple, avec un dĂ©calage de 3, le A se transforme en D, le B en E, ..., le X en A, le Y en B et le Z en C. Les autres caractĂšres (‘!’,’ ?’ ...) ne sont pas codĂ©s.

La fonction position_alphabet ci-dessous prend en paramùtre un caractùre lettre et renvoie la position de lettre dans la chaüne de caractùres ALPHABET s’il s’y trouve.

La fonction cesar prend en paramÚtre une chaßne de caractÚres message et un nombre entier decalage et renvoie le nouveau message codé avec le codage de César utilisant le décalage decalage.

RĂ©ponse

Complétez le code ci-dessous

###
ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'bksl-nlbksl-nldef positionpy-undalphabet(lettre):bksl-nl return ord(lettre) - ord('A')bksl-nlbksl-nldef cesar(message, decalage):bksl-nl resultat = ''bksl-nl for ... in message:bksl-nl if 'A' <= c and c <= 'Z':bksl-nl indice = ( ... ) % 26bksl-nl resultat = resultat + ALPHABET[indice]bksl-nl else:bksl-nl resultat = ...bksl-nl return resultatbksl-nlbksl-nl



Solution

###
ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'bksl-nlbksl-nldef positionpy-undalphabet(lettre):bksl-nl return ord(lettre) - ord('A')bksl-nlbksl-nldef cesar(message, decalage):bksl-nl resultat = ''bksl-nl for c in message:bksl-nl if 'A' <= c and c <= 'Z':bksl-nl indice = (positionpy-undalphabet(c) + decalage) % 26bksl-nl resultat = resultat + ALPHABET[indice]bksl-nl else:bksl-nl resultat = resultat + cbksl-nl return resultatbksl-nlbksl-nl



Exemples :

🐍 Script Python
    >>> cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4)
    'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'
    >>> cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5)
    'BONJOUR A TOUS. VIVE LA MATIERE NSI !'