Aller au contenu

Index des sujets 2023

Corrigé sujet 19 - Année : 2023

Sujet 19 - 2023

Exercice 1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def recherche(tab,elt):
    ind_debut = 0
    ind_fin = len(tab)-1
    while ind_fin >= ind_debut:
        ind_milieu = (ind_fin+ind_debut)//2
        if tab[ind_milieu]==elt:
            return ind_milieu
        elif tab[ind_milieu]>elt:
            ind_fin=ind_milieu-1
        else:
            ind_debut=ind_milieu+1
    return -1

Commentaire

  • Bien qu'au programme (méthode diviser pour régner), cet exercice est bien plus difficile que ceux proposés habituellement en exercice 1 (recherche simple, recherche de maximum, calcul de moyennes, ... ).
  • En cas de difficultés, revenir au chapitre de première sur la recherche par dichotomie

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
ALPHABET='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def position_alphabet(lettre):
    return ord(lettre) - ord('A')

def cesar(message, decalage):
    resultat = ''
    for c in message : #(1)
        if 'A' <= c and c <='Z': #(2)
            indice = (position_alphabet(c) + decalage)%26 #(3)
            resultat = resultat + ALPHABET[indice]
        else:
            resultat = resultat + c #(4)
    return resultat
  1. La variable de parcours du message s'appelle c comme indiqué à la ligne suivante !
  2. On rappelle que Python permet de comparer des chaines de caractères (ordre alphabétique), ici on s'assure que le caractère c est une lettre majuscule.
  3. On ajoute le decalage à la position de la lettre le %26 sert ensuite à s'assurer qu'on retombe entre 0 et 25.
  4. Si la lettre n'est pas dans l'alphabet, on la laisse telle quelle