2017-02-20 16 views
0

Dies ist mein erster Beitrag in stackoverflow.com. Ich bin Anfänger in Python und in der Programmierung im Allgemeinen. Ich lese überall, dass der beste Weg, um Programmierung zu lernen, ist mit dem Programmieren zu beginnen. Daher bin ich auf die folgende Tabelle gestoßen und möchte eine Funktion machen, damit ich die relative Bewegung in Bezug auf die x-Koordinate berechnen kann.Was ist der pythonische Weg, um diese mathematischen Formeln zu schreiben?

Relativbewegungstisch

enter image description here

unter der Annahme, dass {c_b, n, C, L} sind bekannt i der Tabelle codiert sind wie folgend:

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 

Ist das der pythonic Möglichkeit, meine Funktion zu strukturieren? Vielen Dank für Ihre Antwort

+0

'Wenn x = 0:' wird nicht funktionieren, müssen Sie auf Gleichheit mit '==' testen. – roganjosh

+1

Sie können 'x> 0 und x <0.3 * L 'durch' 0 Elmex80s

+0

Kann x kleiner als 0 sein? Welche Variablen werden Sie später verwenden? –

Antwort

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) 
0

Es geht nicht nur um "Pythonic" Weg, um diese Funktion zu schreiben, aber ein Problem in Bezug auf die Programmierpraxis. Aus meiner Sicht würde ich Ihnen empfehlen, jeden Schritt in eine richtig benannte Routine zu zerlegen und jeden Wert entsprechend seiner Bedeutung anstelle einer einzelnen Buchstabenvariablen zu benennen.

+0

Chazeon können Sie bitte ein Beispiel geben, damit ich es besser verstehen kann? –

Verwandte Themen