NSI,2025-2026, Dictionnaires

#Exercice 1
dossards={1:"Lovelace",2:"Turing",3:"Church"}
temps={"Turing":53,"Lovelace":45,"Church":48}

def fonction1(dossards,temps):
    '''
    >>>associe le numero de dossard au temps
    sous la forme d'un dictionnaire
    >>>fonction1(dossards,temps)
    {1:45,2:53,3:48}
    '''
    
# exercice 2
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ "

def creation_cle(alphabet):
    '''
    associe à chaque lettre une et une seule
    lettre tirée au hasard dans l'aphabet donné
    renvoie la reponse sous la forme d'un dictionnaire
    >>>creation_cle(alphabet)
    {"A":"Q","B":Z,.............," ":E}
    '''
    
def codage(texte,cle):
    '''
    code un texte en remplaçant chaque caractère
    par le caractère correspondant dans la cle, espace
    compris. Le texte est en majuscule sans accentuation
    '''
    
def decodage(texte,cle):
    '''
    decode un texte en remplaçant chaque caractère
    par le caractère correspondant dans la cle, espace
    compris. Le texte est en majuscule sans accentuation
    '''

# exercice 3

def occurence(texte):
    '''
    >>>occurence("Nsi c'est cool")
    {"N":1,"s":2,"i":1," ":2........."o":2,"l":1}
    '''
    

def frequence(texte):
    '''
    >>>"Nsi c'est cool"
    {"N":0.0714285714285714..........}
    '''
 

proposition correction

#Exercice 1
dossards={1:"Lovelace",2:"Turing",3:"Church"}
temps={"Turing":53,"Lovelace":45,"Church":48}

def fonction1(dossards,temps):
    '''
    >>>associe le numero de dossard au temps
    sous la forme d'un dictionnaire
    >>>fonction1(dossards,temps)
    {1:45,2:53,3:48}
    '''
    retour={}
    for numero in dossards:
       retour[numero]=temps[dossards[numero]]
    return retour
    
# exercice 2
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ "
from random import *
def creation_cle(alphabet):
    '''
    associe à chaque lettre une et une seule
    lettre tirée au hasard dans l'aphabet donné
    renvoie la reponse sous la forme d'un dictionnaire
    >>>creation_cle(alphabet)
    {"A":"Q","B":"Z",.............," ":"E"}
    '''
    alphabet2=alphabet
    retour={}
    for caract in alphabet:
        ind=randint(0,len(alphabet2)-1)
        val_hasard=alphabet2[ind]
        alphabet2=alphabet2[:ind]+alphabet2[ind+1:]
        retour[caract]=val_hasard
    return retour

cle=creation_cle(alphabet)
        
    
def codage(texte,cle):
    '''
    code un texte en remplaçant chaque caractère
    par le caractère correspondant dans la cle, espace
    compris. Le texte est en majuscule sans accentuation
    '''
    retour=""
    for carac in texte:
        retour+=cle[carac]
    return retour
    
def decodage(texte,cle):
    '''
    decode un texte en remplaçant chaque caractère
    par le caractère correspondant dans la cle, espace
    compris. Le texte est en majuscule sans accentuation
    '''
    retour=""
    for car in texte:
        for c in cle:
            if cle[c]==car:
                retour+=c
    return retour
    
    
# exercice 3

def occurence(texte):
    '''
    >>>occurence("Nsi c'est cool")
    {"N":1,"s":2,"i":1," ":2........."o":2,"l":1}
    '''
    retour={}
    for caract in texte:
        if caract  in retour:
            retour[caract]+=1
        else:
            retour[caract]=1
    return retour
    
def frequence(texte):
    '''
    >>>frequence("Nsi c'est cool")
    {"N":0.0714285714285714..........}
    '''
    retour=occurence(texte)
    for key in retour:
        retour[key]=retour[key]/len(texte)
    return retour

# exo 4
def inverse_dico(dict):
    '''
    >>>dict={"A":3,"B":5}
    >>>inverse_dico(dict)
    {3:"A",5:"B"}
    '''
    retour={}
    for cle in dict:
        retour[dict[cle]]=cle
    return retour