Initiation à la programmation ENSAE 1A

seance3_fonction_dictionnaire_cor.tex

correction de la partie A (exercice 1)


def lettre_suivante(lettre) :
    c = ord(lettre) - 97
    c = (c + 1) % 26
    return chr (c + 97)
    
print (lettre_suivante('m'), lettre_suivante('z'))

correction de la partie B (exercice 2)


mots = ['eddard', 'catelyn', 'robb', 'sansa', 'arya', 'brandon',
        'rickon', 'theon', 'rorbert', 'cersei', 'tywin', 'jaime',
        'tyrion', 'shae', 'bronn', 'lancel', 'joffrey', 'sandor',
        'varys', 'renly', 'a' ]
        
def mots_lettre_position (liste, lettre, position) :
    res = [ ]
    for mot in liste :
        if position < len(mot) and mot[position] == lettre :
            res.append (mot)
    return res
    
r = mots_lettre_position ( mots, 'y', 1)
print (r)

correction de la partie C (exercice 3)


def dictionnaire_choisi (liste) :
    d = { }
    for mot in liste :
        for i,c in enumerate(mot) :
            d [i,c] = d.get ((i,c), []) + [ mot ]
    return d
    
def mots_lettre_position (d, lettre, position) :
    return d.get ( (position, lettre), [] )

d = dictionnaire_choisi(mots)
r = mots_lettre_position ( d, 'y', 1)
print (r)

code de César partie D (exercice 4)


m = "JENESUISPASCODE"
s = "".join( [ chr((ord(l)-65+3)%26+65) for l in m ] )
print (s)

solution du code de Vigenère (exercice 5)


def code_vigenere ( message, cle) :
    message_code = ""
    for i,c in enumerate(message) :
        d = cle[ i % len(cle) ]
        d = ord(d) - 65
        message_code += chr((ord(c)-65+d)%26+65)
    return message_code

print ( code_vigenere ("JENESUISPASCODE", "DOP") )

solution du code de Vigenère (décodage) (exercice 6)


def code_vigenere ( message, cle, decode = False) :      # ligne changée
    message_code = ""
    for i,c in enumerate(message) :
        d = cle[ i % len(cle) ]
        d = ord(d) - 65
        if decode : d = 26 - d                          # ligne ajoutée
        message_code += chr((ord(c)-65+d)%26+65)
    return message_code
    
print ( code_vigenere ("MSCHGJLGEDGRRRT", "DOP", True) )