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!
Személyes eszközök