<p>科尔布鲁克方程有多种近似方法<a href="https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae" rel="nofollow noreferrer">See here</a>你指的是哪一个?这有助于更具体地了解您想要做什么</p>
<p>除此之外,这里还有一个简单的问题</p>
<pre><code>1/math.sqrt(friction)=-2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))
</code></pre>
<p>在Python(以及我使用过的大多数语言)中,不能用这种方式编写方程。计算机不会帮你解代数。如果你求解得到<code>f=SomeEquation()</code>,只有这样计算机才能真正为你计算</p>
<p>在第二个示例中,也存在一些问题</p>
<pre><code>import math
def friction(Re, eD):
eD= 0.0009
Re= 2300
f = -2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))
return 1/math.sqrt(f)
</code></pre>
<p>您已经定义了一个接受<code>Re</code>和<code>eD</code>的函数,但随后立即在该函数中重新定义它们。如果您选择不传入这些变量,有一种方法可以为它们设置默认值,但我不认为这就是您在这里要做的。此外,(为了简洁起见,您可能已经省略了这一部分)您实际上从未调用过函数,这意味着您的脚本实际上从未做过任何事情</p>
<p>你需要这样的东西(我不会在这里检查你的等式,因为我不知道你要的是哪一个):</p>
<pre><code>import math
# Function definition
def friction(Re, eD):
f = -2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))
return 1/math.sqrt(f)
# Call your function with your desired values (arguments) and store the result in f
f = friction(2300, 0.0009)
</code></pre>
<p>希望这有帮助</p>