2016-06-11 11 views
1

Ich bin neu im Programmieren, daher könnte diese Frage dumm sein.Ausgabe einer Funktion als Variable speichern und in einer anderen Funktion verwenden

Ich muss den Wert Tr1 in die Bzero1 Funktion einführen. Wenn ich das Modul starte, erhalte ich das Ergebnis:

this result.

Das Programm läuft nicht die Bzero1 Funktion und ich bin mir nicht sicher warum. Liegt es daran, dass ich den Tr1 Wert nicht korrekt oder etwas anderes einführe? Ich möchte Bzero1 die Operation ausführen, mit Tr1 erhalten aus dem Ergebnis T/Tc1.

Ich würde Ihre Hilfe sehr schätzen.

T = float(input("Introduce system temperature in Kelvin: ")) 
print("System temperature is: ", T) 

Tc1 = float(input("Introduce critical temperature of component 1: ")) 
print("Critical temperature of component 1 is: ", Tc1) 

def Tr1(T, Tc1): 
    print("Relative temperature 1: ", T/Tc1) 

Tr1 = Tr1(T, Tc1) 

def Bzero1(Tr1): 
    print("Bzero 1: ", 0.083-(0.422/Tr1**1.6)) 
+0

Sie rufen niemals die 'Bzero1'-Funktion auf. –

+0

Sie ersetzen auch den Namen 'Tr1' (eine Funktion)' mit dem Rückgabewert dieser Funktion. Aber Ihre Funktion * gibt niemals etwas explizit * zurück, so dass Sie 'Tr1' auf' None' setzen. 'print()' schreibt auf Ihre Konsole oder Ihr Terminal, es gibt nichts zurück, was Sie einer Variablen zuweisen können. –

+1

Bitte verlinken Sie nicht auf Screenshots von wichtigen Informationen. Fügen Sie die Informationen als Text in Ihre Frage ein. – khelwood

Antwort

0
  1. Ersetzen Sie nicht Tr1 Funktionswert, solche Ersatzänderung zu vermeiden:

    Tr1_value = Tr1(T, Tc1) 
    
  2. Anruf Bzero1 Funktion mit Code:

    Bzero1(Tr1_value) 
    
  3. Ändern Tr1 Wert zurückgeben :

    def Tr1(T, Tc1): 
        result = T/Tc1 
        print("Relative temperature 1: ", result) 
        return result 
    

Auch lassen Sie mich Ihnen vorschlagen, einen Blick auf python official tutorial aufzunehmen - da man viel über Python lernen können ...

Good Luck!

+0

Momentan gibt die 'Tr1'-Funktion des OP nichts zurück, also wird Ihr' Tr1_value' immer 'None' sein, was wahrscheinlich nicht das ist, was das OP will. – Keiwan

+0

@Keiwan danke für das zeigen, wirklich vermisst es. –

+0

Vielen Dank. Ich schaue mir dieses Tutorial an, da ich gerade erst anfange. – Rodolfo

0

def definiert nur eine Funktion und ruft sie nicht auf. Z.B.

def foo(a): 
    print a * 2 

bedeutet, dass es nun eine Funktion, die fooa Argument annimmt. Die a in foo(a) ist der Name der Variablen innerhalb der Funktion.

Also in Ihrem Fall

def Bzero1(Tr1): 
    print("Bzero 1: ", 0.083-(0.422/Tr1**1.6)) 

definiert die Funktion Bzero1 als Argument nehmen Tr1, sie aber nicht nennen. Sie müssen die Funktion aufrufen, so wie du Tr1 genannt:

Bzero1(Tr1) 

Sie können sehen, dass auf diese Weise auf dem recht schnell verwirrend wird eine Variable außerhalb der Funktion, und welche Variablen innerhalb von Funktionen. Daher ist es besser, verschiedene Namen für Variablen in Ihrem äußeren Programm vs. zu verwenden. diese inneren Funktionen.

Hier sind noch ein paar Best Practices, die Ihnen nützlich sein könnten:

  • Im Allgemeinen ist es besser, zuerst alle Funktionen zu definieren und dann den Haupt-Code des Programms auszuführen, als Definitionen Vermischungsfunktion gegenüber und die Haupt Programm.

  • Eine weitere bewährte Methode besteht darin, Funktionen so zu konfigurieren, dass nur die Ausgabe von Eingaben berechnet und die Ausgabe anderswo verarbeitet wird. Auf diese Weise können Sie Ihre Funktionen in anderen Teilen Ihres Programms wiederverwenden und behalten gleichzeitig die Kontrolle darüber, wann und was Sie dem Benutzer ausgeben.

  • Schließlich sollten Sie Namen, z. Tr1 = Tr1(...) bedeutet, dass Tr1 jetzt nicht mehr der Name der Funktion ist, sondern der Name des von Tr1 zurückgegebenen Ergebnisses. Kurz gesagt, verwenden Sie verschiedene Namen für verschiedene Dinge.

diese Tipps anwenden, könnte Ihr Code wie folgt aussehen:

# function definitions first 
def Tr1(vt, vtc1): 
    return vt/vtc1 

def Bzero1(vtr1): 
    return 0.083-(0.422/vtr1 ** 1.6) 

# get user input 
T = float(input("Introduce system temperature in Kelvin: ")) 
print("System temperature is: ", T) 

vTc1 = float(input("Introduce critical temperature of component 1: ")) 
print("Critical temperature of component 1 is: ", vTc1) 

# run calculations 
vTr1 = Tr1(T, vTc1) 
vBz1 = Bzero1(vTr1) 

# print output 
print("Relative temperature 1: ", vTr1) 
print("Bzero 1: ", vBz1) 

Hinweis

Da ich die semantische Bedeutung Ihrer Variablen weiß nicht, ich Minuskel nur verwendet haben v als Präfix - im Allgemeinen ist es besser, aussagekräftige Namen wie temperature oder temp1 und temp2 etc. zu verwenden. Programme sind keine Mathe-Papiere.

+1

Die 'Tr1'-Funktion muss einen Wert zurückgeben, andernfalls 'vTr1' wird immer' None' sein. – Keiwan

Verwandte Themen