1. Créer un fichier python tp_dictionnaire et copier le code ci-dessous.
Le fichier est à me transmettre via l’ENT à la fin de la séance.
# TP NSI à renvoyer à la fin des 2 heures via l'ENT
# Nom et Prénom :
###################################
## Exercice 1 : QCM ##
###################################
## Compléter le dictionnaire en indiquant vos réponses
mes_reponses_au_qcm={
"question 1": "Votre réponse",
"question 2": "Votre réponse",
"question 3": "Votre réponse",
"question 4": "Votre réponse",
"question 5": "Votre réponse",
"question 6": "Votre réponse",
"question 7": "Votre réponse",
"question 8": "Votre réponse",
"question 9": "Votre réponse",
"question 10": "Votre réponse",
}
################################################################
## Exercice 2 : frequence caracteres dans un texte ##
################################################################
bio_Turing="Alan Mathison Turing, né le 23 juin 1912 à Londres et mort le 7 juin 1954 à Wilmslow, est un mathématicien et cryptologue britannique, auteur de travaux qui fondent scientifiquement l'informatique.Pour résoudre le problème fondamental de la décidabilité en arithmétique, il présente en 1936 une expérience de pensée que l'on nommera ensuite machine de Turing et des concepts de programme et de programmation, qui prendront tout leur sens avec la diffusion des ordinateurs, dans la seconde moitié du xxe siècle. Son modèle a contribué à établir la thèse de Church, qui définit le concept mathématique intuitif de fonction calculable."
def frequence_caracteres(mon_texte):
'''
retourne la fréquence des caractères dans un texte donné sous la forme d'un dictionnaire
les clés sont les caractères
les valeurs sont les fréquences associées
un espace est considéré comme un caractère
On transformera les majuscules en minuscules
: mon_texte : str
: return : dict()
>>> mon_texte="Alan Turing"
>>> print(frequence_caracteres(mon_texte))
{'a': 0.18181818181818182, 'l': 0.09090909090909091, 'n': 0.18181818181818182, ' ': 0.09090909090909091, 't': 0.09090909090909091, 'u': 0.09090909090909091, 'r': 0.09090909090909091, 'i': 0.09090909090909091, 'g': 0.09090909090909091}
'''
# on transforme toutes les majuscules en minuscules
# grâce à la méthode lower() des str
mon_texte=mon_texte.lower()
def frequence_la_plus_grande(mon_texte):
'''
retourne la fréquence du caractère,autre que l'espace, le plus fréquent dans un texte
on ne distinguera pas majuscules et minuscules
: mon_texte : str
: retour : float
>>>print(frequence_la_plus_grande(bio_Turing))
0.10126582278481013
'''
def caracteres_plus_frequents(mon_texte):
'''
retourne sous la forme d'un tuple les caractères
les plus fréquents d'un texte autre que l'espace
: mon_texte : str
: return : tuple
>>>mon_texte="Alan Turing"
>>>print(caracteres_plus_frequents(mon_texte))
('a', 'n')
>>>print(caracteres_plus_frequents(bio_Turing))
('e',)
'''
##################################################
## Exercice 3 : gestion de commandes ##
##################################################
commandes={'0': {'numero': 'EMA70495', 'nom': 'Ada Lovelace', 'adresse': '64 rue Jocelyne Troccaz', 'ville': 'Tours', 'etat': 'En cours'},
'1': {'numero': 'VWD74550', 'nom': 'Dorothy Vaughan', 'adresse': '33 rue Al-Kindi', 'ville': 'Bordeaux', 'etat': 'En cours'},
'2': {'numero': 'SWK65993', 'nom': 'Gilles Kahn', 'adresse': '53 rue Ingrid Daubechies', 'ville': 'Lille', 'etat': 'En cours'},
'3': {'numero': 'NKR34542', 'nom': 'Ada Lovelace', 'adresse': '98 rue Jules César', 'ville': 'Bordeaux', 'etat': 'Livrée'},
'4': {'numero': 'GEG58414', 'nom': 'Jacques-Louis Lions', 'adresse': '84 rue Al-Kindi', 'ville': 'Rennes', 'etat': 'Retour'},
'5': {'numero': 'FZA36963', 'nom': 'Al-Khwarizmi', 'adresse': '73 rue Adi Shamir', 'ville': 'Marseille', 'etat': 'En cours'},
'6': {'numero': 'QWE58690', 'nom': 'Alonzo Church', 'adresse': '47 rue Jules César', 'ville': 'Paris', 'etat': 'Retour'},
'7': {'numero': 'NLY90647', 'nom': 'Hypatie d’Alexandrie', 'adresse': '51 rue Whitfield Diffie', 'ville': 'Bordeaux', 'etat': 'En cours'},
'8': {'numero': 'VVL26047', 'nom': 'Alonzo Church', 'adresse': '6: rue Adi Shamir', 'ville': 'Montpellier', 'etat': 'En cours'},
'9': {'numero': 'CXO07384', 'nom': 'Jacques-Louis Lions', 'adresse': '30 rue Whitfield Diffie', 'ville': 'Paris', 'etat': 'Livrée'}
}
def afficher_commande_numero(numero_commande):
'''
affiche la commande correspondant au numero
: numero : str
: return : print
>>>afficher_commande_numero('NLY90647')
commande :NLY90647
Nom :Hypatie d’Alexandrie
Adresse :51 rue Whitfield Diffie
Ville :Bordeaux
Etat :En cours
>>>afficher_commande_numero('NLY90687')
NLY90687: numero commande non enregistré
'''
global commandes
def recherche_par_nom(nom):
'''
recherche les commandes correspondantes au nom
: nom : str
: return : un tuple contenant les commandes
>>> print(recherche_par_nom("Ada Lovelace"))
({'numero': 'EMA70495', 'nom': 'Ada Lovelace', 'adresse': '64 rue Jocelyne Troccaz', 'ville': 'Tours', 'etat': 'En cours'},
{'numero': 'NKR34542', 'nom': 'Ada Lovelace', 'adresse': '98 rue Jules César', 'ville': 'Bordeaux', 'etat': 'Livrée'})
>>>print(recherche_par_nom("Alan Turing"))
()
'''
global commandes
def ajouter_commande(numero,nom,adresse,ville,etat):
'''
ajoute une commande
: numero,nom,adresse,ville,etat : str
: return : le dict commande modifié
>>>commandes={'0': {'numero': 'EMA70495', 'nom': 'Ada Lovelace', 'adresse': '64 rue Jocelyne Troccaz', 'ville': 'Tours', 'etat': 'En cours'},
'1': {'numero': 'VWD74550', 'nom': 'Dorothy Vaughan', 'adresse': '33 rue Al-Kindi', 'ville': 'Bordeaux', 'etat': 'En cours'},
'2': {'numero': 'SWK65993', 'nom': 'Gilles Kahn', 'adresse': '53 rue Ingrid Daubechies', 'ville': 'Lille', 'etat': 'En cours'},
'3': {'numero': 'NKR34542', 'nom': 'Ada Lovelace', 'adresse': '98 rue Jules César', 'ville': 'Bordeaux', 'etat': 'Livrée'},
'4': {'numero': 'GEG58414', 'nom': 'Jacques-Louis Lions', 'adresse': '84 rue Al-Kindi', 'ville': 'Rennes', 'etat': 'Retour'},
'5': {'numero': 'FZA36963', 'nom': 'Al-Khwarizmi', 'adresse': '73 rue Adi Shamir', 'ville': 'Marseille', 'etat': 'En cours'},
'6': {'numero': 'QWE58690', 'nom': 'Alonzo Church', 'adresse': '47 rue Jules César', 'ville': 'Paris', 'etat': 'Retour'},
'7': {'numero': 'NLY90647', 'nom': 'Hypatie d’Alexandrie', 'adresse': '51 rue Whitfield Diffie', 'ville': 'Bordeaux', 'etat': 'En cours'},
'8': {'numero': 'VVL26047', 'nom': 'Alonzo Church', 'adresse': '6: rue Adi Shamir', 'ville': 'Montpellier', 'etat': 'En cours'},
'9': {'numero': 'CXO07384', 'nom': 'Jacques-Louis Lions', 'adresse': '30 rue Whitfield Diffie', 'ville': 'Paris', 'etat': 'Livrée'}
}
>>>ajouter_commande("AZE1029","Alan Turin","314 rue d'Enigma","Londres","En cours")
>>>print(commandes)
{'0': {'numero': 'EMA70495', 'nom': 'Ada Lovelace', 'adresse': '64 rue Jocelyne Troccaz', 'ville': 'Tours', 'etat': 'En cours'},
'1': {'numero': 'VWD74550', 'nom': 'Dorothy Vaughan', 'adresse': '33 rue Al-Kindi', 'ville': 'Bordeaux', 'etat': 'En cours'},
'2': {'numero': 'SWK65993', 'nom': 'Gilles Kahn', 'adresse': '53 rue Ingrid Daubechies', 'ville': 'Lille', 'etat': 'En cours'},
'3': {'numero': 'NKR34542', 'nom': 'Ada Lovelace', 'adresse': '98 rue Jules César', 'ville': 'Bordeaux', 'etat': 'Livrée'},
'4': {'numero': 'GEG58414', 'nom': 'Jacques-Louis Lions', 'adresse': '84 rue Al-Kindi', 'ville': 'Rennes', 'etat': 'Retour'},
'5': {'numero': 'FZA36963', 'nom': 'Al-Khwarizmi', 'adresse': '73 rue Adi Shamir', 'ville': 'Marseille', 'etat': 'En cours'},
'6': {'numero': 'QWE58690', 'nom': 'Alonzo Church', 'adresse': '47 rue Jules César', 'ville': 'Paris', 'etat': 'Retour'},
'7': {'numero': 'NLY90647', 'nom': 'Hypatie d’Alexandrie', 'adresse': '51 rue Whitfield Diffie', 'ville': 'Bordeaux', 'etat': 'En cours'},
'8': {'numero': 'VVL26047', 'nom': 'Alonzo Church', 'adresse': '6: rue Adi Shamir', 'ville': 'Montpellier', 'etat': 'En cours'},
'9': {'numero': 'CXO07384', 'nom': 'Jacques-Louis Lions', 'adresse': '30 rue Whitfield Diffie', 'ville': 'Paris', 'etat': 'Livrée'}
'11': {'numero': 'AZE1029', 'nom': 'Alan Turin', 'adresse': "314 rue d'Enigma", 'ville': 'Londres', 'etat': 'En cours'}
}
'''
global commandes
def supprimer_commande(numero):
'''
supprime la commande correspondant au n°
: numero : str
: return : le dict commandes
>>>supprimer_commande('EMA70495')
>>>print(commandes)
{'1': {'numero': 'VWD74550', 'nom': 'Dorothy Vaughan', 'adresse': '33 rue Al-Kindi', 'ville': 'Bordeaux', 'etat': 'En cours'},
'2': {'numero': 'SWK65993', 'nom': 'Gilles Kahn', 'adresse': '53 rue Ingrid Daubechies', 'ville': 'Lille', 'etat': 'En cours'},
'3': {'numero': 'NKR34542', 'nom': 'Ada Lovelace', 'adresse': '98 rue Jules César', 'ville': 'Bordeaux', 'etat': 'Livrée'},
'4': {'numero': 'GEG58414', 'nom': 'Jacques-Louis Lions', 'adresse': '84 rue Al-Kindi', 'ville': 'Rennes', 'etat': 'Retour'},
'5': {'numero': 'FZA36963', 'nom': 'Al-Khwarizmi', 'adresse': '73 rue Adi Shamir', 'ville': 'Marseille', 'etat': 'En cours'},
'6': {'numero': 'QWE58690', 'nom': 'Alonzo Church', 'adresse': '47 rue Jules César', 'ville': 'Paris', 'etat': 'Retour'},
'7': {'numero': 'NLY90647', 'nom': 'Hypatie d’Alexandrie', 'adresse': '51 rue Whitfield Diffie', 'ville': 'Bordeaux', 'etat': 'En cours'},
'8': {'numero': 'VVL26047', 'nom': 'Alonzo Church', 'adresse': '6: rue Adi Shamir', 'ville': 'Montpellier', 'etat': 'En cours'},
'9': {'numero': 'CXO07384', 'nom': 'Jacques-Louis Lions', 'adresse': '30 rue Whitfield Diffie', 'ville': 'Paris', 'etat': 'Livrée'}}
>>> supprimer_commande('EMA70895')
numero de commande non existant
'''
global commandes
###################################
## Exercice 4 : MORSE ##
###################################
# compléter les fonctions pour qu'elles
# répondent à leur docstring
dict_morse={
'A':'- ---',
'B':'--- - - -',
'C':'--- - --- -',
'D':'--- - -',
'E':'-',
'F':'- - --- -',
'G':'--- --- -',
'H':'- - - -',
'I':'- -',
'J':'- --- --- ---',
'K':'--- - ---',
'L':'- --- - -',
'M':'--- ---',
'N':'--- -',
'O':'--- --- ---',
'P':'- --- --- -',
'Q':'--- --- - ---',
'R':'- --- -',
'S':'- - -',
'T':'---',
'U':'- - ---',
'V':'- - - ---',
'W':'- --- ---',
'X':'--- - - ---',
'Y':'--- - --- ---',
'Z':'--- --- - -',
}
def traduction_en_morse(texte):
'''
traduit un texte en majuscules en morse
avec un espace entre chaque lettre
et 7 espaces entre chaque mot
texte : str
return : str
>>>mon_texte="LE MORSE EST UN LANGAGE CODE"
>>>traduction_en_morse(mon_texte)=="- --- - - - --- --- --- --- --- - --- - - - - - - - - - --- - - --- --- - - --- - - - --- --- - --- --- - - --- --- --- - - --- - --- - --- --- --- --- - - -"
True
'''
def dictionnaire_morse_caractere(mon_dict):
'''
retourne un dictionnaire dont les clés
sont des caractères morses et les valeurs
les lettres associées
: mon_dict : un dictionnaire qui traduit des
caractères en morse
: return : dict()
>>> mon_morse_dico=dictionnaire_morse_caractere(dict_morse)
>>> mon_morse_dico['--- --- -']='G'
'''
def traduction_morse_francais(mon_code):
'''
traduit un code en morse en texte en français
: mon_code: str
: return : str
>>>mon_texte="LE MORSE EST UN LANGAGE CODE"
>>>code_a_decoder=traduction_en_morse(mon_texte)
>>>traduction_morse_francais(code_a_decoder))=="LE MORSE EST UN LANGAGE CODE"
True
'''
global dict_morse
Exercice 1 ( 5 pts )
QCM : il peut y avoir plusieurs bonnes réponses par question
Choisir la bonne réponse pour chacune des questions.
La reporter dans votre fichier python en remplaçant votre réponse par la bonne réponse.