N.S.I. WorkSpace P-Th-C,Première C.ee – Exercices de préparation à une épreuve écrite

C.ee – Exercices de préparation à une épreuve écrite

Categories:

Questions courtes…

1 – Donner une définition d’une table.

2 – Donner les caractéristiques des données contenues dans une même colonne.

3 – Indiquer à quoi correspond un attribut d’une table.
Quel autre nom peut être employé à la place d’attribut ?

4 – Indiquer à quoi correspond une occurrence d’une table.
Quel autre nom peut être employé à la place d’occurrence ?

5 – Indiquer deux façons d’implémenter une table en langage Python.

6 – Soit T une table implémenté en Python et E une ligne de cette table.
Que permet de connaître l’instruction ‘len(E)’ ?
Quelle instruction permet de connaître le nombre d’occurrences de cette table ?

Exercice 1 – Importer des données dans une table

On dispose de données sur les films sortis en 2022 contenues dans une feuille d’un tableur (logiciel).
Voici un extrait de cette table :


On veut exporter ces données dans une fichier ‘csv’.

Question 1 – Parmi les caractères suivants : virgule, point-virgule, deux-points, tabulation, lequel ou lesquels ne vous paraissent pas convenir pour réaliser cette exportation.
Justifier la réponse.


On veut maintenant importer ces données dans une table d’un programme écrit en Python, sachant que le nom de fichier est ‘data_films_2022.csv’. Par ailleurs la première ligne de ce fichier ‘csv’ contient les libellés des colonnes de la table.

Question 2a – Compléter le code qui suit en remplaçant les ‘???’ par ce qui convient.

ress = open(???, mode="???", encoding='utf-8')

first_line = ress.???()
first_line = first_line.???(";")
first_line[-1] = first_line[-1].replace("\n", "")
first_line = ???(first_line)

table = ???.readlines()
for index in range(len(???)) :
    table[index] = table[???].split(";")
    table[index][-1] = table[index]???.replace("\n", "")
    table[index] = tuple(???)

Testez votre code avec le fichier csv (à télécharger)

Auto-correction– Vérifiez l’exactitude de votre réponse (correction à télécharger)

Auto-correction : vérifiez vos résultats à l’aide de cette capture d’écran de l’explorateur de variables de Spyder

Question 2a – D’après le résultat obtenu, combien de colonnes et combien de lignes comporte cette table ?

Auto-correction
La table comporte 4 colonnes et 282 lignes.

Exercice 2 – Compter et rechercher des données dans une table

On veut connaître le nombre de films classés dans le genre ‘Comédie’.

Question 1a (niveau de difficulté : ) – Programmer une fonction ‘filmParGenres(table, genre)’ qui prend en paramètres, d’une part la table des films créée précédemment et d’autre part un genre et qui renvoie le nombre de films qui appartiennent à ce genre.

Coup de pouce : il y a 76 films dont le genre est « Comédie ».

Auto-correction– Vérifiez l’exactitude de votre réponse (correction à télécharger)

Question 1b – Testez votre fonction : combien de films appartiennent au genre « Drame » ?

Réponse attendue : 89


On veut connaître la liste des films dont le titre commence par la lettre « F ».

Question 2a (niveau de difficulté : ) – Programmer une fonction ‘titreParLettre(table, lettre)’ qui prend en paramètres, d’une part la table des films créée précédemment et d’autre part une lettre et qui renvoie une liste de films dont le titre commence par la lettre choisie.

Coup de pouce : il y a 5 films dont le titre commence par la lettre « F »

Auto-correction : liste des films dont le titre commence par la lettre « F »

Auto-correction– Vérifiez l’exactitude de votre réponse (correction à télécharger)

Question 2b (niveau de difficulté : ) – Compléter le code de la fonction ‘titreParMot(table, mot)’ ci-dessous en remplaçant les ??? par ce qui convient.
Cette fonction prend en paramètres, d’une part la table des films créée précédemment et d’autre part un mot et renvoie une liste de films dont le titre commence par le mot choisi.
Par exemple :
titreParMot(table, « Un« ) renvoie une liste de 8 titres de film
titreParMot(table, « Les« ) renvoie une liste de 25 titres de film

def titreParMot(table, mot):
    l = []

    for film in table:

        d = ""
        for ??? in range (len(mot)):
            d += film[???][index]

        if d ??? mot:
            l.append(film[???])

    return l

l1 = titreParMot(table, "Un")
l2 = titreParMot(table, "Les")

Auto-correction– Vérifiez l’exactitude de votre réponse (correction à télécharger)


Pour certains films dans la table, l’attribut « Réalisation » indique deux noms de réalisateurs.
Par exemple :

Deux noms pour l’attribut « Réalisation » de ce film.

On remarque que ces deux noms sont séparés par la chaine de caractères  » et « .

Question 3a (niveau de difficulté : ) – Programmer une fonction ‘deuxRealisateurs(table)’ qui prend en paramètre la table des films créée précédemment et qui sélectionne les films dont l’attribut « Réalisation » comporte deux noms.
Pour chacun de ces films la fonction renvoie un tuple : le premier élément du tuple est le titre du film et le deuxième élément est un tuple contenant le nom des deux réalisateurs.
Par exemple : (‘La Revanche des Crevettes pailletées’, (‘Cédric Le Gallo’, ‘Maxime Govare’))

Compléter le code qui suit en remplaçant les ??? par ce qui convient.

def deuxRealisateurs(table):
    l = []

    for film in table:
        r = film[???].split(" et ")
        if len(r) == ???:
            l.append((film[???],(???)))

    return l

Auto-correction– Vérifiez l’exactitude de votre réponse (correction à télécharger)

On remarque que l’attribut ‘Casting’ comporte souvent plusieurs noms d’actrices et d’acteurs. Ces noms sont séparés les uns des autres par une virgule et un espace.
Par exemple :

L’attribut ‘Casting’ de ce film comporte 3 noms d’actrice/acteur

Question 3b (niveau de difficulté : ) – En vous inspirant du programme de la fonction précédente, programmer une fonction ‘n_casting(table, n)’ qui prend en paramètres, d’une part la table des films créée précédemment et un nombre entiers n et qui sélectionne les films dont l’attribut « Casting » comporte n noms d’actrices/acteurs.
Pour chacun de ces films la fonction renvoie un tuple : le premier élément du tuple est le titre du film et le deuxième élément est un tuple contenant les noms des actrices/acteurs.
Par exemple : n_casting(table, 4)’ renvoie 11 films dont
(‘Babysitter’, (‘Patrick Hivon ‘, ‘Monia Chokri ‘, ‘Nadia Tereszkiewicz ‘, ‘Steve Laplante’))

Compléter le code qui suit en remplaçant les ??? par ce qui convient.

def n_casting(table, n):
    l = []

    for film in table:
        r = film[???].split("???")
        if len(r) == ???:
            l.append((film[???], tuple(r[???] for i in range(???))))

    return l

Auto-correction– Vérifiez l’exactitude de votre réponse (correction à télécharger)

Article sous licence << Cliquez pour plus d’informations <<