Avatar
harry
Člen
Avatar
harry:

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. dubna 19:58
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na harry
Ondřej Krsička:

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

 
Nahoru Odpovědět 9. dubna 21:48
Avatar
hanpari
Redaktor
Avatar
Odpovídá na harry
hanpari:

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. dubna 21:02
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 24. dubna 21:02
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Ondřej Krsička
hanpari:

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. dubna 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.