Listes Min max Moy Rch
Listes opérations
Ep 46
le document
l'algorithme
Issue de : 23-NSI-19
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-nltry:bksl-nl assert recherche([2, 3, 4, 5, 6], 5) == 3bksl-nl assert recherche([2, 3, 4, 6, 7], 5) == -1bksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-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
.
đ Script Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def position_alphabet ( lettre ):
'''Renvoie la position de la lettre dans l'alphabet'''
return ord ( lettre ) - ord ( 'A' )
def cesar ( message , decalage ):
'''Renvoie le message codé par la méthode de César
pour le decalage donné'''
resultat = ''
for ... in message :
if 'A' <= c and c <= 'Z' :
indice = ( ... ) % 26
resultat = resultat + alphabet [ indice ]
else :
resultat = ...
return resultat
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 !'
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-nltry:bksl-nl assert cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4) == 'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'bksl-nl assert cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5) == 'BONJOUR A TOUS. VIVE LA MATIERE NSI !'bksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-nl