Probleme mit quader-funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cheers
User
Beiträge: 18
Registriert: Samstag 31. Juli 2021, 08:53
Wohnort: Deutschland

Moin,
ich bin am verzweifeln, seit 3h versuche ich eine Quader Formel in eine Funktion zu packen, aber irgendwas fehlt oder stimmt nicht, mittlerweile glaube ich, dass es etwas damit zutun hat, dass er das ergebnis im falschen datentyp ausgibt, aber ich hab so viel versucht, ich weiß schon garnicht mehr, was ich noch testen soll.
Grundsätzlich soll eine Quader Formel in eine Funktion gepackt werden und am Ende das Ergebnis ausgeben, ich arbeite mit Spyder und habe das aktuell stehen:

def quader_volumen(a,b,c):
global quader_volumen
quader_volumen = a[2]*b[4]*c[6]
return quader_volumen

quader_volumen
ergebnis = quader_volumen
print(ergebnis)


raus bekomme ich:

<function quader_volumen at 0x000001664633DCA8>

Was zur Hölle ist hier das problem :( ? ist bestimmt ne totale kleinigkeit aber ich find es einfach nicht und weiß auch nicht nach was ich debugging-technisch suchen soll...

Mercì und einen angenehmen Tag.
:arrow: Viele Grüße und allen eine gute Zeit! :)
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@cheers,

das Problem ist, dass du alles mit dem gleichen Namen "quader_volumen" benennst.

Das Ergebnis, der Funktionsname, alles hat den gleichen Namen, das kann gar nicht funktionieren.
Versuch mal das:

Code: Alles auswählen

def quader_volumen(a,b,c):
    return a*b*c
    
ergebnis = quader_volumen(2, 4, 6)
print(ergebnis)
Man sollte wenn eben möglich, keine globals verwenden, sondern die Werte, an die Funktion übergeben.
cheers
User
Beiträge: 18
Registriert: Samstag 31. Juli 2021, 08:53
Wohnort: Deutschland

Hi
ja da war ich mir eben nicht sicher, ich arbeite mit einem Handbuch von einem Python Kurs und das Beispiel fand ich seltsam, ich wusste nicht, ob man die Funktionsnamen beibehalten muss, hab verschiedenes getestet aber scheinbar nicht das richtige gefunden.

deine Lösung funktioniert so, danke dafür. weshalb ich Global nutzte war eben das Ergebnis dass ich bekam und ich dachte, das hat damit zutun, dass ich die Rechnung ja innerhalb der Funktion durchführe und variablen etc. ja nur in der Funktion enthalten sind, sofern sie nicht Global sind, daher war ich der Meinung das Ergebnis der Funktion dann global darstellen zu müssen. oder hab ich das falsch verstanden?
:arrow: Viele Grüße und allen eine gute Zeit! :)
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@cheers,

globale Variablen sind vor allem schlecht, weil sie theoretisch an jeder Stelle des Programms verändert werden können und dadurch die Fehlersuche erschwert wird.

Die Daten sollten auf einem nachvollziehbaren Weg durch das Programm "wandern". Dazu werden sie als Eingangsparameter an die Funktion übergeben und in der Funktion benutzt oder verändert. Ergebnisse werden über "return" zurückgegeben.

Um Daten innerhalb einer Funktion zu benutzen, ist es also nicht nötig sie global zu definieren.
cheers
User
Beiträge: 18
Registriert: Samstag 31. Juli 2021, 08:53
Wohnort: Deutschland

gut, danke für die aufklärung :)
:arrow: Viele Grüße und allen eine gute Zeit! :)
Antworten