写这个数学公式的pythonic方法是什么?

时间:2017-02-20 14:58:35

标签: python python-3.x math jupyter-notebook

这是我在stackoverflow.com上的第一篇文章。 我是python和编程的初学者。 我到处读到学习编程的最佳方法是开始编程。因此,我遇到了下表,我想创建一个函数,以便我可以计算相对于x坐标的相对运动。

相对动作表

enter image description here

假设已知{C_b,n,C,L}我将表格编码如下:

if x = 0:
    h1_M = 0.42*n*C*(C_b+0.7)

    if C_b < 0.875:
        h1 = 0.7*((4.35/sqrt(C_b))-3.25)*h1_M
    else:
        h1 = h1_M

elif x>0 and x<0.3*L:

    h1_M = 0.42*n*C*(C_b+0.7)
    h1_AE = 0.7*((4.35/sqrt(C_b))-3.25)*h1_M
    h1 = h1_AE - ((h1_AE-h1_M)/0.3)*(x/L)

elif x>=0.3*L and x<0.7*L:

    h1 = 0.42*n*C*(C_b+0.7)

elif x>0.7*L and x<L:
    h1_M = 0.42*n*C*(C_b+0.7)
    h1 = h1_M + ((h1_FE - h1_M)/0.3)*((x/L)-0.7)

elif x==L:
    h1_M = 0.42*n*C*(C_b+0.7)
    h1 = ((4.35/sqrt(C_b))-3.25)*h1_M

这是构建我的功能的pythonic方式吗? 谢谢你的回复

2 个答案:

答案 0 :(得分:0)

这不仅仅是关于编写这个函数的“Pythonic”方式,而是关于编程实践的一个问题。从我的角度来看,我建议你将每个步骤分解为一个正确命名的例程,并根据其含义而不是单个字母变量命名每个值。

答案 1 :(得分:0)

def your_funcion(C_b, n, C, L):
    h1_M = 0.42*n*C*(C_b+0.7)
    if x == 0:
        if C_b < 0.875:
            return 0.7*((4.35/sqrt(C_b))-3.25)*h1_M
        return h1_M
    if x < 0.3*L:
        h1_AE = 0.7*((4.35/sqrt(C_b))-3.25)*h1_M
        return h1_AE - ((h1_AE-h1_M)/0.3)*(x/L)
    if x < 0.7*L:
        return 0.42*n*C*(C_b+0.7)
    if x < L:
        return h1_M + ((h1_FE - h1_M)/0.3)*((x/L)-0.7)
    return ((4.35/sqrt(C_b))-3.25)*h1_M

h1 = your_function(C_b, n, C, L)