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 :

Double réponse | Double condition | None


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Août 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Août 2016
    Messages : 1
    Par défaut Double réponse | Double condition | None
    Bonjour/Bonsoir, je commence à apprendre à coder en python et je rencontre un problème jusque là, sans solution.
    De nature combative je me suis dit que si je n'ai pas la réponse au problème, l'un de vous la connait !

    Les lignes ci dessous sont censées dire si un triangle est isocèle ou non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def isocele (d,e,f):
        cotea=d
        coteb=e
        cotec=f
        if cotea==coteb:
         print ('Isocele')
        if coteb==cotec:
         print ('Isocele')
        if cotec==cotea:
         print ('Isocele')
        if cotea!=coteb!=cotec:
         print ('Quelconque')
    print (isocele(5,4,5))
    Je pense que vous avez tous suivis et ricané devant votre écran et on arrive au problème, si "d" est différent à "e" et "f", pas de problème (Il dit "Isocele"), si "f" est différent à "d" et "e", pas de problème (Toujours "Isocele"), mais si c'est "e" qui est différent de "d" et "f", là il me dit : "Isocele
    Quelconque" Ce qui me pose problème ! Merci de me donner le problème et la solution si possible !

    _____________________________________________________________________________________________________________________________________________________________________________________________________________

    Ensuite, vous pouvez voir dans les lignes ci-dessous (Toujours les mêmes) que je met 4 lignes pour quatre conditions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def isocele (d,e,f):
        cotea=d
        coteb=e
        cotec=f
        if cotea==coteb:
         print ('Isocele')
        if coteb==cotec:
         print ('Isocele')
        if cotec==cotea:
         print ('Isocele')
        if cotea!=coteb!=cotec:
         print ('Quelconque')
    print (isocele(5,4,5))

    Or j'aimerais savoir si il est possible de mettre ces 4 conditions sur une seule et même ligne, merci d'avance.

    _____________________________________________________________________________________________________________________________________________________________________________________________________________

    J'ai aussi un autre problème, mais minime, ce problème du "None" dans le noyau est né avec ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def pythagore (a,b,c):
        cotea=a**2
        coteb=b**2
        hypotenuse=c**2
        if cotea+coteb==hypotenuse:
         print ('Rectangle')
        else:
         print ('Quelconque')
    print (pythagore(3,4,5))
    Encore plus simple que le précédent, celui ci doit dire si un triangle est rectangle ou non selon le théorème de Pythagore...
    Celui-ci n'a aucun problème à part un "None" qui s'affiche sur le noyau, ça donne ça :

    "Rectangle
    None"

    J'aimerais savoir de quoi ça vient, merci d'avance pour tout !

    Si vous connaissez une réponse mais pas les deux autres allez y tout de même, ce serait très gentil de votre part !
    Bonne programmation !

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

    Citation Envoyé par Amidous Voir le message
    Je pense que vous avez tous suivis et ricané devant votre écran et on arrive au problème, si "d" est différent à "e" et "f", pas de problème (Il dit "Isocele"), si "f" est différent à "d" et "e", pas de problème (Toujours "Isocele"), mais si c'est "e" qui est différent de "d" et "f", là il me dit : "Isocele
    Quelconque" Ce qui me pose problème ! Merci de me donner le problème et la solution si possible !
    Il faut apprendre à lire votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def isocele (d,e,f):
        cotea=d
        coteb=e
        cotec=f
        if cotea==coteb:
         print ('Isocele')
        if coteb==cotec:
         print ('Isocele')
        if cotec==cotea:
         print ('Isocele')
        if cotea!=coteb!=cotec:
         print ('Quelconque')
    Les instructions vont être exécutée l'une après l'autre et les conditions testées aussi l'une après l'autre: si plusieurs sont vraies, vous aurez autant de "print" exécutés. Il faudrait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if d == e or e == f or d == f: 
           print ('isocèle')
        else:
           print ...
    Citation Envoyé par Amidous Voir le message
    Encore plus simple que le précédent, celui ci doit dire si un triangle est rectangle ou non selon le théorème de Pythagore...
    Celui-ci n'a aucun problème à part un "None" qui s'affiche sur le noyau, ça donne ça :
    Par défaut, une fonction retourne None (et par défaut, c'est quant la fonction se termine autrement que par l'instruction "return" quelque chose.

    Nous avons mis à votre disposition de fabuleux tutos qui non seulement apportent des réponses à ces questions bêtes mais qui vous donneront quelques bases pour apprendre à programmer correctement. Cela vous permettrait de progresser à votre rythme et d'acquérir de bonnes bases plutôt que recopier des trucs glanés dans des forums qui fonctionnent sans trop savoir pourquoi.

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

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    C'est un exemple, mais pythagore est une formule permettant de faire plein de calculs autre, que de vérifier qu'un triangle est rectangle, le nom de cette fonction me semble pas adapté.

    Si on code en français, et que la question est, est-ce qu'un triangle est rectangle, on doit être capable de pouvoir répondre par oui ou par non, ce que python sait faire par exemple avec les booléens (True et False).

    Ce qui serait sympa est d'avoir une fonction permettant d'y répondre facilement afin d'y écrire par la suite ce qu'on veut dans la console.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def est_rectangle(triangle):
        # suite du code
        # return True ou False en fin de fonction
     
    mon_triangle = ... # Création de l'objet namedtuple
     
    if est_rectangle(mon_triangle):
        # J'affiche ce que je veux avec print
    On remarque que je n'ai qu'un argument, triangle, et dans cette structure se trouvera les informations concernant la valeur des 3 côtés. Pour faire cela, on peut utiliser les namedtuple.

    Bien-sûr il existe d'autres solutions tout autant adaptées. Mais la vôtre ne l'est sans doute pas !

    Prenez le temps de réfléchir à tout ça...

  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
    Salut,

    Simplifions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >>> def is_isocele(a, b, c):
    ...     return (a == b) + (a == c) + (b == c)
    ... 
    >>> print(is_isocele(3, 3, 3))
    3
    >>> print(is_isocele(3, 4, 3))
    1
    >>> print(is_isocele(3, 4, 4))
    1
    >>> print(is_isocele(3, 4, 8))
    0

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/03/2014, 14h05
  2. double réponse ?
    Par {F-I} dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/09/2010, 15h20
  3. Calcul String (valeur Hexa) -> double puis double -> char *
    Par ben_ghost dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 30/07/2006, 21h04
  4. Un double Select doublé d un "for each" qui coince
    Par Sparal dans le forum Access
    Réponses: 4
    Dernier message: 09/02/2006, 14h00

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