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 :

listes et variables ,je patauge! [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut listes et variables ,je patauge!
    bonjour à tous,

    je tente d'optimiser mon code et je butte sur ce qui doit etre pour vous un détail mais m'a pris 2h de recherche sans resultat, je suis à 2 doigts de le laisser tel quel puisque fontionnel...

    j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    sonde1 = 14
    sonde2 = 23
    sonde3 = 15
     
    # Mise en variable la commande OS dans les variables lire_*
    lire_temp1 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $3 }'" % (sonde1)
    lire_hum1 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $7 }'" % (sonde1)
    lire_temp2 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $3 }'" % (sonde2)
    lire_hum2 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $7 }'" % (sonde2)
    lire_temp3 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $3 }'" % (sonde3)
    lire_hum3 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $7 }'" % (sonde3)
    que je tente de tranformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sondes = [
    	[1, 14],
    	[2, 23],
    	[3, 15],
    	]
     
    for nb, pin in sondes :
    	lire_temp{} = "sudo nice -20 ./Adafruit_DHT 22 {} |grep Temp |awk '{ print $3 }'" .format(nb, pin)
    une piste svp...?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    salut,

    Tu as le choix, liste ou dictionnaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    >>> sondes = 14, 23, 15
    >>> #liste
    >>> commandes = []
    >>> for pin in sondes:
    ...     commandes.append("sudo nice -20 ./Adafruit_DHT 22 %s |grep Temp |awk '{ print $3 }'" % pin)
    ... 
    >>> print(commandes[0])
    sudo nice -20 ./Adafruit_DHT 22 14 |grep Temp |awk '{ print $3 }'
    >>> print(commandes[1])
    sudo nice -20 ./Adafruit_DHT 22 23 |grep Temp |awk '{ print $3 }'
    >>> print(commandes[2])
    sudo nice -20 ./Adafruit_DHT 22 15 |grep Temp |awk '{ print $3 }'
    >>>
    >>> # dictionnaire
    >>> commandes = {}
    >>> for idx, pin in enumerate(sondes):
    ...     commandes['lire_temp%s' % (idx+1)] = "sudo nice -20 ./Adafruit_DHT 22 %s |grep Temp |awk '{ print $3 }'" % pin
    ... 
    >>> print(commandes['lire_temp1'])
    sudo nice -20 ./Adafruit_DHT 22 14 |grep Temp |awk '{ print $3 }'
    >>> print(commandes['lire_temp2'])
    sudo nice -20 ./Adafruit_DHT 22 23 |grep Temp |awk '{ print $3 }'
    >>> print(commandes['lire_temp3'])
    sudo nice -20 ./Adafruit_DHT 22 15 |grep Temp |awk '{ print $3 }'
    >>>

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    merci vincent, je crois que la methode avec la liste n'est pas valable car je reutilise lire_temp1 plus tard dans mon script

    la methode dictionnaire semble coller, je vais tenter de la comprdendre et de l'adapter

    un grand merci!

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    je suis donc parti sur la solution du dictionnaire.

    pourquoi passer par la liste "commandes"?

    et il semble y avoir un soucis avec la variable lire_temp1 qui n'est apparement pas connu dans la suite du script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sondes = 14, 23, 15
    commandes = {}
     
    for idx, pin in enumerate(sondes):
    	commandes['lire_temp%s' % (idx+1)] = "sudo nice -20 ./Adafruit_DHT 22 %s |grep Temp |awk '{ print $3 }'" % pin
    l'idée est de passer la commande OS dans la variable lire_temp1 qui sera utilisée plus tard dans le script

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    autant pour moi ca fontionne, voici comment je l'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sondes = 14, 23, 15
    temp = {}
    hum = {}
     
    for idx, pin in enumerate(sondes):
    	temp['lire_temp%s' % (idx+1)] = "sudo nice -20 ./Adafruit_DHT 22 %s |grep Temp |awk '{ print $3 }'" % pin
    	hum['lire_hum%s' % (idx+1)] = "sudo nice -20 ./Adafruit_DHT 22 %s |grep Temp |awk '{ print $7 }'" % pin
    et je l'apelle plus tard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t1 = run_cmd(temp['lire_temp1'])				
    		h1 = run_cmd(hum['lire_hum1'])
    merci vincent de ton aide

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

Discussions similaires

  1. [Sécurité] $_ENV => Liste des variables liées
    Par Romanops dans le forum Langage
    Réponses: 8
    Dernier message: 17/04/2007, 15h07
  2. Réponses: 3
    Dernier message: 07/12/2006, 12h23
  3. [POO] Liste des variables de mon Objet
    Par hisy dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2006, 10h51
  4. STL List et variable globale (extern)
    Par flipper203 dans le forum SL & STL
    Réponses: 9
    Dernier message: 04/07/2006, 14h20
  5. [CSS] list à largeur variable
    Par laurent_h dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 03/05/2006, 15h17

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