Програмиране с Python » Форуми » Общи въпроси

Пета задача

(29 posts)

  1. Краен срок: 14 април 2008г., 19:00 часа.

    Съжалявам. Всички имате по 0 точки, изпуснали сте крайния срок (rofl)

    Posted 5 years ago #
  2. Мда, много тъжно за всички вас. :)

    Posted 5 years ago #
  3. rational (-5, 3).partition == (-2, rational (1, 3)) # според условието
    rational (-5, 3).partition == (-1, rational (2, 3)) # според common sense

    Знам, че е ясно дефинирано просто питам дали 2рото няма да е по-удачно.

    Същото важи и за конвертирането до цели типове - вижте следното интересно нещо:
    int (rational (-5, 3)) == -2 # по условие
    float (rational (-5, 3)) == -1.6666 # тука всичко ок
    int (float (rational (-5, 3)) == -1 # опааа

    Няма ли да е по-добре и тук да се закръгля 'към нулата'

    Може ли да дадете малко повече информация за това __coerce__ (или поне линк към такава), защото намирам само бегло описание, което не казва точно при какви условия се вика функцията. Аз я написах да уеднаквява с int и long и не се вика при rational (2, 1) == 2.

    Става ли да качите и последните лекции?

    Posted 5 years ago #
  4. Posted 5 years ago #
  5. Добре тогава значи аз не правя нещо както трябва:

    def __coerce__ (self, other):
    		print "in coerce"
    		if isinstance (other, (int, long)):
    			return (self, rational (other))
    		else:
    			return None
    def __eq__ (lhs, rhs):
    		return lhs.num () == rhs.num () and lhs.den () == rhs.den ()

    това не работи нито със __eq__ нито със __cmp__

    rational (2, 1) == 2

    Примерите и самата лекция за метакласове ще ги качите ли?

    Posted 5 years ago #
  6. Добре в крайна сметка задължително ли е да ползваме това __coerce__.

    Posted 5 years ago #
  7. Posted 5 years ago #
  8. Примера ти работи, обаче за rational гърми:

    >>> rational.rational (2) == 2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "rational.py", line 61, in __cmp__
        return lhs.num () * rhs.den () - lhs.den () * rhs.num ()
    AttributeError: 'int' object has no attribute 'den'
    def __cmp__ (lhs, rhs):
    		return lhs.num () * rhs.den () - lhs.den () * rhs.num ()
    
    def __coerce__ (self, other):
    	print "in coerce"
    	if isinstance (other, (int, long)):
    		return (self, self.__class__(other))
    	else:
    		return None

    виж какво става с varnames - пробвах го и преди:

    def foo (a, b, chernev = False):
        xxx = 'pederastiq'
        return xxx
    
    print foo.func_code.co_varnames
    ('a', 'b', 'chernev', 'xxx')
    Posted 5 years ago #
  9. Ее, човек, за какво са ти тези аргументи на функцията :) Пробвай така:

    def foo(a) x = 5
    foo.func_code.co_varnames[:foo.func_code.co_argcount]

     
    За __coerce__ — при мен щом не гърми, значи проблемът е в твоя телевизор.

    П.п. Човече, на теб ако ти кажем някоя нова функция вече... Бива ли да направи

    Posted 5 years ago #
  10. добре за функцията печели

    Posted 5 years ago #
  11. Chrono
    Member

    rational(0,-5)

    Какво правим в този случай?
    Аз пи

    Posted 5 years ago #
  12. Chrono
    Member

    Може ли малко подсказка как се прави това:

    b = rational(1,3)

    c = 1 + b

    Програмата ми може да прави:
    c = b + 1
    c = b + 1 + b + a + d + 3 + b

    но когато първата част е int, ми дава:
    TypeError: unsupported operand type(s) for +: 'int' and 'instance'

    Работи ми за ~b==3 и 3==~b, което означава, че нямам гре

    Posted 5 years ago #
  13. Ми

    Posted 5 years ago #
  14. Chrono, както вече бе

    Posted 5 years ago #
  15. __coerce__ пи

    Posted 5 years ago #
  16. Pitboss
    Member

    Т`ва __coerce__ на мен ли ми се струва или баца само с класове стар стил ?

    Posted 5 years ago #
  17. ENIGMA
    Member

    В класа rational съм си дефинирала функция gcd и искам да я използвам при дефиницията на компилатора, но ми излиза гре

    Posted 5 years ago #
  18. Как си я дефинирал тази gcd? За момента може да я дефинира

    Posted 5 years ago #
  19. ENIGMA
    Member

    Да речем, че r е инстанция на класа rational. Тогава как да извикваме методите:

    r.num() /както е в теста/ или r.num

    lcd(other) /както е описано в задачата/ или r.lcd(other) ?

    Posted 5 years ago #
  20. ENIGMA, какво ще прави lcd(other) (наместо r.lcd(other))?
    r.num() е метод, r.num не е.

    Posted 5 years ago #
  21. SlayerX
    Member

    r(-1,3).partition() = ?
    Според правилата трябва да е:
    (0, rational(1,3))
    обаче това е r(1,3).partition().

    Posted 5 years ago #
  22. SlayerX, според правилата, трябва 0 + rational(1, 3) да бъде равно на rational(-1, 3), което не е вярно. Отново според правилата, ако x е цялата част, а у е дробната, то x + y = r, където r е изходното рационално число, x е цяло, а y е по-малко от 1. Тоест, според правилата, rational(-1, 3).partition() трябва да върне (0, rational(-1, 3)). Направих едно пояснение в условието.

    Posted 5 years ago #
  23. Pitboss
    Member

    Добре аз по въпросът с __coerce__, така и не разбрах... То не работи ли само със стар стил класове и въобще за какво ни е то като в __cmp__ можем да си го направим ?

    Posted 5 years ago #
  24. __coerce__:

    Забравете всичко казано за __coerce__. Моя гре

    Posted 5 years ago #
  25. roadstar
    Member

    Май има гре

    Posted 5 years ago #
  26. Всъщност идеята на partiton()-а бе

    Posted 5 years ago #
  27. Posted 5 years ago #
  28. iavoriankov
    Member

    хм тоя partition си бе

    Posted 5 years ago #
  29. Забравете за partition()-на на отрицателни рационални числа.

    Posted 5 years ago #

RSS feed for this topic

Reply

You must log in to post.