def problem

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
smodo
User
Beiträge: 49
Registriert: Dienstag 18. August 2009, 23:45

Grüezi Wohl

Ich bin wieder am Python anpacken, jetzt da ich wieder zeit habe.
Ich bin schon den ganzen tag am Python Buch "Python von Peter Kaiser, Johannes Ernesti" lesen und jetzt wollt ich eine funktion schreiben.
Eine sehr einfache halt, aber mein kopf explodiert fast, ich finde den fehler nicht, und im Buch ist eine Funktion beschrieben um eine Fakultät auszurechnen, aber ich möchte selber schreiben und nicht abschreiben, google hat auch nichts gebracht, ich hoffe ich belästige Euch nicht mit dieser eigentlich simplen aufgabe. Den ablauf verstehe ich ja, komm aber irgendwie nicht auf den punkt.

Code: Alles auswählen

#!/usr/bin/python

def kubik(fir): 
    a = 0
    b = 0
    c = 0
    ergebnis = (a * b) * c
    print ergebnis

while True:
    a = int(raw_input("Geben sie die laenge ein: "))
    kubik(a)
    
    b = int(raw_input("geben sie die breite ein: "))
    kubik(b)

    c = int(raw_input("geben sie die hoehe ein: "))
    kubik(c)
bitte nicht auslachen, kann mir vorstellen das dass für Euch ziemlich amüsant sein muss :P

Grüsse
Der Zynismus ist meine Rüstung, der Sarkasmus mein Schwert und die Ironie mein Schild.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Lass Dir doch mal in der kubik-Funktion die Werte von a,b und c ausgeben! Ich sage Dir jetzt schon voraus, dass die immer 0 sein werden.

Stell Dir mald ei Farge: Was bedeutet denn "fir" im Funktionskopf? Welchen Wert hat den "fir" nach dem Funktionsaufruf? (-> auch mit print ausgeben lassen!)

Wieso rufst Du 3x nacheinander eine Funktion auf? Du solltest noch mal etwas grundlegendes über Funktionen nachlesen, z.B. im offiziellen Tutorial aus der Doku.

Hier mal ein wenig Hilfe:

Code: Alles auswählen

# was sind hier a und b?
def summe(a, b):
    # nur zum Debuggen eine print Ausgabe
    print a, b
    # was macht return?
    return a + b

s = summe(2, 3)
# was steht in s?
print s
# braucht man hier s?
print summe(2, 3)
smodo
User
Beiträge: 49
Registriert: Dienstag 18. August 2009, 23:45

jop es gab immer 0.
Das mit fir, hab ich einfach reingeschrieben da ich zuerst

def kubik(a, b, c):

hatte, aber dann gabs immer ein ValueError.
Der Zynismus ist meine Rüstung, der Sarkasmus mein Schwert und die Ironie mein Schild.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das Buch solltest du vergessen, es ist fuer Anfaenger ungeeignet (auch sonst, aber fuer die besonders, da sie nicht zwischen falsch und richtig unterscheiden koennen) und strotzt vor falschem und unpythonischem Code. Siehe auch: http://www.python-forum.de/topic-19497.html
Als Alternative bietet sich das offizielle Tutorial an.

Dein spezifisches Problem ist, dass du Funktionen nicht verstanden hast. Man uebergibt Parameter, die Funktion arbeitet und gibt einen Rueckgabewert zurueck.

Uebrigens ist dein "kubik" falsch. Das 'richtige' sieht so aus:

Code: Alles auswählen

def cubic(value):
    return value ** 3
Dein Code:

Code: Alles auswählen

def kubik(length, width, depth):
    return length * width * depth

while True:
    length = int(raw_input("Geben sie die laenge ein: "))   
    width = int(raw_input("geben sie die breite ein: "))
    depth = int(raw_input("geben sie die hoehe ein: "))
    print kubik(length, width, depth)
Daneben: Nutze sprechende Namen und lies dir mal PEP8 durch.
smodo
User
Beiträge: 49
Registriert: Dienstag 18. August 2009, 23:45

werd ich versprochen :) und vielen dank, also leg ich das buch mal auf die seite.
Ab gehts ans Tut... :)


freundlichst grüsse ich
Der Zynismus ist meine Rüstung, der Sarkasmus mein Schwert und die Ironie mein Schild.
Antworten