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 foo
a
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.
Sie rufen niemals die 'Bzero1'-Funktion auf. –
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. –
Bitte verlinken Sie nicht auf Screenshots von wichtigen Informationen. Fügen Sie die Informationen als Text in Ihre Frage ein. – khelwood