#!/usr/bin/env python############################################################################ Copyright (C) 2007 Ryan Kavanagh ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## You should have received a copy of the GNU General Public License along ## with this program; if not, write to the Free Software Foundation, Inc., ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ## You may contact the author at ryanakca@kubuntu@org ############################################################################import mathclass Triangle: """Classe du Triangle, pour trouver des informations (tels que l'aire, son type (Acutangle, Rectangle, Obtusangle)) a son sujet""" def __init__(self, cote1, cote2, cote3, hauteur=0): """Definie le triangle, avec la mesure de cote1, cote2, cote3, et la variable facultative 'hauteur' """ self.set_triangle(cote1, cote2, cote3) self.set_triangle_pour_aire(cote1, hauteur) def set_triangle_pour_type(self, cote1, cote2, cote3): """Definie le triangle, avec sa base, son hauteur, son hypothenuse et la mesure de l'autre cote. """ if str(cote1).isdigit() and str(cote2).isdigit() and \ str(cote3).isdigit() and str(hauteur).isdigit(): self.listedecotes = self.liste_de_cote_croissants(cote1, cote2, cote3) self.cote1, self.cote2, self.cote3 = self.listedecote else: plainte = "S.V.P. donner les variables en chiffres" return plainte def liste_de_cote_croissants(self, a, b, c): """"Imprime le plus grand nombre de 3 nombres, a, b, et c""" self.liste_de_nombres = [] if a < b and a < c: self.liste_de_nombres.append(a) elif b < a and b < c: self.liste_de_nombres.append(b) else: self.liste_de_nombres.append(c) if a > self.liste_de_nombres[0] and a < c: self.liste_de_nombres.append(a) elif b < self.liste_de_nombres[0] and b < c: self.liste_de_nombres.append(b) else: self.liste_de_nombres.append(c) if a > self.liste_de_nombres[1]: self.liste_de_nombres.append(a) elif b > self.liste_de_nombres[1]: self.liste_de_nombres.append(b) else: self.liste_de_nombres.append(c) return self.liste_de_nombres def queltype(self): """Est-ce un triangle rectangle, obtusangle or acutangle? Vous devez avoir definit votre triangle avec set_triangle """ # Pythagore: A**2 + B**2 self.valeur1 = (self.cote1 ** 2.0) + (self.cote2 ** 2) # = C**2 self.valeur2 = self.cote2 ** 2.0 # Si A**2 + B**2 est plus petit que C**2, Obstusangle if self.valeur1 < self.valeur2: self.type = 'Obtusangle' # Si A**2 + B**2 est == a C**2, Rectangle elif self.valeur1 == self.valeur2: self.type = 'Rectangle' # Acutangle else: self.type = 'Acutangle' return self.type def aire(self): """Calcule l'aire du triange""" # Aire = base * hauter / 2 self.aire = (self.cote1 * self.hauteur) / 2.0 return self.airedef quit(prompt, retries=4, complaint='Oui ou Non, S.V.P!'): """Fonction pour determiner si l'utilisateur veux quitter le program.""" while True: ok = raw_input(prompt) if ok[0].lower() == "o": return False if ok[0].lower() == "n": return True retries = retries - 1 if retries < 0: raise IOError, 'refusenik user' print complaintdef main(): oncalcule = True shape = Triangle(1, 1, 1) while oncalcule == True: print "Que voulez-vous savoir au sujet de votre triangle?" print "1. Son type (acutangle, rectangle, obtusangle)" print "2. Son aire" quoicalculer = input("> ") if quoicalculer == 1: print "Ou que premier cote est le plus petit et troisieme" + \ " cote est le plus grands: " cote1 = int(raw_input("Quel est la mesure du 1er cote? ")) cote2 = int(raw_input("Quel est la mesure du 2e cote? ")) cote3 = int(raw_input("Quel est la mesure du 3e cote? ")) # Definie l'objet shape.set_triangle(cote1, cote2, cote3) print "Ce triangle est: ", shape.queltype() elif quoicalculer == 2: print "Ou que cote1 est le plus petit: " cote1 = int(raw_input("Quel est la mesure du premier cote? ")) # Met cote2 et cote3 a nul, puisqu'ils ne sont pas requis hauteur = int(raw_input("Quel est la hauteur du triangle? ")) shape.set_triangle(cote1, cote2, cote3, hauteur) print "L'aire de ce triangle est: ", shape.aire() else: print "S.V.P. Choisir une option en entrant le chiffre", " correspondant." print "Voulez-vous: " print "1. Calculer autre chose" print "2. Quitter" prochaine_action = input("> ") if prochaine_action == 1: pass elif prochaine_action == 2: oncalcule = quit("Voulez-vous vraiment quitter? ") else: print "S.V.P. Choisir une option en entrant le chiffre", " correspondant."if __name__ == '__main__': main()