2012-03-29 3 views
-1

Это кажется довольно простой, но я не могу показаться, чтобы получить это право ....Добавление выхода из функции к константе внутри другой функции в Python

У меня есть две функции, которые я определяю в питона , оба из которых являются численными расчетами. Первое прямое и дает мне результат фигуры. Вторая основана на том, что когда-либо выводится от первого плюс константа.

def rt(a, b, t): 
    #formula to calculate growth rate for brown fish 
    #a & b are constants given, t = the month number 
    rt = a + (b*sin(((2*pi)*t)/12)) 
    return rt 

def st(brown): 
    #formula to calculate growth rate for gold fish 
    #rt = output from the growth rates for brown fish 
    st = rt + 0.052 
    return st 

Когда я запускаю его я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "/Users/joanneedes/Documents/Uni Stuff/SCIE1000/Big Project/Big Project Q5a.py", line 41, in <module> 
    print st(rt) 
    File "/Users/joanneedes/Documents/Uni Stuff/SCIE1000/Big Project/Big Project Q5a.py", line 13, in st 
    st = rt + 0.052 
TypeError: unsupported operand type(s) for +: 'function' and 'float' 

я получил дал «намек», что, поскольку к.т. является функцией и 0,052 ряд питон не знает, как добавить это, но я не могу найти нигде, как это понять - это должно быть возможно, конечно!

+0

Этот вопрос кажется очень фундаментальным для любого языка программирования. Вы могли бы получить его из любой книги или из случайного поиска в stackoverflow. – Surya

ответ

3

Вы должны переопределить функцию st, потому что rt является функцией, а не его результат:

def st(brown): 
    #formula to calculate growth rate for gold fish 
    #rt = output from the growth rates for brown fish 
    st = rt(a, b, t) + 0.052 
    return st 

Здесь вы называете rt(a,b,t) и использовать этот результат в сумме с 0,052.

Теперь ваша очередь получить a, b, t из brown.

+0

Большое спасибо - очень полезно - я должен был сделать это несколько часов назад! – newtopython

0

Необходимо указать rt с некоторыми параметрами, чтобы он возвращал число.

0

rt - это функция, вы не можете «добавить ее» в поплавок (это означает ошибка).

Вы должны назвать его - rt(), а затем использовать результат в вашем расчета:

def st(brown): 
a = 1 
b = 2 
t = 3 
st = rt(a,b,t) + 0.052 
return st 

Конечно, вы должны вызвать rt() с правильными аргументами.

Смежные вопросы