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 :

Déboggage condition python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Déboggage condition python
    Bonsoir à tous,

    je suis en train de debug le programme de quelqun, et je suis tombé sur une condition qui m'intrigue.

    Ne connaissant pas vraiment python, je voulais avoir votre avis là dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if int(typo_d) < 3:
                        return self.generate_random_destination(typo_d, dist_factor * 1.2)
                    elif typo_d < 12:
     
                        return self.generate_random_destination(typo_d - 1, 1)
                    else:
                        return False
    Alors, je ne suis pas habitué à ce langage du tout, mais quand je vois une condition avec un cast et l'autre sans cast, je ne peux pas m'empêcher de penser que ce n'est pas normal.

    Soit typo_d est un string et il faut un cast, soit c'est déjà un int et dans ce cas le cast du premier est inutile...Si effectivement il s'agit d'un string, je pense que je ne devrais jamais entrer dans la condition du elif...

    Bref, j'aimerais bien l'avis de quelqun plus calé que moi dans ce langage^^

  2. #2
    Membre averti Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Points : 388
    Points
    388
    Par défaut

    Bingo !...
    çà saute aux yeux juste après la première instruction que typo_d est d'un type différent d'un int (du moins en enlevant la possibilité que le dev veuille caster un int en int ! ) donc il va pas tester le elif ... (Notons que si la clause [b]elif[/] etait correcte il allait à la fois exécuter la boucle if et elif)
    Débogage partiel:
    1 - Indentation non respectée,
    2 - variable non castée avant verification dans les boucles,
    3 - condition trouble ( , probable repetition d'instruction)
    Toute chose dépend de la valeur qu'on lui attribue !

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Pour l'indentation c'est à cause du copié collé =)

    Sinon, en fait, j'ai fais une trace avec affichage et il entre bien dans les deux conditions,...ce qui veut dire que dans la première il cast un int en int....

    Je comprends pas certaines personnes vraiment --'

  4. #4
    Membre chevronné
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Points : 2 151
    Points
    2 151
    Par défaut
    En effet, un souci de cast.

    @cervo: je ne suis pas d'accord avec toi sur ta supposition de "condition trouble"

    Déjà, un "elif" ne se fait que si le premier "if" et faut, donc dans ce cas, il faudrait que typo_d soit dans [3,12[

    Et même si on avait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if typo_d < 3:
        return self.generate_random_destination(typo_d, dist_factor * 1.2)
    if typo_d < 12:
        return self.generate_random_destination(typo_d - 1, 1)
    return False
    L'algorithme serait toujours équivalent vu que nous avons un "return" qui interrompe la suite de l’exécution.

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

Discussions similaires

  1. [Python] Problème condition
    Par JohnAnto dans le forum Général Python
    Réponses: 2
    Dernier message: 30/10/2012, 22h19
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  4. Condition et contenu TImage
    Par Detlev_linux dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2003, 01h00
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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