B) Recherche dans une table de grande taille

Pour cette partie vous utiliserez le fichier  « listevehicule.csv » qui contient les données.


Ne pas s'aider de ce fichier ou d'un tableur pour extraire les réponses,

c'est vous qui allez les programmer avec python





Le tableau ci dessous vous sert de légende pour les numéros elements




Dans l'éditeur Python,  créer un fichier et enregistrez-le en le nommant :  traitementB.py

Introduction

Tester le programme ci-dessous.

def rechercheVoiture(filecsv,marq):
    """Fonction qui construit une liste à partir
    d'une table d'un fichier filecsv """
    liste=[]
    f=open(filecsv,"r")
    test=True
    ligne=f.readline()
    while test==True:
        ligne=f.readline()
        if ligne!="" :
            element=ligne.split(",")
            if str(element[0])==marq:
                print(element[0]+"  "+element[3])
        else:
            test=False
    f.close()


rechercheVoiture("listevehicule.csv","DACIA")

Que renvoie t-il ?

1) Rechercher un paramètre en particulier



1. a) A l'aide de la fonction ci-dessus, écrire une nouvelle fonction sans paramètres rechercheVoiture2(filename) qui affiche la marque et la désignation commerciale de toutes les voitures hybrides. Le tableau contient sur la colonne concernée la chaîne str "oui" ou "non" (pour hybride ou non)
Se référer au tableau éléments pour la désignation de la colonne "hybride"

def rechercheVoiture2(filecsv):


rechercheVoiture2("listevehicule.csv")



1. b) Ajouter une initialisation d'une variable compteur en début de la fonction rechercheVoiture2 ,
 puis incrémenter (comme a=a+1)  ce compteur au niveau d'un "if" ,
 et vérifier qu'il y a 389 véhicules concernés, inclure votre capture

2) Recherche multicritère
A partir du modèle de fonction initial toujours, modifier la fonction avec paramètres rechercheVoiture3(filecsv,marq,puiss,conso) pour qu'elle affiche la marque et la désignation commerciale de toutes les voitures de marque « marq », ayant une puissance administrative de valeur « puiss » et une consommation urbaine de valeur « conso ».

def rechercheVoiture3(filecsv,marq,puiss,conso):
    """Fonction qui construit une liste à partir
    d'une table d'un fichier filecsv """
    liste=[]
    f=open(filecsv,"r")
    test=True
    cpt=0
    ligne=f.readline()
    while test==True:
        ligne=f.readline()
        if ligne!="" :
            element=ligne.split(",")
            if str(element[0])==marq:
                print(element[0]+"  "+element[3])
        else:
            test=False
    f.close()

Aide : sur la ligne if str(element[0])== marq:  il faudra modifier et ajouter des "and" sur les requêtes supplémentaires
Mettre les élément[...] en type "str" ou en "int" selon les cas

Exemple pour vérifier : les modèles CITROEN de puissance admin 5CV et qui consomme 4L aux 100 km

rechercheVoiture3("listevehicule.csv","CITROEN",5,4)




    3. Écrire la fonction consoMax(filecsv) pour afficher la marque et la désignation commerciale de la voiture qui a la plus grande consommation urbaine. (conso urb element[11])
 

def consoMax(filecsv):
    reponse=""
    valeur=0  #sous entendu minimum litres de la conso qui sera ensuite élevé suivant le test
    f=open(filecsv,"r")
    test=True
    ligne=f.readline()
    while test==True:
        ligne=f.readline()
        if ligne!="" :
            element=ligne.split(",")
            if ............ :
                valeur=............
                reponse=............
        else:
            test=False
    f.close()
    return "La voiture ConsoMax : ",reponse,"avec ",valeur
print(consoMax("listevehicule.csv"))


3. Écrire la fonction consoMin(filecsv)pour afficher la marque et la désignation commerciale des voitures qui ont la plus petite consommation urbaine.
 (conso urb element[11])

def consoMin(filecsv):
    reponse=""
    valeur=1000 #sous entendu max qui sera ensuite diminué suivant le test
    f=open(filecsv,"r")
    test=True
    ligne=f.readline()
    while test==True:
        ligne=f.readline()
        if ligne!="" :
            element=ligne.split(",")
            if ............ :
                valeur=............
                reponse=............
            elif ............==valeur:  #traite les cas d'égalité
                reponse += ............  # concatène avec +=  marque et désignation commerciale  
        else:
            test=False
    f.close()
    return "Les voitures ConsoMin : ",reponse,"avec ",valeur


print(consoMin("listevehicule.csv"))



Créé avec HelpNDoc Personal Edition: Produire facilement des livres électroniques Kindle