Wo liegt der Fehler? (Funktion mit Parameter)

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
Sphere
User
Beiträge: 8
Registriert: Freitag 31. Juli 2015, 14:21

Hey,
Ich bin auf einen Fehler gestoßen, den Ich selbst nach langem Nachdenken nicht lösen konnte.

Hier der Code:

Code: Alles auswählen

#Funktionen
def steuer (x, y):
    s = x / 100 * y
    print (s)


#while-Schleife initialisieren
fehler_kontrolle = 1


#Hauptprogramm
#Eingabe
while fehler_kontrolle == 1:
    print ("Bitte geben Sie ihr monatliches Bruttogehalt an: ")
    bg = input()

    try:
        brutto_gehalt = int(bg)
        fehler_kontrolle = 0

    except:
        print ("Sie haben keine ganze Zahl angegeben.")


#Steuersatz ermitteln
if brutto_gehalt > 2500:
    steuersatz = 22

else:
    steuersatz = 18


#Ausgabe
print("Mit einem monatlichen Bruttogehalt von:", brutto_gehalt,
      "Euro müssen Sie einen Steuersatz von:", steuersatz, "% bezahlen." 
      "Das sind also:", steuer(brutto_gehalt, steuersatz), "Euro")
Wenn ich das Programm laufen lasse Funktioniert alles außer, dass die Lösung der Funktion an der Falschen Stelle steht und dort wo das Ergebnis eigentlich sein sollte steht nur "None".

Code: Alles auswählen

Bitte geben Sie ihr monatliches Bruttogehalt an: 
2500
450.0
Mit einem monatlichen Bruttogehalt von: 2500 Euro müssen Sie einen Steuersatz von: 18 % bezahlen.Das sind also: None Euro
Habt ihr eventuell Ratschläge was ich noch verbessern könnte und wie der Code sauber laufen würde?
Danke für's lesen !
BlackJack

@Sphere: `print()` gibt einen Text aus wenn es ausgeführt wird. Das `print()` in der Funktion wird ausgeführt bevor das `print()` am Ende des Programms ausgeführt wird, denn das braucht ja den Rückgabewert der Funktion bevor es das in die Ausgabe einbauen kann. An der Stelle wird dann der Rückgabewert der Funktion ausgegeben, und da die Funktion nichts zurück gibt (kein ``return``) ist das der Wert `None`. Die Funktion darf das Ergebnis nicht ausgeben sondern muss es an den Aufrufer zurückgeben.
Sphere
User
Beiträge: 8
Registriert: Freitag 31. Juli 2015, 14:21

@BlackJack, selbst wenn Ich das 'print()' in der Funktion entferne wird mir nicht das Ergebnis am Ende angezeigt.
BlackJack

@Sphere: Weil das Ergebnis nicht an den Aufrufer zurückgegeben wird. Das musst Du *machen*, da musst Du eine Anweisung für schreiben, das passiert nicht automatisch. Wenn Du nicht explizit etwas zurückgibst, dann wird `None` zurückgegeben, was ja auch ausgegeben wird.
Sphere
User
Beiträge: 8
Registriert: Freitag 31. Juli 2015, 14:21

@BlackJack, Habs mit dem Rückgabewert 'return' jetzt hinbekommen.
Danke für deine Hilfe !
Antworten