为什么这个Python代码给我错误的答案?

2024-09-26 18:12:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个简单的Python代码来求解某个水力公式(The Manning's equation):

import math

def mannings(units,A,P,S,n):
    if units=='SI':
        k=1.0
    elif units=='US':
        k=1.49
    R=A/P
    V=(k/n)*(math.pow(R,(2/3)))*(math.sqrt(S))
    Q=A*V
    return R,V,Q

在上面的代码中,速度V是根据knR和{}来计算的。然后用速度乘以面积A,计算出流量{}。用户输入单位约定,APS和{}。k是根据单位惯例决定的。在

当我使用mannings('US',1.0618,2.7916,0.02,0.015)运行函数时,我得到(0.38035535176959456, 14.047854719572745, 14.916012141242343)R值与电子表格中计算的R匹配,但V和{}相差甚远。实际的V应该是7.374638178 并且Q应该是7.830634155。在

如果有人能告诉我这里出了什么问题那就太好了。这是一个非常简单的公式,我想它应该很容易就能实现。在


Tags: the代码importifdef单位math速度
1条回答
网友
1楼 · 发布于 2024-09-26 18:12:39

您的问题是2/3是整数除法,因此计算结果为0。您希望2.0/3强制浮点除法。或者在文件的顶部包含from __future__ import division,以便在python2.x中使用python3样式的除法

假设您不使用__future__解决方案,那么您还需要将R = A / P写成例如R = float(A) / P,因为否则,如果A和{}都是整数,R也将是一个整数。在

相关问题 更多 >

    热门问题