Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1389 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Programmation python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programmation python

n°1931315
abcdk
Posté le 12-10-2009 à 20:19:26  profilanswer
 

Bonjour,
 
j'aurais besoin d'aide pour une programmation en python, je viens de commencer donc je rame un peu :)
 
Voici l'énoncé :
a,b,c trois longueurs à saisir. Determinez si elle permettent de construire un triangle. Si oui, precisez le type de triangle.
 
Voilà ce que j'ai fait, ça me paraît un peu compliqué et en plus ça ne marche pas, j'ai beau chercher le problème je ne le trouve pas!  
 
from math import *
 
a=raw_input(" dimension du côté BC: " )
b=raw_input(" dimension du côté AC: " )
c=raw_input(" dimension du côté AB: " )
a=float(a)
b=float(b)
c=float(c)
 
x1=asin(a/c)
x2=asin(b/c)
x3=atan(c/b)
 
x=x1+x2+x3
 
if x==pi:
    if x1==(pi/2) or x2==(pi/2) or x3==(pi/2):
        print " ABC est un triangle rectangle"
    elif x1==x2 or x2==x3 or x1==x3:
        print "ABC est un triangle isocèle"
    elif x1==x2 and x2==x3 and x3==(pi/3):
        print "ABC est un triangle équilatéral"
    else:
        print "ABC est un triangle quelconque"
else:
    print "ABC n'est pas un triangle"

mood
Publicité
Posté le 12-10-2009 à 20:19:26  profilanswer
 

n°1931424
suizokukan
Posté le 13-10-2009 à 10:45:43  profilanswer
 

Bonjour, quelques remarques sur ton programme :
(0) il fonctionne bien mais...
(1) sur Hardware.fr utilise les balises de code comme je le fais un peu plus loin dans ce message.
(2) ajoute la ligne  

Code :
  1. #  -*- coding: utf-8 -*-


au tout début de ton code, sinon tu auras un problème avec les accents de ton texte
(3) n'utilise pas  

Code :
  1. from math import *


ça paraît plus simple mais en réalité c'est source d'erreurs, pour plus tard, quand ton code aura grossi.
 
(4) à la place de :

Code :
  1. a=float(a)
  2. b=float(b)
  3. c=float(c)


tu peux aussi écrire :

Code :
  1. a,b,c = float(a), float(b), float(c)


 
Bonne journée.

Message cité 1 fois
Message édité par suizokukan le 13-10-2009 à 10:47:15

---------------
rule #1 : trust the python
n°1931425
suizokukan
Posté le 13-10-2009 à 10:45:59  profilanswer
 

(erreur de ma part)


Message édité par suizokukan le 13-10-2009 à 10:46:24
n°1931459
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2009 à 12:08:33  profilanswer
 

suizokukan a écrit :

Bonjour, quelques remarques sur ton programme :
(0) il fonctionne bien mais...


Pas nécessairement, et ça dépend potentiellement de la plateforme: il fait des égalités strictes sur des flottants :/


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1931533
suizokukan
Posté le 13-10-2009 à 15:51:38  profilanswer
 

Diable, Masklinn, je ne pensais pas que la comparaison directe de deux types float posait problème. Mais alors que faire ? passer par une bibliothèque plus spécialisée ?

Message cité 1 fois
Message édité par suizokukan le 13-10-2009 à 15:51:58

---------------
rule #1 : trust the python
n°1931545
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2009 à 16:07:18  profilanswer
 

suizokukan a écrit :

Diable, Masklinn, je ne pensais pas que la comparaison directe de deux types float posait problème.


Code :
  1. >>> (0.2 - 0.1) == (0.3 - 0.2)
  2. False


[:dawa]

 

Vas lire le goldberg immédiatement, chenapan :o

suizokukan a écrit :

Mais alors que faire ? passer par une bibliothèque plus spécialisée ?


Il faut utiliser un epsilon (en gros tu détermines une marge d'erreur, tu soustraits les deux nombres à comparer et si le résultat est inférieur à ta marge d'erreur tu considères qu'ils sont égaux).

 

Il y a d'autres stratégies, mais elles imposent des limitations (et potentiellement un impact au niveau des perfs) et ne sont pas nécessairement utilisables selon les cas: faire ses calculs avec des entiers (en ajoutant des puissances de 10 aux valeurs initiales, c'est comme ça que sont faits les calculs monétaires) ou en faisant du fixed-point arithmetics ou du decimal. En python, c'est le rôle du module decimal justement.


Message édité par masklinn le 13-10-2009 à 16:10:07

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Programmation python

 

Sujets relatifs
Thread python et arret du scripte (ctl + c)En VB tu as sendkeys, mais en python c'est quoi?
les fonctions "thread_safe" et la programmation multi-threadprogrammation logiciel mac et pc
Dive Into Python épisode 6: Le Retour du PythonProgrammation sous Excel
World of Warcraft et programmationProgrammation asp : enregistrement page en html
[BIBLIOLINK Python] Tutorial programmation ADOProgrammation python sous un pocket PC
Plus de sujets relatifs à : Programmation python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR