IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

créer un nombre inconnu à priori, de variables


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 39
    Par défaut créer un nombre inconnu à priori, de variables
    Bonjour,

    Voici mon problème:

    Je crée un petit script en Python pour récupérer des infos dans des fichiers .dbf.
    Je veux récupérer notamment le nom du fichier, le nombre de lignes, de champs, le type de chaque champ. Pour ça, pas de problème.
    Je veux également, pour chaque champ calculer le pourcentage de cellule vide.
    Comme je lis les données ligne par ligne, je pensais incrémenter une variable à chaque fois qu'une cellule est vide, et ce pour chaque champ.
    Mon problème est que je ne connais pas le nombre de champ pour chaque fichier .dbf. (je récupère cette info lors de l'excécution du script).
    Je cherche donc un moyen de créer autant de variables (qui seront mes compteurs de valeurs manquantes pour chaque champ) que de champs, sans connaitre le nombre de champs.
    Par exemple je voudrais créer les variables:
    vide_0 pour le champ 0
    vide_1 pour le champ 1
    ...
    ...
    vide_n pour le champ n

    Des idées?
    Pierre

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    En répondant strictement à ta question:
    soit nchamps le nombre de champs, dont tu dis qu’il n’y a pas de problème pour déterminer la valeur.
    Il y aura nchamps variables vide_k, avec k de 0 à nchamps-1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in xrange(nchamps):
        globals()[’vide-’+str(k)] = 0
    Cela crée nchamps variables de nom vide_k.

    Il suffit de faire ensuite print vide_2 par exemple, pour afficher la valeur de vide_2.









    Cependant cette façon de procéder n’est pas terrible car chaque fois que tu vas vouloir incrémenter de 1 l’une de ces variables, il va falloir que tu emploies cette même notation lourde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    globals()[’vide_’+str(2)] += 1
    car le nombre nchamps n’étant pas fixe d’une exécution à une autre, tu ne peux pas écrire en dur les noms des variables.



    Il est donc préférable d’utiliser une liste L dont les éléments seront les compteurs de cellules vides: l’élément L[0] décomptera le champ 0, etc.... Et pour incrémenter le compteur i: L[i] = L[i] + 1





    Tu peux aussi utiliser un dictionnaire d:

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Tu peux :

    -soit creer un nouveaux compteur pour chaque champs(comme le dit eyquem s'il faut repondre strictement a ta question)(s'il faut revenir sur un champ pour finir le comptage par exemple, mais il semble que ce ne soit pas le cas puisque la lecture est lineaire) ou bien le nombre de compteurs est egal au nombre de champs et ceux-ci sont stockés dans une liste.

    -soit avoir un seul compteur dont tu stockes la valeur dans une liste à chaque fin de champ.
    la liste c'est pratique puisqu'on peut modifier sa taille à volonter ^^.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    nombre_de_cellule_vide_par_champ = [] # une liste pour stocker le compteur
    ...                       # boucle parcourt du fichier champ par champ
    compteur = 0              # initilisation du compteur à chaque nouveau champ
    ...                       # boucle de comptage des cellules
    if cellule_est_vide : compteur += 1
    ...                       # fin de boucle cellules
    nombre_de_cellule_vide_par_champ.append[compteur]
    ...                       # fin de boucle champ

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 39
    Par défaut
    Bonjour,

    Merci à vous deux pour vos réponses.
    J'ai finalement opté pour une liste pour stocker mes compteurs. Je la déclare comme ceci:

    L=[0]*n
    n étant le nombre de champs, que je récupère juste avant.

    Encore merci.
    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Préparer des requêtes avec un nombre inconnu de variables
    Par php_de_travers dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 04/01/2010, 21h39
  2. Réponses: 2
    Dernier message: 16/11/2009, 01h51
  3. Créer un nombre de CheckBox inconnu avant de compiler..
    Par funkyspirit dans le forum Windows Forms
    Réponses: 13
    Dernier message: 18/07/2008, 11h51
  4. Comment gérer un nombre inconnu d'objet ?
    Par Clad3 dans le forum C++
    Réponses: 28
    Dernier message: 12/03/2005, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo