Найти - Пользователи
Полная версия: Помогите пожалуйста корректно записать:
Начало » Python для новичков » Помогите пожалуйста корректно записать:
1
ciaonataha
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
igor.kaist
А вопрос то собственно в чем? И что вообще делает ваш код?
ciaonataha
Ошибку выдает, а я новичек
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'
goblin_maks
я тоже не силен но пока знающих нету то попробую помочь..попробуй насильно привести данные к типу..проблема не в представленном коде а в строке 166..очевидно какаято из переменных R или T не определена, но по твоему мнению должна была определится..
попробуй выполить подкорректировав так :
R=5
T=3
Gmag = R*T*f(T,TCref,BMAGref)
и увидишь что выйдет..главное это дебаг своего кода…а там разберешся…:)
PooH
Опишите задачу словами. То что вы привели под именем “код” это страшный полуночный кошмар. В печку его. Опишите словами и мы покажем как реализовать.
igor.kaist
Дело в функции, которая возвратила None, то есть ничего не возвратила. То не было соблюдено ни одно условие.
ciaonataha
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
проблемма в этой строчке
igor.kaist
Это не строчка, это целые 6 строк кода. Я назвал проблему, функция возвращает None, это значит что условия, заданные в if не соблюдаются. Копайтесь самостоятельно. Здесь никто не сможет понять, что именно должен делать ваш код. Выведите значения переменных через print, и посмотрите что не то
Viper
Проблема скорее в условиях:
      if (t/Tcnew<=1):
...
elif (t/Tcnew<1):
думаю в elif должно быть условие (t/Tcnew>1).

P.S. а вообще в таких случаях лучше использовать else.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB