Краен срок: 14 април 2008г., 19:00 часа.
Съжалявам. Всички имате по 0 точки, изпуснали сте крайния срок (rofl)
Краен срок: 14 април 2008г., 19:00 часа.
Съжалявам. Всички имате по 0 точки, изпуснали сте крайния срок (rofl)
Мда, много тъжно за всички вас. :)
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
.
Става ли да качите и последните лекции?
Добре тогава значи аз не правя нещо както трябва:
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
Примерите и самата лекция за метакласове ще ги качите ли?
Добре в крайна сметка задължително ли е да ползваме това __coerce__
.
Примера ти работи, обаче за 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')
Ее, човек, за какво са ти тези аргументи на функцията :) Пробвай така:
def foo(a) x = 5
foo.func_code.co_varnames[:foo.func_code.co_argcount]
За __coerce__
— при мен щом не гърми, значи проблемът е в твоя телевизор.
П.п. Човече, на теб ако ти кажем някоя нова функция вече... Бива ли да направи
добре за функцията печели
rational(0,-5)
Какво правим в този случай?
Аз пи
Може ли малко подсказка как се прави това:
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, което означава, че нямам гре
Ми
Chrono, както вече бе
__coerce__ пи
Т`ва __coerce__ на мен ли ми се струва или баца само с класове стар стил ?
В класа rational съм си дефинирала функция gcd и искам да я използвам при дефиницията на компилатора, но ми излиза гре
Как си я дефинирал тази gcd? За момента може да я дефинира
Да речем, че r е инстанция на класа rational. Тогава как да извикваме методите:
r.num() /както е в теста/ или r.num
lcd(other) /както е описано в задачата/ или r.lcd(other) ?
ENIGMA, какво ще прави lcd(other)
(наместо r.lcd(other)
)?
r.num()
е метод, r.num
не е.
r(-1,3).partition() = ?
Според правилата трябва да е:
(0, rational(1,3))
обаче това е r(1,3).partition().
SlayerX, според правилата, трябва 0 + rational(1, 3)
да бъде равно на rational(-1, 3)
, което не е вярно. Отново според правилата, ако x
е цялата част, а у
е дробната, то x + y = r
, където r
е изходното рационално число, x
е цяло, а y
е по-малко от 1. Тоест, според правилата, rational(-1, 3).partition()
трябва да върне (0, rational(-1, 3))
. Направих едно пояснение в условието.
Добре аз по въпросът с __coerce__, така и не разбрах... То не работи ли само със стар стил класове и въобще за какво ни е то като в __cmp__ можем да си го направим ?
__coerce__:
Забравете всичко казано за __coerce__
. Моя гре
Май има гре
Всъщност идеята на partiton()
-а бе
хм тоя partition си бе
Забравете за partition()
-на на отрицателни рационални числа.
You must log in to post.