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 :

Précisions sur la syntaxe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut Précisions sur la syntaxe
    Salut à tous,

    Je crois que c'est mon premier post sur ce forum Python, et je suis débutant!! Donc soyez indulgents!!

    J’ai trouvé dans le dernier N° de "Hackable" un programme intéressant pour gérer un HD44780 avec le GPIO d'un RPi.
    Le programmae est en Python et assez simple à comprendre, mais j'ai une question sur la syntaxe, dont je ne suis pas arrivé à trouver la réponse ici, ou dans Python.org.

    Voici les lignes de code concernées (sans les indentations!!):

    .......
    for i in range(4)
    if bits[i]=="1":
    GPIO.output(self.pin_db[::-1][i], True)
    ......


    Je comprends qu'on affecte la valeur "true" à la pin_db 1,2,3 ou 4 en fonction de bits, mais je ne saisis pas les subtilités de la syntaxe dans les paramètres de GPIO.output. Est-ce une formule condensée??

    Un lien vers une référence ou une explications seraient les bienvenus.

    Merci et bonnes fêtes.

    Gérard.

  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,

    Il s'agit de renverser l'ordre des pins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    >>> pin_db = [0, 1, 2, 3, 4, 5]
    >>> pin_db[::-1]
    [5, 4, 3, 2, 1, 0]
    >>> for i in range(4):
    ...     print("%s --> %s" %(pin_db[i], pin_db[::-1][i]))
    ... 
    0 --> 5
    1 --> 4
    2 --> 3
    3 --> 2
    Dans ton cas, tu as des 1 et 0 sans doute.

  3. #3
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut
    OK et merci pour l'explication... mais je suis perplexe car je ne comprends pas ce que cette inversion des pins vient faire!!
    Je pensais que cela servaià à mettre des pins à "true"??

  4. #4
    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
    Et bien c'est cela.

    Si au départ, on a [1, 0, 1, 0] après la boucle on a [1, True, 1, True]

    [0, 0, 1, 1] --> [True, True, 1, 1] etc

    Maintenant, l'intérêt de remplacer des bits par True c'est à voir avec GPIO que je ne connais pas.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Citation Envoyé par F6EEQ Voir le message
    OK et merci pour l'explication... mais je suis perplexe car je ne comprends pas ce que cette inversion des pins vient faire!!
    Je pensais que cela servaià à mettre des pins à "true"??
    On peut raconter ce que fait le code. Après est-ce que "fonctionnellement" à du sens... tout dépend des réalités (que le codeur a) représentées sous la forme de "bits" et "pins_db".
    Et c'est pas la lecture du code qui le dira.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Un petit tour dans la doc de GPIO donne des infos: https://sourceforge.net/p/raspberry-...ki/BasicUsage/

    Extrait:

    To set the output state of a GPIO pin:

    GPIO.output(channel, state)

    (where channel is the channel number based on the numbering system you have specified (BOARD or BCM)).

    State can be 0 / GPIO.LOW / False or 1 / GPIO.HIGH / True.
    Cela veut dire que self.pin_db[::-1][i] donne le "channel number" et que True (ou 1 ou GPIO.HIGH) donne la valeur à prendre en compte.

    Tout dépend en fait de la manière dont self.pin_db a été construit avant. Ici on a trouvé nécessaire d'inverser avec [::-1], mais on aurait pu faire autrement en le construisant au départ à l'envers: c'est le choix du programmeur!

  7. #7
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut
    Parfait.

    Merci de votre aide.
    Pour l'inversion des pins c'est OK pour que le mot soit présenté dans le bon sens.
    Mais j'aurais pu chercher longtemps la signification des :: !!

    Bon Noël à tous.

Discussions similaires

  1. Précision sur la syntaxe d'un test
    Par ChPr dans le forum Langage
    Réponses: 12
    Dernier message: 20/05/2016, 23h18
  2. Précision sur Oracle 9iAS r2
    Par Patmane dans le forum Oracle
    Réponses: 9
    Dernier message: 18/03/2007, 04h41
  3. [XPath] petite précision sur type de syntaxe
    Par Royd938 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/06/2006, 12h13
  4. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  5. Précision sur les sauvegarde à chaud
    Par alxkid dans le forum Administration
    Réponses: 2
    Dernier message: 09/08/2004, 18h55

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