Informatika2-2021/Sz¼tGyak07
A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „=Osztály= == Komplex == A feladat az előadáson elkezdett Komplex osztályt befejezni: <python> class Komplex(object): def __init__(self, real, imaginary): …”) |
(→Osztály) |
||
51. sor: | 51. sor: | ||
print k1.norm() | print k1.norm() | ||
</python> | </python> | ||
+ | |||
+ | = Iterálhatók = | ||
+ | |||
+ | Íjunk olyan iterálható osztályt, mint a '''range''', de ne egy listát járjon be, hanem csak az aktuális elemet tárolja. | ||
+ | <python> | ||
+ | class Range: | ||
+ | def __init__( ... ): | ||
+ | ... | ||
+ | def __iter__( ... ): | ||
+ | ... | ||
+ | def __next__( ... ): | ||
+ | … | ||
+ | </python> | ||
+ | * konstruktora egy számot vagy sztringet kapjon. Addig a számig lehessen iterálni rajta, nullától, egyesével. | ||
+ | * Ha a szám nem pozitív, akkor 0 hosszan lehessen iterálni rajta. | ||
+ | * Ha sztringet kap a konstruktor és az nem értelmezhető egészként, akkor emeljünk '''ValueError''' kivételt. | ||
+ | ** Ha értelmezhető egészként, akkor alakítsuk át egésszé és számoljunk azzal. | ||
+ | * Ha '''"inf"''' sztringet kap a konstruktor, akkor végtelen sokáig lehessen rajta iterálni! |
A lap 2021. március 22., 16:39-kori változata
Osztály
Komplex
A feladat az előadáson elkezdett Komplex osztályt befejezni:
class Komplex(object): def __init__(self, real, imaginary): self.re = real self.im = imaginary def __add__(self, k2): uj_re = self.re + k2.re uj_im = self.im + k2.im return Komplex(uj_re, uj_im) def __str__(self): s = "" s += str(self.re) s += " + " s += str(self.im) s += "i" return s k1 = Komplex(4, 3) k2 = Komplex(-2, 1) k3 = k1 + k2 print(k3)
- Az előző órán megvalósítottuk a kivonásés szorzás műveleteket, most írjuk meg osztás műveletet is. (__truediv__) Az osztás előtt érdemes lehet a következő részt megoldani először.
- Valósítsuk meg a norm metódust, mely a komplex szám hosszát adja meg.
- Javítsuk ki a __str__ metódust, hogy szépen írja ki a számokat, pl:
2 - 4i 5i 2
Teszteléshez használhatjuk pl ezt a kódot, de írjunk saját teszteket is!
k1 = Komplex(4, 3) k2 = Komplex(-2, 1) k3 = Komplex(4, 1) print k1 + k2 print k1 - k3 print k2 * k1 print k3 / k1 print k1.norm()
Iterálhatók
Íjunk olyan iterálható osztályt, mint a range, de ne egy listát járjon be, hanem csak az aktuális elemet tárolja.
class Range: def __init__( ... ): ... def __iter__( ... ): ... def __next__( ... ): …
- konstruktora egy számot vagy sztringet kapjon. Addig a számig lehessen iterálni rajta, nullától, egyesével.
- Ha a szám nem pozitív, akkor 0 hosszan lehessen iterálni rajta.
- Ha sztringet kap a konstruktor és az nem értelmezhető egészként, akkor emeljünk ValueError kivételt.
- Ha értelmezhető egészként, akkor alakítsuk át egésszé és számoljunk azzal.
- Ha "inf" sztringet kap a konstruktor, akkor végtelen sokáig lehessen rajta iterálni!