All pastes #375743 Raw Edit

Stuff

public text v1 · immutable
#375743 ·published 2007-02-28 15:56 UTC
rendered paste body
#!/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 math

class 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, hauteur)
        
    def set_triangle(self, cote1, cote2, cote3, hauteur=0):
        """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.listedecotes
            self.hauteur = hauteur
        else:
            plainte = "S.V.P. donner les variables en chiffres"
            return plainte
        
    def liste_de_cote_croissants(a, b, c):
        """"Imprime le plus grand nombre de 3 nombres, a, b, et c"""
    
        liste_de_nombres = []
    
        if a < b and a < c:
            liste_de_nombres.append(a)
        elif b < a and b < c:
            liste_de_nombres.append(b)
        else:
            liste_de_nombres.append(c)
    
        if a > liste_de_nombres[0] and a < c:
            liste_de_nombres.append(a)
        elif b < liste_de_nombres[0] and b < c:
            liste_de_nombres.append(b)
        else:
            liste_de_nombres.append(c)
    
        if a > liste_de_nombres[1]:
            liste_de_nombres.append(a)
        elif b > liste_de_nombres[1]:
            liste_de_nombres.append(b)
        else:
            liste_de_nombres.append(c)
    
        return 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.hypothenuse ** 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.aire

def 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 complaint

def 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 = raw_input("> ")
            

            if quoicalculer == 1:
                print "Ou que premier cote est le plus petit et troisieme",
                " cote est le plus grands: "
                cote1 = raw_input("Quel est la mesure du premier cote? ")
                cote2 = raw_input("Quel est la mesure du deuxieme cote? ")
                cote3 = raw_input("Quel est la mesure du troisieme 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 = raw_input("Quel est la mesure du premier cote? ")
                # Met cote2 et cote3 a nul, puisqu'ils ne sont pas requis
                cote2, cote3 = 0, 0
                hauteur = raw_input("Quel est la hauteur de cd 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 == 3:
                oncalcule = quit("Voulez-vous vraiment quitter? ")
            else:
                print "S.V.P. Choisir une option en entrant le chiffre",
                " correspondant."
                
            
if __name__ == '__main__':
    main()