Aller au contenu

TP - Dictionnaires⚓︎

Exercice 1 : Utilisation de dictionnaires

  1. Écrire une fonction saisie_eleve() permettant de saisir des informations concernant un élève : login, nom, prénom, date de naissance, moyenne obtenue en NSI et qui renvoie un dictionnaire contenant ces informations.

    Exemples :

    • la valeur « rchraka » sera associée à la clé « login » ;
    • la valeur « Chraka » sera associée à la clé « nom ».

    Conseil : on pourra s'inspirer de l'exemple « Carte de visite » vu en cours.

  2. Ecrire une fonction saisie_eleves(nombre_eleves) permettre la saisie du nombre d'élèves nombre_eleves et les mémoriser dans une liste. Ce sera donc une liste de dictionnaires !

  3. Ecrire une fonction affiche_eleves(liste_eleves) affichant la liste des élèves liste_eleves présentée de la manière suivante :

pdupont : Dupont Pierre 15/01/2005 - Note :14
lduponte : Dupontel Léonie 11/11/2006 - Note :17.5

Exercice 2 : Un dictionnaire pour compter les mots

  1. Déclarer le dictionnaire suivant dans un programme :

    un_dico={'toto':3, 'titi':1, 'tutu':42}
    

  2. Sans modifier la ligne précédente, écrire les lignes de code qui modifient ce dictionnaire de telle sorte qu'il contienne également une clé 'tata' associée à la valeur 8.

  3. Écrire les lignes de code qui modifient ce dictionnaire de telle sorte que la valeur associée à la clé 'titi' soit augmentée de 1.

  4. Écrire une fonction maj_dico_compte(dico, mot) qui prend en paramètre:

    • un dictionnaire (dico) dont les clés sont des mots et les valeurs sont des entiers,
    • et un mot.

    La fonction devra incrémenter de 1 la valeur associée au mot dans le dictionnaire s'il est déjà présent. Sinon, elle ajoutera le mot au dictionnaire avec la valeur 1.

    Exemple:

    >>> print(un_dico)
    {'tata': 8, 'tutu': 42, 'titi': 2, 'toto': 3}
    >>> maj_dico_compte(un_dico,'titi')
    >>> print(un_dico)
    {'tata': 8, 'tutu': 42, 'titi': 3, 'toto': 3}
    >>> maj_dico_compte(un_dico,'tati')
    >>> print(un_dico)
    {'tata': 8, 'tutu': 42, 'tati': 1, 'titi': 3, 'toto': 3}
    

  5. Écrire une fonction supprime_ponctuation qui prend une chaîne de caractères en paramètre et renvoie une chaîne identique dans laquelle les symboles de ponctuation ont été remplacés par des espaces.

    Indication: la chaîne punctuation du module string contient tous les symboles de ponctuation à effacer.

  6. Écrire une fonction compte_mots qui prend une chaîne de caractères en paramètre et renvoie un dictionnaire contenant le nombre d'occurrences de chaque mot de la chaîne. Attention à ne pas inclure la ponctuation dans les mots !

    Indication: Vous pouvez utiliser la méthode split pour "couper" les phrases en liste de mots.

  7. Écrire une fonction compte_mots_total qui prend en parametre un dictionnaire d'occurrences de mots et renvoie le nombre total d'occurrences de tous les mots du dictionnaire.

    Exemple:

    >>> un_dico={'tata': 8, 'tutu': 42, 'tati': 1, 'titi': 3, 'toto': 3}
    >>> print(compte_mots_total(un_dico))
    57
    
  8. Utiliser les fonctions précédentes pour afficher le nombre total de mots contenu dans un fichier texte ainsi que le nombre d'occurrences de chaque mot. Le nom de fichier sera saisi par l'utilisateur. Utiliser le fichier recette.txt pour tester le programme.

    Indication : Pour ouvrir un fichier dans python et lire les lignes de ce fichier, la syntaxe est la suivante:

    f = open("fichier.txt", 'r') # fichier.txt est le fichier que l'on doit ouvrir, il est au même endroit que le fichier python exécuté. 'r' signifie que l'on va seulement lire le fichier et non écrire  dedans('w')
    for ligne in f.readlines(): # boucle sur les lignes du fichier
        ... # traiter les lignes "ligne" une par une
    f.close() # toujours fermer le fichier à la fin pour éviter de "corrompre" les fichiers
    
  9. Même question que précédemment mais en passant le nom de fichier à analyse comme un argument de la ligne de commande.

    Exemple de commande pour lancer le programme sous le terminal avec recette.txt en argument :

    $ python3 monProgramme.py recette.txt
    

    Indication : Les arguments sont accessibles depuis un programme Python dans la liste sys.argv. On peut y accéder par exemple de la manière suivante :

    from sys import argv
    print(argv)  # par exemple
    
  10. Écrire une fonction affiche_mots qui prend un nom de fichier en paramètre et affiche:

    • le nombre de mots au total,
    • le nombre de mots différents,
    • et le nombre d'occurrences de chaque mot dans le fichier.

    Exemple sur le fichier sense_short.txt (attention, il se peut que les mots ne s'affichent pas exactement dans le même ordre) :

    nombre de mots: 3591 - nombre de mots différents: 949
    strive : 1
    expectation : 1
    comfortably : 2
    brother : 3
    trouble : 2
    sensibility : 1
    ...
    

  11. Écrire une fonction affiche_mots_importants qui prend un nom de fichier en paramètre et affiche les mots dont le nombre d'occurences représentent entre 0.02% et 0.2% du nombre total de mots du fichier.

    Exemple sur le fichier sense_and_sensibility.txt (attention, il se peut que les mots ne s'affichent pas exactement dans le même ordre) :

    truth : 26
    child : 40
    together : 73
    within : 62
    future : 31
    kind : 95
    myself : 103
    nature : 32
    ...
    

Exercice 3 : Création d'index

Créer un script Python index.py recevant en paramètre le nom d'un fichier texte et écrivant la liste des mots du texte, et pour chaque mot la liste des numéros de lignes où ce mot apparaît dans le texte. On ne tiendra pas compte des majuscules.

Par exemple :

$ python3 index.py couplet1.txt
il [0, 1]
ja [2, 2, 3, 3]
jamais [2, 3]
n'avait [2, 3]
navigué [2, 3]
navire [0, 1]
ohé [4, 4]
petit [0, 1]
qui [2, 3]
un [0, 1]
était [0, 1]

Source de couplet1.txt