Recherche et cesar

.

Exercice N°1 :

Enoncé Exemple :

É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.

>>> recherche([2, 3, 4, 5, 6], 5)

3

>>> recherche([2, 3, 4, 6, 7], 5)

-1

REPONSE SIMPLE RESULTAT

A=list(range(2,7,1))

B=list(range(2,8,1))

def recherche(F,n):

    if n>F[len(F)-1]or n<F[0]:

        return -1

    else:

        print(F.index(n))

    else:

        print(F.index(n))

>>> recherche(A,5)

3

>>> recherche(B,3)

1

>>> recherche(A,45)

-1

 

 

>>> recherche(A,5)

3

>>> recherche(B,3)

1

>>> recherche(A,45)

-1

>>>      

REPONSE ATTENDUE RESULTAT

A=list(range(2,7,1))

B=list(range(2,8,1))

def recherche1(F,n):

    m=len(F)

    if n>F[len(F)-1]or n<F[0]:

        return -1

    else: 

        m=int(len(F)/2)

        A1,A2=list(range(F[0],F[m],1)),list(range(F[m],F[len(F)-1]+1,1))

        print(A1,A2,F)

        while len(A1)!=1 or len(A2)!=1:

             if len(A1)==1:return len(liste(range(F[0],F[A1[0]],1)))

             if len(A2)==1:return len(liste(range(F[0],F[A2[0]],1)))

             if n<A1[m]:

                 m=int(len((A1)/2))

                 A1,A2=list(range(A1[0],A1[m],1)),list(range(A1[m],A1[len(A1)-1]+1,1))

             if n>=A2[0]:

                 m=int(len((A2)/2))

                 A1,A2=list(range(A2[0],A2[m],1)),list(range(A2[m],A2[len(A2)-1]+1,1))                

             print('h',m1)

             recherche1(list(range(F[m1],len(F),1)),n)

        

>>> recherche(A,5)

3

>>> recherche(B,3)

1

>>> recherche(A,45)

-1

 

 

>>> recherche(A,5)

3

>>> recherche(B,3)

1

>>> recherche(A,45)

-1

>>>      

.

Exercice N°2 :

Chercher :

 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
et -1 sinon.
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.

ALPHABET='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 

def position_alphabet(lettre):

    return ALPHABET.find(lettre)

 

def cesar(message, decalage):

    resultat = ''

    for ... in message :

        if lettre in ALPHABET :

            indice = ( ... )%26

            resultat = resultat + ALPHABET[indice]

        else:

            resultat = ...

    return resultat

 

 

Compléter la fonction cesar.
Exemples :

>>> 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 !'

 

.

REPONSE

.

Programme 

ALPHABET='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 

def position_alphabet(lettre):

    return ALPHABET.find(lettre)

 

def cesar(message, decalage):

    resultat = ''

    for lettre in message :

        if lettre in ALPHABET :

            indice = (ord(lettre)-65+decalage)%26

            resultat = resultat + ALPHABET[indice]

        else:

            resultat = resultat +" "

    return resultat

 

Il faut utiliser idle et copier la commande ci-dessous et appuyer sur entrée

REPONSE

 

 

>>> cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !',-5)

'BONJOUR A TOUS  VIVE LA MATIERE NSI  '

>>> cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !',4)

'FSRNSYV E XSYW  ZMZI PE QEXMIVI RWM  '

>>>