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 :

Exo sur les triangles


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut Exo sur les triangles
    Bonjour

    Je débute donc, en programmation et en Python.
    Je suis (enfin...j'essaie de suivre) le livre dispo gratuitement "apprendre à Programmer avec Python3"

    Je suis embêtée avec le corrigé d'un exercice, qui utilise des choses qui ne sont pas mentionnées dans le cour, et qui ne sont pas expliquées du coup. Et j'aimerai bien comprendre pour mieux avancer

    Je vous le résume: exo 6.11 Il faut déterminer si les 3 longueurs entrées par l'utilisateur peuvent construire un triangle, et si oui si ce triangle est équilatéral, isocèle, rectangle, rectangle et isocèle, ou quelconque.

    Le corrigé :
    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
    from sys import exit
     
    print("Veuillez entrer les longueurs des 3 côtés en séparant ces valeurs à l'aide d'une virgule : ")
    a,b,c=eval(input())
     
    if(a<(b+c))and(b<(a+c))and(c<(a+b)):
        print("Ces 3 longueurs déterminent bien un triangle")
    else:
        print("Il est impossible de construire un tel triangle !")
        exit()
     
    f=0
    if(a==b)and(b==c):
        print("Ce triangle est équilatéral.")
        f=1
    elif(a==b)or(b==a)or(c==a):
        print("Ce triangle est isocèle")
        f=1
    if(a*a+b*b==c*c)or(b*b+c*c==a*a)or(c*c+a*a==b*b):
        print("Ce triangle est rectangle.")
        f=1
    if(f==0):
        print("Ce triangle est quelconque")
    Alors, déjà, je découvre qu'il existe un module "sys"

    Mais surtout :
    1. c'est quoi ces histoires de f=0 ou f=1 ?
    2. si le triangle est rectangle ET isocèle, ça marche ? (je ne trouve pas de longueurs correspondantes avec des nombres entiers pour tester)
    3. on a un "if", puis un "elif"....et ensuite on peut remettre un "if" ??? pourquoi pas un "elif" ou un "else" ?

    D'avance, je vous remercie de vos lumières

  2. #2
    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
    Les print donnent une indication suffisante il me semble.

    On est dans deux cas,
    • triangle quelconque (f=0)
    • triangle non quelconque (f=1)


    Si f = 1, on spécifie le type de triangle.

    Autant dire que ce code n'est pas très beau, mais vous n'aidez pas à sa lecture en ne vérifiant pas que l'indentation est bien respectée entre les balises code (bouton # au dessus de la fenêtre d'édition).

  3. #3
    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,

    Ouais pas très beau effectivement et surtout qui montre un très mauvaise exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    a,b,c=eval(input())

  4. #4
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Ouais pas très beau effectivement et surtout qui montre un très mauvaise exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    a,b,c=eval(input())
    Justement je trouvais ça très pratique
    Moi je m'étais embêtée bien + que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    print("Veuillez entrer 3 longueurs, séparées par des virgules :")
    ch=input()
    L=list(eval(ch)) # les valeurs saisie par l'utilisateur sont maintenant
                     # des nombres
     
    a,b,c=L[0],L[1],L[2] # on les tranforme en a,b,c pour que ce soit plus
                         # simple ensuite de les manipuler

  5. #5
    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
    En fait il y a de mauvaises et très mauvaises pratiques. En l'occurrence, la fonction eval (surtout dans votre cas d'utilisation avec input) est à proscrire.

    Avec un peu de recherches sur le net, vous comprendrez pourquoi, c'est assez connu...

  6. #6
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut
    Donc finalement.....j'apprends 'mal'

    Je ne voulais pas apprendre seule justement pour ce genre de choses, que je ne peux pas deviner. Je ne peux que faire confiance au livre d'apprentissage que je suis, il est impossible de vérifier chaque ligne sous google pour savoir si c'est correct ou non

  7. #7
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut
    Mes excuses, je n'avais pas vu qu'il y avait une balise Code.
    C'est donc réparé, j'ai édité mon 1er message. En effet, c'est beaucoup, beaucoup plus facile à lire

Discussions similaires

  1. exo python : probleme sur les operateurs ?
    Par m1338 dans le forum Général Python
    Réponses: 4
    Dernier message: 05/03/2019, 13h48
  2. probleme Exo sur les ABR
    Par benjy13 dans le forum Autres SGBD
    Réponses: 0
    Dernier message: 17/06/2009, 19h21
  3. exo sur les pointeurs
    Par goldensun dans le forum Débuter
    Réponses: 9
    Dernier message: 07/11/2008, 02h23
  4. des exos sur les boocles
    Par zeyd dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 27/11/2005, 18h03
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

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