Seite 1 von 1

def problem

Verfasst: Mittwoch 19. August 2009, 21:13
von smodo
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

Verfasst: Mittwoch 19. August 2009, 21:25
von Hyperion
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)

Verfasst: Mittwoch 19. August 2009, 21:28
von smodo
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.

Verfasst: Mittwoch 19. August 2009, 21:34
von cofi
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.

Verfasst: Mittwoch 19. August 2009, 21:46
von smodo
werd ich versprochen :) und vielen dank, also leg ich das buch mal auf die seite.
Ab gehts ans Tut... :)


freundlichst grüsse ich