2016-05-10 3 views
-2

Im пытается сделать программу, которая может рассчитать плотность, скорость терминала и вязкость. Я разделил их так, чтобы пользователям было легче понять.Как вызвать функцию из другой функции

Поток выглядит следующим образом: Это довольно просто, но когда функция плотности() вызывается, ее предназначено для вычисления denCould кому-то помочь? Код ниже, и это также ошибка.

import sys 

Защиту terminalvelandviscocalc (мс, DS, год): импорта математике, как м masssteel = мс diametersteel = DS projectarea = ра termvelo = m.sqrt ((2 * masssteel * 9,81)/(Плотность * Проектная площадь * 0,5)) visco = ((масса стальной * 9.8) - ((4.0/3.0) * ((диаметр стальной/2) ** 3) * 9,8 * плотность))/(6 * m.pi * (диаметр стальная/2) * termvelo) печати 'терминал скорость:% .2f' % termvelo печати 'вязкость:% .2f' % вязко возвращение termvelo возвращение вязко и ошибка:

termvelo=m.sqrt((2*masssteel*9.81)/(density*projectarea*0.5)) 
TypeError: unsupported operand type(s) for *: 'function' and 'float' 
+2

You не _calling_ 'плотность' ... – Selcuk

ответ

2

density является функцией, но в строке termvelo=m.sqrt((2*masssteel*9.81)/(density*projectarea*0.5)) вы используете его в качестве переменной.

Вы должны назвать его () и обеспечивают 3-х аргументов, что он ожидает, что (я назвал их arg1, arg2, arg3 Вы должны использовать правильные имена переменных из кода.):

termvelo=m.sqrt((2*masssteel*9.81)/(density(arg1, arg2, arg3)*projectarea*0.5))