Найти - Пользователи
Полная версия: Задача №3455. Гипотенуза
Начало » Python для новичков » Задача №3455. Гипотенуза
1
Amfibia
Дано два числа a и b. Выведите гипотенузу треугольника с заданными катетами.
JOHN_16
=) и в чем трудность? это настолько сложное задание что вы не можете справиться самостоятельно?
FishHook
JOHN_16, зачем троллите новичка?
Amfibia, если по простому, то так.

class Shape(object):
   sides_count = 0
   def __init__(self):
       if self.sides_count<3:
           raise Exception("In the figure should be at least three sides")
       self.initialized = False
       self.initialize_begined = False
       self.sides = list()
   def begin_initialize(self):
       self.initialize_begined = True
       
   def add_side(self,side):
       if not self.initialize_begined:
           raise Exception("The figure should be able to initialize")
       if side<0:
           raise Exception("WHAT?")
       self.sides.append(side)
   def end_initialize(self):
       if not self.initialize_begined:
           raise Exception("The figure should be able to initialize")
       if len(self.sides)>self.sides_count:
           raise Exception("Too much sides")
       if len(self.sides)<self.sides_count:
           raise Exception("Too little sides")
       self.initialize_begined=False
       self.initialized = True
def ShapeFabric(sides_count, name):
    return type(name,(Shape,),{"sides_count":sides_count})
BaseTriangle = ShapeFabric(3, "BaseTriangle")
class Triangle(BaseTriangle):
    
    def normalize(self):
       if len(filter(None,self.sides))==self.sides_count: return
       if len(filter(None,self.sides))<2:
           print "I want two katets"
           return
       katets = [x for x in self.sides if x>0]
       katets_square = map(lambda x: x**2, katets)
       katets_sum = sum(katets_square)
       hypotenuse = math.sqrt(katets_sum)
       self.sides = [katets[0], katets[1], hypotenuse]
triangle = Triangle()
triangle.begin_initialize()
triangle.add_side(3)
triangle.add_side(4)
triangle.add_side(0)
triangle.end_initialize()
triangle.normalize()
print triangle.sides
alexbadaloff
Если на python 3, то так:

import math
class Shape(object):
   sides_count = 0
   def __init__(self):
       if self.sides_count<3:
           raise Exception("In the figure should be at least three sides")
       self.initialized = False
       self.initialize_begined = False
       self.sides = list()
   def begin_initialize(self):
       self.initialize_begined = True
       
   def add_side(self,side):
       if not self.initialize_begined:
           raise Exception("The figure should be able to initialize")
       if side<0:
           raise Exception("WHAT?")
       self.sides.append(side)
   def end_initialize(self):
       if not self.initialize_begined:
           raise Exception("The figure should be able to initialize")
       if len(self.sides)>self.sides_count:
           raise Exception("Too much sides")
       if len(self.sides)<self.sides_count:
           raise Exception("Too little sides")
       self.initialize_begined=False
       self.initialized = True
def ShapeFabric(sides_count, name):
    return type(name,(Shape,),{"sides_count":sides_count})
BaseTriangle = ShapeFabric(3, "BaseTriangle")
class Triangle(BaseTriangle):
    
    def normalize(self):
       if len(list(filter(None,self.sides)))==self.sides_count: return
       if len(list(filter(None,self.sides)))<2:
           print("I want two katets")
           return
       katets = [x for x in self.sides if x>0]
       katets_square = map(lambda x: x**2, katets)
       katets_sum = sum(katets_square)
       hypotenuse = math.sqrt(katets_sum)
       self.sides = [katets[0], katets[1], hypotenuse]
triangle = Triangle()
triangle.begin_initialize()
triangle.add_side(3)
triangle.add_side(4)
triangle.add_side(0)
triangle.end_initialize()
triangle.normalize()
print(triangle.sides)

Я тоже считаю, новичкам надо помогать:
http://bit.ly/13t87cE
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB