Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2009 19:37:15

ciaonataha
От:
Зарегистрирован: 2009-03-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

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



Офлайн

#2 Май 18, 2009 20:11:31

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

А вопрос то собственно в чем? И что вообще делает ваш код?



Офлайн

#3 Май 18, 2009 20:48:50

ciaonataha
От:
Зарегистрирован: 2009-03-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

Ошибку выдает, а я новичек

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'



Офлайн

#4 Май 18, 2009 23:00:01

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

я тоже не силен но пока знающих нету то попробую помочь..попробуй насильно привести данные к типу..проблема не в представленном коде а в строке 166..очевидно какаято из переменных R или T не определена, но по твоему мнению должна была определится..
попробуй выполить подкорректировав так :

R=5
T=3
Gmag = R*T*f(T,TCref,BMAGref)
и увидишь что выйдет..главное это дебаг своего кода…а там разберешся…:)



Офлайн

#5 Май 19, 2009 05:44:44

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

Опишите задачу словами. То что вы привели под именем “код” это страшный полуночный кошмар. В печку его. Опишите словами и мы покажем как реализовать.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Май 19, 2009 08:52:42

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

Дело в функции, которая возвратила None, то есть ничего не возвратила. То не было соблюдено ни одно условие.



Офлайн

#7 Май 19, 2009 10:43:55

ciaonataha
От:
Зарегистрирован: 2009-03-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

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
проблемма в этой строчке



Офлайн

#8 Май 20, 2009 09:38:39

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

Это не строчка, это целые 6 строк кода. Я назвал проблему, функция возвращает None, это значит что условия, заданные в if не соблюдаются. Копайтесь самостоятельно. Здесь никто не сможет понять, что именно должен делать ваш код. Выведите значения переменных через print, и посмотрите что не то



Офлайн

#9 Май 20, 2009 11:37:38

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста корректно записать:

Проблема скорее в условиях:

      if (t/Tcnew<=1):
...
elif (t/Tcnew<1):
думаю в elif должно быть условие (t/Tcnew>1).

P.S. а вообще в таких случаях лучше использовать else.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version