Aller au contenu

QCM

Cocher la ou les bonnes réponses.

QCM

Soit la table de données suivante :

Nom Prénom Date de naissance
Mitterand 1981-1995 1916
Chirac 1995-2007 1932
Sarkozy 2007-2012 1955
Hollande 2012-2017 1954
Macron depuis 2017 1977

Quels sont les descripteurs de ce tableau ?

  • "Nom", "prénom" et "Date de naissance"
  • Mitterand, Chirac, Sarkozy, Hollande, Macron
  • Mitterand, 1981-1995, 1916
  • il n'y en a pas
Réponse

"Nom", "prénom" et "Date de naissance"

QCM

Dans un fichier au format csv, les données peuvent être séparées:

  • par des virgules
  • par des tabulations
  • par des points-virgule
  • par des 8
Réponse
  • par des virgules
  • par des tabulations
  • par des points-virgule
  • par des 8

Toutes ces réponses sont correctes. Vous pouvez vérifier cela en ouvrant un fichier csv avec LibreOffice et en testant ces différents choix à l'aide du menu qui vous est présenté.

QCM

Un fichier csv peut être ouvert avec:

  • le logiciel LibreOffice Calc
  • le logiciel microsoft excel
  • l'éditeur de texte geany
  • spyder
Réponse
  • le logiciel LibreOffice Calc
  • le logiciel microsoft excel
  • l'éditeur de texte geany
  • spyder

QCM

Pour ouvrir le fichier aha.csv en lecture avec le module csv, on utilise:

  • with open('aha.csv', 'w', newline='')
  • with open('aha.csv', newline='')
  • with open(aha.csv, newline='')
  • with open('aha', newline='')
Réponse
  • with open('aha.csv', 'w', newline='')
  • with open('aha.csv', newline='')
  • with open(aha.csv, newline='')
  • with open('aha', newline='')

On rappelle que 'w' est l'abréviation de write (ouverture en écriture).

QCM

Pour exploiter notre fichier personnes.csv, on utilise le script suivant:

import csv
with open('personnes.csv', newline='') as fichier:
    lecture = csv.reader(fichier, delimiter=',')
    print(lecture[0])

On obtient:

  • l'affichage de la ligne d'entête du fichier
  • l'affichage de la première ligne de données
  • un message d'erreur
  • l'affichage de toutes les lignes du fichier
Réponse
  • l'affichage de la ligne d'entête du fichier
  • l'affichage de la première ligne de données
  • un message d'erreur
  • l'affichage de toutes les lignes du fichier

On obtient l'erreur TypeError: '_csv.reader' object is not subscriptable. On peut parcourir les éléments (en d'autres termes, on peut itérer sur les lignes du fichier) avec un for ligne in lecture: mais on ne peut pas accèder directement aux éléments comme avec une liste.

QCM

On utilise encore le même fichier personnes.csv.

Le code de la fonction ci-dessous:

import csv

# ouverture en lecture du fichier csv
with open('personnes.csv', newline='') as fichier:
    # on crée un objet DictReader
    lecture = csv.DictReader(fichier, delimiter=',')

    # transfo en liste
    lignes = list(lecture)




def NeApres(annee):
    """
    annee -- une année


    renvoie la liste, sans doublon, des noms de personnes
    nées après annee.
    >>> NeApres(2000)
    ['Auboisdormant', 'Ception', 'Gator', 'Bistraux', 'Verserre', 'Dejeu']
    """
    liste = []
    for personne in lignes:
        if  personne['anneeNaissance'] > annee:
            if personne['nom'] not in liste:
                liste.append(personne['nom'])
    return liste

# test
print(NeApres(2000))
  • est correct
  • n'est pas correct
Réponse
  • est correct
  • n'est pas correct

On cherche à comparer le paramètre annee de la fonction (qui est un int) avec les données personne['anneeNaissance'] qui sont chargées en tant que chaîne de caractères.

On obtient l'erreur:

TypeError: '>' not supported between instances of 'str' and 'int'

Il faut penser à convertir (transtyper) la donnée. Par exemple comme suit (utilisation de int en ligne 26 de ce code):

import csv

# ouverture en lecture du fichier csv
with open('personnes.csv', newline='') as fichier:
    # on crée un objet DictReader
    lecture = csv.DictReader(fichier, delimiter=',')

    # transfo en liste
    lignes = list(lecture)




def NeApres(annee):
    """
    annee -- une année


    renvoie la liste, sans doublon, des noms de personnes
    nées après annee.
    >>> NeApres(2000)
    ['Auboisdormant', 'Ception', 'Gator', 'Bistraux', 'Verserre', 'Dejeu']
    """
    liste = []
    for personne in lignes:
        if int(personne['anneeNaissance']) > annee:
            if personne['nom'] not in liste:
                liste.append(personne['nom'])
    return liste

# test
print(NeApres(2000))

QCM

On utilise encore le même fichier personnes.csv.

On rappelle le contenu de ce fichier ci-dessous.

contenu du fichier

id_personne,nom,prenom,anneeNaissance
1,Labrosse,Adam,2000
2,Gemlamorte,Adèle,1985
3,Auboisdormant,Abel,2001
4,Etpan,Ahmed,1975
5,Térieur,Alain,1999
6,Térieur,Alex,1976
7,Proviste,Alain,2000
8,Verse,Alain,1970
9,Ception,Alex,2001
10,Ainé,Ali,1975
11,Gator,Ali,2001
12,Bistraux,Alonzo,2001
13,Patamob,Alphonse,1970
14,Ficulté,Andy,1980
15,Rectdustade,Andy,2000
16,Verserre,Annie,2001
17,Boréal,Aurore,1985
18,Nor,Paul,1985
19,Dejeu,Bernadette,2001
20,Dajeun,Bruno,1984
21,Hiple,Candice,2000

Avec le code suivant:

import csv


# ouverture en lecture du fichier csv
with open('personnes.csv', newline='') as fichier:
    # on crée un objet reader
    lecture = csv.reader(fichier, delimiter=',')

    # on transforme l'itérateur en liste:
    lignes = list(lecture)

print(lignes[1][2])

l'affichage obtenu est:

  • 2
  • Adam
  • nom
  • Labrosse
Réponse
  • 2
  • Adam
  • nom
  • Labrosse

QCM

On utilise encore le même fichier personnes.csv.

On rappelle le contenu de ce fichier ci-dessous.

contenu du fichier

id_personne,nom,prenom,anneeNaissance
1,Labrosse,Adam,2000
2,Gemlamorte,Adèle,1985
3,Auboisdormant,Abel,2001
4,Etpan,Ahmed,1975
5,Térieur,Alain,1999
6,Térieur,Alex,1976
7,Proviste,Alain,2000
8,Verse,Alain,1970
9,Ception,Alex,2001
10,Ainé,Ali,1975
11,Gator,Ali,2001
12,Bistraux,Alonzo,2001
13,Patamob,Alphonse,1970
14,Ficulté,Andy,1980
15,Rectdustade,Andy,2000
16,Verserre,Annie,2001
17,Boréal,Aurore,1985
18,Nor,Paul,1985
19,Dejeu,Bernadette,2001
20,Dajeun,Bruno,1984
21,Hiple,Candice,2000

Avec le code suivant:

import csv

# ouverture en lecture du fichier csv
with open('personnes.csv', newline='') as fichier:
    # on crée un objet DictReader
    lecture = csv.DictReader(fichier, delimiter=',')
    lecture = list(lecture)


print(lecture[1]['nom'])

on obtient l'affichage:

  • une erreur
  • nom
  • Labrosse
  • Gemlamorte
Réponse
  • une erreur
  • nom
  • Labrosse
  • Gemlamorte

QCM

On utilise le fichier villes.csv.

Avec le code suivant:

import csv

# ouverture en lecture du fichier csv
with open('villes.csv', newline='') as fichier:
    # on crée un objet DictReader
    lecture = csv.DictReader(fichier, delimiter=',')
    lecture = list(lecture)





liste = []
for ville in lecture:
    if int(ville['2016']) > 90000 and int(ville['2016']) < 100000:
        liste.append(ville['Nom'])

print(liste)

on obtient:

  • une erreur
  • ['Tourcoing ', 'Roubaix ', 'Nanterre ', 'Vitry-sur-Seine ', 'Avignon ']
  • ['Paris ', 'Marseille ', 'Lyon ', 'Toulouse ', 'Nice ', 'Nantes ', 'Montpellier ', 'Strasbourg ', 'Bordeaux ', 'Lille19 ', 'Rennes ', 'Reims ', 'Saint-Étienne ', 'Le Havre ', 'Toulon ', 'Grenoble ', 'Dijon ', 'Angers ', 'Nîmes ', 'Villeurbanne ', 'Saint-Denis ', 'Aix-en-Provence ', 'Le Mans ', 'Clermont-Ferrand ', 'Brest ', 'Tours ', 'Amiens ', 'Limoges ', 'Annecy20 ', 'Perpignan ', 'Boulogne-Billancourt ', 'Metz ', 'Besançon ', 'Orléans ', 'Saint-Denis ', 'Argenteuil ', 'Rouen ', 'Mulhouse ', 'Montreuil ', 'Saint-Paul ', 'Caen ', 'Nancy ', 'Tourcoing ', 'Roubaix ', 'Nanterre ', 'Vitry-sur-Seine ', 'Avignon ', 'Créteil ', 'Dunkerque22 ', 'Poitiers ']
Réponse
  • une erreur
  • ['Tourcoing ', 'Roubaix ', 'Nanterre ', 'Vitry-sur-Seine ', 'Avignon ']
  • ['Paris ', 'Marseille ', 'Lyon ', 'Toulouse ', 'Nice ', 'Nantes ', 'Montpellier ', 'Strasbourg ', 'Bordeaux ', 'Lille19 ', 'Rennes ', 'Reims ', 'Saint-Étienne ', 'Le Havre ', 'Toulon ', 'Grenoble ', 'Dijon ', 'Angers ', 'Nîmes ', 'Villeurbanne ', 'Saint-Denis ', 'Aix-en-Provence ', 'Le Mans ', 'Clermont-Ferrand ', 'Brest ', 'Tours ', 'Amiens ', 'Limoges ', 'Annecy20 ', 'Perpignan ', 'Boulogne-Billancourt ', 'Metz ', 'Besançon ', 'Orléans ', 'Saint-Denis ', 'Argenteuil ', 'Rouen ', 'Mulhouse ', 'Montreuil ', 'Saint-Paul ', 'Caen ', 'Nancy ', 'Tourcoing ', 'Roubaix ', 'Nanterre ', 'Vitry-sur-Seine ', 'Avignon ', 'Créteil ', 'Dunkerque22 ', 'Poitiers ']

QCM

On utilise le fichier villes.csv.

Avec le code suivant:

import csv

# ouverture en lecture du fichier csv
with open('villes.csv', newline='') as fichier:
    # on crée un objet DictReader
    lecture = csv.DictReader(fichier, delimiter=',')
    lecture = list(lecture)





liste = []
for ville in lecture:
    annees = [int(ville[an]) for an in ('1990', '1999', '2006', '2011', '2016')]
    if max(annees) != int(ville['2016']):
        liste.append(ville['Nom'])

print(liste)

on obtient:

  • une erreur
  • la ville ayant le plus grand nombre d'habitants en 2016
  • les villes n'ayant pas leur plus grand nombre d'habitants en l'année 2016
  • une liste vide
Réponses
  • une erreur
  • la ville ayant le plus grand nombre d'habitants en 2016
  • les villes n'ayant pas leur plus grand nombre d'habitants en l'année 2016
  • une liste vide

La liste obtenue:

['Paris ', 'Nice ', 'Reims ', 'Saint-Étienne ', 'Le Havre ', 'Angers ', 'Le Mans ', 'Brest ', 'Tours ', 'Amiens ', 'Limoges ', 'Metz ', 'Besançon ', 'Rouen ', 'Mulhouse ', 'Caen ', 'Nancy ', 'Roubaix ', 'Avignon ', 'Créteil ', 'Dunkerque22 ', 'Poitiers ']

Poitiers par exemple avait plus d'habitants en 2006 qu'en 2016 d'où sa présence dans la liste.