Форум сайта python.su
def f(t,tc,bmag):
if (tc<0 and bmag<0):
Tcnew = -tc/3
Bmagnew = -bmag/3
if (t/Tcnew<=1):
return 1-(79/140/0.4/(t/tc) + 474/497*(1/0.4-1)*((t/tc)**3/6 + (t/tc)**9/135+(t/tc)**15/600))/A
elif (t/Tcnew<1):
return (-1/10/(t/tc)**5 - 1/315/(t/tc)**15 - 1/1500/(t/tc)**25)/A
elif (t/tc>0 and t/tc<=1):
return 1-(79/140/0.4/(t/tc) + 474/497*(1/0.4-1)*((t/tc)**3/6 + (t/tc)**9/135+(t/tc)**15/600))/A
elif (t/tc>1):
return (-1/10/(t/tc)**5 - 1/315/(t/tc)**15 - 1/1500/(t/tc)**25)/A
Офлайн
А вопрос то собственно в чем? И что вообще делает ваш код?
Офлайн
Ошибку выдает, а я новичек
Traceback (most recent call last):
File "check.py", line 166, in ?
Gmag = R*T*f(T,TCref,BMAGref)
TypeError: unsupported operand type(s) for *: 'float' and 'NoneType'
Офлайн
я тоже не силен но пока знающих нету то попробую помочь..попробуй насильно привести данные к типу..проблема не в представленном коде а в строке 166..очевидно какаято из переменных R или T не определена, но по твоему мнению должна была определится..
попробуй выполить подкорректировав так :
R=5
T=3
Gmag = R*T*f(T,TCref,BMAGref)
Офлайн
Опишите задачу словами. То что вы привели под именем “код” это страшный полуночный кошмар. В печку его. Опишите словами и мы покажем как реализовать.
Офлайн
Дело в функции, которая возвратила None, то есть ничего не возвратила. То не было соблюдено ни одно условие.
Офлайн
def f(t,tc,bmag):
if (tc<0 and bmag<0):
Tcnew = -tc/3
Bmagnew = -bmag/3
if (t/Tcnew<=1):
return 1-(79/140/0.4/(t/tc) + 474/497*(1/0.4-1)*((t/tc)**3/6 + (t/tc)**9/135+(t/tc)**15/600))/A
Офлайн
Это не строчка, это целые 6 строк кода. Я назвал проблему, функция возвращает None, это значит что условия, заданные в if не соблюдаются. Копайтесь самостоятельно. Здесь никто не сможет понять, что именно должен делать ваш код. Выведите значения переменных через print, и посмотрите что не то
Офлайн
Проблема скорее в условиях:
if (t/Tcnew<=1):
...
elif (t/Tcnew<1):
Офлайн