簡體   English   中英

編寫此數學公式的Python方法是什么?

[英]What is the pythonic way to write this mathematical formulas?

這是我在stackoverflow.com上的第一篇文章。 我是python和一般編程的初學者。 我到處都讀到,學習編程的最好方法是開始編程。 因此,我遇到了下表,我想做一個函數,以便我可以計算相對於x坐標的相對運動。

相對運動表

在此處輸入圖片說明

假設已知{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方法嗎? 謝謝您的回復

這不僅與編寫此函數的“ Pythonic”方式有關,還與編程實踐有關。 從我的角度來看,我建議您將每個步驟都分解為一個正確命名的例程,並根據其含義而不是單個字母變量來命名每個值。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM