Mission 7 : Dictionnaires

Mission 7 : Dictionnaires

Introduction

Le but de cette mission est de développer un outil qui permet un utilisateur de chercher répétitivement dans un fichier de texte: pour des mots donnés, l'outil va imprimer les phrases dans lesquelles tous les mots donnés sont présents. Pour assurer que l'outil ne prend pas trop de temps pour déterminer ces phrases, on va construire un index des mots présents dans les phrases des documents. On utilisera les dictionnaires pour stocker l'index.

Objectifs

Objectifs individuels

A l’issue de ce problème, chacun d’entre vous sera en mesure d’exploiter les notions suivantes :
  • dictionnaires
  • fichiers

Préparation, étude et apprentissage

La matière relative à cette mission est décrite dans les sections suivantes du syllabus en ligne :

Questionnaire de démarrage

Questions à choix multiple

Les questions à choix multiples de cette mission sont également accessibles en ligne depuis https://inginious.info.ucl.ac.be/course/LSINF1101-PYTHON/Session7_QCM


        
        

Question 1

Considérez le code suivant:

codes = {"Bruxelles" : [1000,1020,1030], "Louvain-la-Neuve" : [1348], "Wavre": [1300,1301]}

Les morceaux de code ci-dessous sont executés chacun après ce code. Décrivez ce qui se passe pour chacun des cas.

  • On exécute :
print(codes["Bruxelles"])
 
 

  • On exécute :
print(codes["Mons"])
 
 

  • On exécute :
print(codes[1000])
 
 

  • On exécute :
print(codes.get("Mons",[]))
 
 

  • On exécute:
codes["Liege"] = [4000]
    print(codes)
 
 

  • On exécute:
codes["Bruxelles"].append(1040)
    print(codes)
 
 

  • On exécute:
codes.get("Bruxelles",[]).append(1050)
    print(codes)
 
 

  • On exécute:
codes.get("Arlon",[]).append(8362)
    print(codes)
 
 

  • On exécute:
if "Bruxelles" in codes:
      print("Found!")
else:
  print("Not found!")
 

  • On exécute:
if 1000 in codes:
      print("Found!")
else:
  print("Not found!")
 

  • On exécute:
for x in codes:
      print(x)
 
 
 

  • On exécute:
for x in codes:
      print(codes[x])
 
 
 

  • On exécute:
for x in codes.items():
      print(x)
 
 

  • On exécute:
for x, y in codes.items():
      y = y + [2000]
    print(codes)
 
 

  • On exécute:
for x, y in codes.items():
      y.append(2000)
    print(codes)
 
 

  • On exécute:
for x, y in codes.items():
      x = x + "*"
    print(codes)
 
 

Question 2

Donnée sont

  • une matrice representée en utilisant des listes imbriquées
  • une matrice representée en utilisant un dictionnaire, où les zéros ne sont pas stockées.

Par exemple,

l = [ [ 0, 2, 4 ], [ 4, 1, 0 ] ]
d = { (0,1): 2, (0,2): 4, (1,0): 4, (1,1): 1 }
Écrivez une fonction equal(l,d) qui détermine si d contient les même valeurs pour chaque élément
de l. (Nous permettons que d soit plus large que l.)


        
        

Question 3

Écrivez un outil qui fait la suivante:

  • l'outil lit un fichier text.txt, sépare chaque ligne en mots, et crée un dictionnaire avec, pour chaque mot, un compte du nombre d'occurrences de ce mot. On peut présumer que tous les mots sont en minuscules et qu'il n'y a pas de ponctuation.
  • l'outil demande à l'utilisateur de donner un mot, après lequel le programme retourne le nombre d'occurrences de ce mot.

Séparez le programme en fonctions, avec au moins - une fonction create_dictionary(name) pour lire le fichier name et créer le dictionnaire - une autre fonction pour demander les mots à l'utilisateur. Pour simplifier l'exercice, il n'est pas nécessaire de traiter les erreurs.


        
        

Question 4

Donné une structure de données comme la suivante:

System Message: ERROR/3 (<string>, line 380)

Content block expected for the "code-block" directive; none found.

.. code-block:: python

l = [{"City": "Bruxelles", "Country": "Belgium"},
{"City": "Berlin", "Country": "Germany"}, {"City": "Paris", "Country": "France"}]

Écrivez une fonction get_country(l,name) qui, pour le nom d'une ville name et une structure de données l du format illustré dans l'exemple, retourne le nom du pays dans lequel la ville est localisée. La fonction retourne None si la ville n'est pas dans l.