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 :

Pourquoi mon if ne peut pas comparer une valeur


Sujet :

Python

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut Pourquoi mon if ne peut pas comparer une valeur
    Bonjour à tous

    Mon but est de lire ce qui est envoyer dans mon serial.

    Je recois des position GPS et cette commande me retourne toujours false alors qu'elle est true

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    print ("raw:", data) #prints raw data
    print(data[0:6])
    if data[0:6] == "$GPRMC":
        print('2')

    print 2 n'est jamais afficher.

    Par contre voici ce que me print data[0:6]
    raw: b'$GPRMC,220135.00,A,4627.20773,N,00613.15008,E,0.632,,200420,,,A*7A\r\n'
    b'$GPRMC'
    il y a ce b. qu'est-ce qu'il veut dire, des bytes?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,
    Citation Envoyé par pierrot10 Voir le message

    il y a ce b. qu'est-ce qu'il veut dire, des bytes?
    Oui.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Pour faire ce que tu veux une possibilité :


    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    print ("raw:", data) #prints raw data
    print(data[0:6])
    if data[0:6].decode() == "$GPRMC":
        print('2')

    Mais autant tout convertir : data = data.decode()

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Je pense avoir compris pourquoi,
    parce que data est byte et la comparaison est un str

    J'ai essayé ceci qui fonctionne

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sentence = data[0:6]
        if sentence.decode('UTF-8') == "$GPRMC":

    Mais je suis pas tout à fait convaincu. Je donne mon code dans le prochain message

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Voici mon code au complet

    Comment je oeux faire pour quitter la boucle?

    Je fais appelle à mon fonction
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    lat,lon,date = get_gps()
    Code python : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    def get_gps():
       #GPIO.output(gps_power, 1)
        try:
            with serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) as ser:
                while True:
                    data = ser.readline()
                    #if data[0:6] == "b'$GPRMC":
                    #    mnea  = pynmea2.parse(data)
                    #    print(mnea.latitue)
     
                    parseGPS(data) # J'aimerais bien un nouveau paramètre comme parseGPS(data,"GPRMC")
                    print('1')
        except Exception as e:
            print('Error reading serial port:' + e)
     
    def parseGPS(data):
        print ("raw:", data) #prints raw data
        print(data[0:6])
        sentence = data[0:6]
        if sentence.decode('UTF-8') == "$GPRMC":
            print('2')
            spdata = data.decode('UTF-8')
            sdata = spdata.split(",")
            if sdata[2] == 'V':
                print ('no satellite data available')
                return
            print('---Parsing GPRMC---')
            time = sdata[1][0:2] + ":" + sdata[1][2:4] + ":" + sdata[1][4:6]
            lat = decode(sdata[3]) #latitude
            dirLat = sdata[4]      #latitude direction N/S
            lon = decode(sdata[5]) #longitute
            dirLon = sdata[6]      #longitude direction E/W
            speed = sdata[7]       #Speed in knots
            trCourse = sdata[8]    #True course
            date = sdata[9][0:2] + "/" + sdata[9][2:4] + "/" + sdata[9][4:6]#date
     
            print("time : %s, latitude : %s(%s), longitude : %s(%s), speed : %s, True Course : %s, Date : %s" %  (time,lat,dirLat,lon,dirLon,speed,trCourse,date))
            return lat,lon,date
     
        #if str.find('GGA') > 0:
            #msg = pynmea2.parse(str)
            #msg.latitude
            #print "Timestamp: %s -- Lat: %s %s -- Lon: %s %s -- Altitude: %s %s -- Satellites: %s" % (msg.timestamp,msg.lat,msg.lat_dir,msg.lon,msg.lon_dir,msg.altitude,msg.altitude_units,msg.num_sa$
     
     
    def decode(coord):
        #Converts DDDMM.MMMMM > DD deg MM.MMMMM min
        x = coord.split(".")
        head = x[0]
        tail = x[1]
        deg = head[0:-2]
        min = head[-2:]
        return deg + " deg " + min + "." + tail + " min"

    Le problème des qu'il a trouver GPRMC, il continue a looper. et je pense que c'est parce que j'ai un WHILE True, donc il troune en boucle car elle n'est jamais rompue.
    Donc, ou est-e que je met un break, dans parceGPS()?

    Finalement pour que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lat,lon,date = get_gps()
    prennent les valeurs trouvé, le return se fait bien parseGPS()?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Je pense avoir compris pourquoi,
    parce que data est byte et la comparaison est un str
    Tu compares des bytes à une string

    Citation Envoyé par pierrot10 Voir le message
    J'ai essayé ceci qui fonctionne
    Ben oui ça correspond à ce que je t'ai proposé, sauf que je n'ai pas précisé "UTF-8"...

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par pierrot10 Voir le message

    Comment je oeux faire pour quitter une boucle?
    Ben en général on quitte une boucle quand la ou les conditions voulue(s) sont remplie(s)...

    Dans ta boucle il y a mais combien y a-t-il de ligne à lire ?
    Si il n'y en a qu'une alors pas besoin de la boucle while True...

    Citation Envoyé par pierrot10 Voir le message
    Finalement pour que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lat,lon,date = get_gps()
    prennent les valeurs trouvé, le return se fait bien parseGPS()?
    Si tu tiens à faire comme ça alors dans la fonction get_gps il faut que tu remplaces parseGPS(data) par return parseGPS(data)...

    Et pas besoin de la boucle car apparemment tu ne lis qu'une ligne...

    PS : Corrige une erreur : remplace print('Error reading serial port:' + e) par print('Error reading serial port:', e)...

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 717
    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 717
    Par défaut
    Salut,

    Citation Envoyé par pierrot10 Voir le message
    Je recois des position GPS et cette commande me retourne toujours false alors qu'elle est true

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    print ("raw:", data) #prints raw data
    print(data[0:6])
    if data[0:6] == "$GPRMC":
        print('2')
    Pour répondre à votre question data[0:6] == b"$GPRMC".
    Et si vous aviez compris ce que je vous racontais dans une autre discussion, vous sauriez que:
    $GPRMC,220135.00,A,4627.20773,N,00613.15008,E,0.632,,200420,,,A*7A
    est une trame NMEA 0183.

    Elle utilise tous les caractères ASCII (et est donc encodée ASCII) et que les 2 derniers bytes (7E) sont un checksum des données qui sont entre les caractères '$' et '*' de la trame.

    Ce qui signifie que vous avez un checksum à calculer pour vérifier l'intégrité des données reçues avant de pouvoir en faire quoi que ce soit.

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

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Bonjour Wiztrick et beginner

    Merci pour vos réponses et toutes vos suggestions.
    D'abord, je m'excuse car j'ai pas vu vos réponses et il y a eu de l'avancement. Aussi apparemment, j'ai posté un message sans avoir vu celui de beginner.

    "Historiquement", j'essayais de faire mon travail avec pynmea2 selon un tutorial. N'y arrivant pas à récupérer la trame venant de serial, je me suis penché sur la "solution manuelle", d'ou mes codes et mes fonctions.

    La source du problème était bien

    Tu compares des bytes à une string
    et le decode() est bien la solution.

    J'ai donc réussi à lire ma trame. Donc j'ai repris la solution avec pynmea2 car je trouve ceci plus simple et propre

    Code python : 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
    27
    28
    29
    30
    31
     
    get_gps("GPRMC")
    def get_gps(sentence):
        #GPIO.output(gps_power, 1)
        try:
            with serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) as ser:
                while True:
                    # read 20 lines from the serial output, if not leave
                    for i in range(20):
                        data = ser.readline()
                        sdata=data[0:6].decode('UTF-8')
                        if sdata == "$" + sentence:
                            mnea  = pynmea2.parse(data.decode('UTF-8'))
                            print('DEBUG')
                            print(mnea)
                            print(mnea.latitude)
                            print(mnea.longitude)
                            print(mnea.time)
                            print(mnea.date)
                            return mnea.latitude, mnea.longitude
                            break
     
                     print('Cannt find NMEA sentence')
                     # Leave while
                     break
     
                    # NOT USED
                    # parseGPS(data)
     
        except Exception as e:
            print('Error reading serial port:' , e)
    et j'ai appliqué la trouvaille à celle-ci, ce qui me donne quelque chose de plus simple et élégant, si je peux dire ainsi.

    Au passage
    PS : Corrige une erreur : remplace ...
    Merci, c'est fait

    De là, j'ai encore deux petites questions et une dernière pour Wiztricks

    Q1: Est-ce que le break est indispensable après le return? Est-ce que le return suffit pour quitter la loop?
    Q2: Est-ce qu'il y a plus élégant?

    Elle utilise tous les caractères ASCII (et est donc encodée ASCII) et que les 2 derniers bytes (7E) sont un checksum des données qui sont entre les caractères '$' et '*' de la trame.
    C'est intéressant,

    et que les 2 derniers bytes (7E)
    Tu veux dire 7A?

    En fait c'est cela qui me permettrait de voir si la trame est valide ou pas?
    Ce qu'il manque encore, c'est justement cela, car même s'il trouve $GPRMC, et que la trame n'est pas valide, je préfère qu'il me génère une exception, ou qu'il ne quitte pas le while, jusqu'à ce qu'il rencontre une trame valide, selon le type voulu.

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 717
    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 717
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Tu veux dore 7A?

    En fait c'est cela qui me permettrait de voir si la trame est valide ou pas?
    Ce qu'il manque encore, c'est justement cela, car même s'il trouve $GPRMC, et que la trame n'est pas valide
    Si vous utilisez un outil "fait pour" comme pynmea2, la moindre des choses serait de regarder la documentation de pynmea2.parse pour voir s'il vérifie ce checksum dans tous les cas, où s'il faut le demander et ce que c'est supposez faire lorsque le checksum est incorrect.

    Vous devez aussi savoir qu'avec un timeout data = ser.readline() retourne ce qu'il a pu lire et pas toujours une ligne "complète" (dans ce cas, pas la peine de la passer à pynmea2.parse qui ne pourra que se vautrer...

    Après si vous vous posez encore des questions comme:
    Citation Envoyé par pierrot10 Voir le message
    Q1: Est-ce que le break est indispensable après le return? Est-ce que le return suffit pour quitter la loop?
    c'est que vous devez apprendre les bases de la programmation plutôt que de vous lancer dans un projet trop difficile où vous ne maîtrisez pas grand chose. Comme vous utilisez des équipements externes que pas grand monde a à sa disposition, l'aide qu'on pourra vous donner sera de toutes façons limitée (on ne peut pas reproduire). Donc si vous n'êtes pas plus "autonome", çà ne va pas le faire.

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

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Donc j'ai repris la solution avec pynmea2 car je trouve ceci plus simple et propre
    Cette fois c'est pour lire plus d'une ligne... Mais même là il me semble que la boucle while True ne sert à rien, c'est la boucle for qui lis les 20 lignes (enfin elle en lit moins que 20 si la bonne ligne est trouvée avant)...

    Mais lire 20 lignes n'a pas d’intérêt puisque tu ne stockes pas* les résultats pour chaque ligne. En effet seuls les résultats d'une ligne sont éventuellement retournés car après ceci return mnea.latitude, mnea.longitude tu quittes la fonction et donc la boucle for...

    * Il est possible que ce soit voulu et dans ce cas l’intérêt serait de chercher la première bonne ligne celle qui vérifie la condition if sdata == "$" + sentence: et on ne fait pas plus de 20 tentatives pour cela...


    Citation Envoyé par pierrot10 Voir le message
    Q1: Est-ce que le break est indispensable après le return?
    Non il ne sert à rien.
    Citation Envoyé par pierrot10 Voir le message
    Est-ce que le return suffit pour quitter la loop?
    Oui non seulement tu quittes la boucle mais aussi la fonction.

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par pierrot10 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    def get_gps(sentence):
                while True:
                    # read 20 lines from the serial output, if not leave
                    for i in range(20):
                        data = ser.readline()
                        sdata=data[0:6].decode('UTF-8')
                        if sdata == "$" + sentence:
                            ...
                            return mnea.latitude, mnea.longitude    # Sortie de la fonction (donc sortie du for et du while)
                            break         # sortie du for
     
                     print('Cannt find NMEA sentence')
                     # Leave while
                     break         # sortie du while
    Q2: Est-ce qu'il y a plus élégant?
    Oui, supprimer ce "while" qui ne sert à rien vu que quoi qu'il se passe tu en sors à la première itération.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Bonjour à tous merci pour vos messages

    c'est que vous devez apprendre les bases de la programmation plutôt que de vous lancer dans un projet trop difficile où vous ne maîtrisez pas grand chose. Comme vous utilisez des équipements externes que pas grand monde a à sa disposition, l'aide qu'on pourra vous donner sera de toutes façons limitée (on ne peut pas reproduire). Donc si vous n'êtes pas plus "autonome", çà ne va pas le faire.
    Oui je comprends cette remarque mais je dois répondre à un besoin et c'est vrai que c'est mon premiere grand project avec Python. Donc j'apprends. Merci pour la patience.

    Cette fois c'est pour lire plus d'une ligne... Mais même là il me semble que la boucle while True ne sert à rien, c'est la boucle for qui lis les 20 lignes (enfin elle en lit moins que 20 si la bonne ligne est trouvée avant)...

    Mais lire 20 lignes n'a pas d’intérêt puisque tu ne stockes pas*
    Merci merci. Je dois partir et je n'ai pas eu le temps d'étudier (j'ai juste lu de travers).
    Je regarderai avec plus d'attention plus tard (et pour enlever ce while )
    Je regardera ce soir (je suis sous plein de requete )

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    J'ai corrigé mon code de la sorte
    Code python : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    def get_gps():
        print('[INFO] Turn ON GPS')
        gps_power.value = True
     
        print('[INFO] Getting GPS')
        try:
            with serial.Serial('/dev/ttyAMA0', baudrate=9600, timeout=1) as ser:
                gpsOk = False
     
                # read 20 lines from the serial output
                for i in range(20):
                    try:
                        data = ser.readline()
                        sdata=data[0:6].decode('UTF-8')
                        if sdata == "$GPRMC":
                            nmea  = pynmea2.parse(data.decode('UTF-8'),check=True)
                            gpsOk = True
                            break
                    except serial.SerialException as e:
                        print('Device error: {}'.format(e))
                        break
                    except pynmea2.ParseError as e:
                        print('Parse error: {}'.format(e))
                        continue
     
                # NOT USED
                # parseGPS(data)
     
        except Exception as e:
            print('Error reading serial port:' , e)
     
       # Power off GPS
        print('[INFO] Turn OFF GPS')
        gps_power.value = False
     
        if gpsOk:
            print('[INFO] OK')
            return nmea.latitude, nmea.longitude
        else:
            print('[ERROR] Cannot find GPRMC sentences')
            return 0.0,0.0

    Il y a juste un truc qui me manque, est de controller si ma phrase NMEA est valide ou pas.

    J'ai lu (mais j'ai probalement mal compires ) que le check=True
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nmea  = pynmea2.parse(data.decode('UTF-8'),check=True)
    mais l'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    except pynmea2.ParseError as e:
    n'est jamais exécuté.

    Je verrai si je laisse ou pas ceci...

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    J'aimerais bien encore vous poser une dernière question.

    Dans mon code, je peux mesurer le GPS, mais ce n'est absolument pas le plus important. Quand je mettrai ma station sur le terain, je vais mesurer la qualité de l'air la station ne va pas bouger.

    Avec Arduino peut faire ceci

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //#define GPS
    #if define(GPS)
      get_gps()
    #endif

    Si je décommente #define GPS, la fonction GPS est activée par la fonction get_GPS

    Est-ce que Python offre une fonctionnalité similaire?

    Ainsi je pourrais mettre en haut du fichier des variable.

    Ou alors devrais-je faire tout bêtement avec des if?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GPS = True
    if GPS:
       get_gps()
    Ca pourrait aussi aller, mais je me demandais s'il y avait quelque chose de prévu chez Python

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Est-ce que Python offre une fonctionnalité similaire?
    Non. Cette possibilité est offerte par le pré-processeur C qui traduit un source C en source2 C contenant tous les #include réellement inclus et les #define remplacés par leur valeur. Et c'est ce source2 qui est ensuite compilé. Comme Python lui n'est pas compilé...

    Citation Envoyé par pierrot10 Voir le message
    Ou alors devrais-je faire tout bêtement avec des if?
    Ben c'est ça. Si tu veux appeler get_gps() alors tu l'appelles sinon tu ne l'appelles pas. Mais si ça se multiplie, tu peux alors boucler sur un tuple.
    Exemple:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (do, fct) in (
    	(False, get_gps),
    	(True, get_truc),
    	(False, get_chose),
    ): if do: fct()
    .

    Citation Envoyé par pierrot10 Voir le message
    mais je me demandais s'il y avait quelque chose de prévu chez Python
    Oui, il a prévu une teuf pour son anniv...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 25
    Dernier message: 01/05/2020, 06h36
  2. Réponses: 9
    Dernier message: 08/08/2016, 15h52
  3. [AC-2007] un index ou une clé principale ne peut pas contenir une valeur null
    Par sarhouda dans le forum Access
    Réponses: 6
    Dernier message: 13/12/2012, 18h54
  4. Réponses: 11
    Dernier message: 06/12/2008, 13h15
  5. Réponses: 3
    Dernier message: 06/03/2007, 14h15

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