Добавление вывода из функции в константу в другой функции в Python - PullRequest
0 голосов
/ 29 марта 2012

Это кажется довольно простым, но я не могу понять, как правильно ....

У меня есть две функции, которые я определяю в 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'

Мне дали 'намекните, что поскольку rt - это функция, а 0.052 - числовой питон, он не знает, как его сложить, но я нигде не могу найти, как это исправить - это должно быть возможно, конечно!

Ответы [ 3 ]

3 голосов
/ 29 марта 2012

Вам придется переопределить функцию 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 голосов
/ 29 марта 2012

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

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

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

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

0 голосов
/ 29 марта 2012

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

...