NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: class Polynomial

Aktivity
Avatar
harry
Člen
Avatar
harry:9.4.2016 19:58

Ahoj, mám za úkol vytvořit v Pythonu třídu polynom. S Pythonem začínám a nemůžu přijít na to, jak z vytvářených instancí dostat koeficinty.
Instance třídy bude možné vytvářet několika různými způsoby:
pol1 = Polynomial([1,-3,0,2])
pol2 = Polynomial(1,-3,0,2)
pol3 = Polynomial(x0=1,x3=2­,x1=-3)

pol1 ještě dokážu zpracovat, ale můžete mi prosím poradit, jak z pol2 a pol3 dostat samotné koeficinty do seznamu?
Děkuji

 
Odpovědět
9.4.2016 19:58
Avatar
Odpovídá na harry
Ondřej Krsička:9.4.2016 21:48

Myslím, že mít všechny tři zároveň nepůjde. http://stackoverflow.com/…rs-in-python

 
Nahoru Odpovědět
9.4.2016 21:48
Avatar
hanpari
Člen
Avatar
Odpovídá na harry
hanpari:24.4.2016 21:02

Pokud musíš takovou zrůdnost dělat, tak budiž. Tady máš rychlý nástřel.
A učitelovi vyřiď, že by za takové zadání zasloužil nafackovat :)

class Polynomial:
    def __init__(self, *args, **kwargs):
        if args and kwargs:
            raise NotImplementedError("Tohle neumíme")
        elif len(args) == 1:
            self.__dict__ = {"x%s"%i:j for i,j in enumerate(args[0])}
        elif len(args) > 1:
            self.__dict__ = {"x%s"%i:j for i,j in enumerate(args)}
        elif kwargs:
            self.__dict__ = kwargs
        else:
            raise NotImplementedError("A tohle už vůbec ne!")

    def __repr__(self):
        return str(self.__dict__)



pol1 = Polynomial([1,-3,0,2])
pol2 = Polynomial(1,-3,0,2)
pol3 = Polynomial(x0=1,x3=2,x1=-3)

for pol in pol1, pol2, pol3:
    print(pol)
Editováno 24.4.2016 21:02
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
24.4.2016 21:02
Avatar
hanpari
Člen
Avatar
Odpovídá na Ondřej Krsička
hanpari:24.4.2016 21:40

Když se budeš hodně snažit, půjde to, ale to ještě neznamená, že je to dobrý nápad. Inteligentně ošetřit všechny vstupy je pak práce pro vraha, můžeš si zkusit:

Polynomial(1)

Skončíš s výjimkou jen proto, že jsem zapomněl ošetřit případ, kdy je argument jen jeden a není to list.

Pro takové věci se hodí například:

https://pypi.python.org/…ipledispatch

Ale tak nějak pochybuji, že ten učitel chtěl zrovna toto.

 
Nahoru Odpovědět
24.4.2016 21:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.