Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #skonczone
- from abc import ABC, abstractmethod
- class Kształt(ABC):
- def __init__(self, nazwa):
- self._nazwa = nazwa
- @property
- def nazwa(self):
- return self._nazwa
- @abstractmethod
- def pole(self):
- pass
- class Koło(Kształt):
- def __init__(self, nazwa, promien):
- super().__init__(nazwa)
- self._promien = promien
- def pole(self):
- return 3.14 * self._promien ** 2
- class Trójkąt(Kształt):
- def __init__(self, nazwa, bok_a, bok_b, bok_c):
- super().__init__(nazwa)
- self._bok_a = bok_a
- self._bok_b = bok_b
- self._bok_c = bok_c
- def pole(self):
- p = (self._bok_a + self._bok_b + self._bok_c) / 2
- return (p * (p - self._bok_a) * (p - self._bok_b) * (p - self._bok_c)) ** 0.5
- class Prostokąt(Kształt):
- def __init__(self, nazwa, bok_a, bok_b):
- super().__init__(nazwa)
- self._bok_a = bok_a
- self._bok_b = bok_b
- def pole(self):
- return self._bok_a * self._bok_b
- class Kwadrat(Prostokąt):
- def __init__(self, nazwa, bok):
- super().__init__(nazwa, bok, bok)
- class TrójkątRównoboczny(Trójkąt):
- def __init__(self, nazwa, bok):
- super().__init__(nazwa, bok, bok, bok)
- class Mixin():
- def pole(self):
- return sum([i.pole() for i in self.ściany])
- class Czworościan(Mixin, Kształt):
- def __init__(self, nazwa, bok):
- Kształt.__init__(self, nazwa)
- ściana1 = TrójkątRównoboczny('ściana1', bok)
- ściana2 = TrójkątRównoboczny('ściana2', bok)
- ściana3 = TrójkątRównoboczny('ściana3', bok)
- ściana4 = TrójkątRównoboczny('ściana4', bok)
- self.ściany = [ściana1, ściana2, ściana3, ściana4]
- class Sześcian(Mixin, Kształt):
- def __init__(self, nazwa, bok):
- Kształt.__init__(self, nazwa)
- ściana1 = Kwadrat('ściana1', bok)
- ściana2 = Kwadrat('ściana2', bok)
- ściana3 = Kwadrat('ściana3', bok)
- ściana4 = Kwadrat('ściana4', bok)
- ściana5 = Kwadrat('ściana5', bok)
- ściana6 = Kwadrat('ściana6', bok)
- self.ściany = [ściana1, ściana2, ściana3, ściana4, ściana5, ściana6]
- class Piramida(Mixin, Kształt):
- def __init__(self, nazwa, bok):
- Kształt.__init__(self, nazwa)
- ściana1 = Kwadrat('ściana1', bok)
- ściana2 = TrójkątRównoboczny('ściana2', bok)
- ściana3 = TrójkątRównoboczny('ściana3', bok)
- ściana4 = TrójkątRównoboczny('ściana4', bok)
- ściana5 = TrójkątRównoboczny('ściana5', bok)
- self.ściany = [ściana1, ściana2, ściana3, ściana4, ściana5]
- def main():
- figury = [
- Koło('Koło', 5),
- Trójkąt('Trójkąt', 3, 4, 5),
- Prostokąt('Prostokąt', 2, 3),
- Kwadrat('Kwadrat', 4),
- TrójkątRównoboczny('Trójkąt równoboczny', 6)
- ]
- print("Figury:")
- for figura in figury:
- print(f'{figura.nazwa}: pole = {figura.pole()}')
- bryły = [
- Czworościan('Czworościan', 2),
- Sześcian('Sześcian', 3),
- Piramida('Piramida', 4)
- ]
- print("\nBryły:")
- for bryła in bryły:
- print(f'{bryła.nazwa}: pole = {bryła.pole()}')
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement