2016-05-05 3 views
1

Stuck in Verwirrung !! zuerst diese Funktion beachten:widersprüchliche Ausgabe beim Aufruf von zwei definierten Funktionen auf einmal

def tax(amt): 
    if amt < 241: 
     r = 0 
    elif amt < 481: 
     r = amt * 0.15 
    else: 
     r = amt * 0.28 
    return r 

def net(amt): 
    return amt - tax(amt) 

jetzt, wenn ich diese nur eine Funktion auf einmal nennen, wie unten angegeben, dann kommt die Ausgabe erfolgreich ohne Fehler aus:

print('enter The Grosspay') 
r = int(raw_input()) 
net_pay = net(r) 
print(net_pay) 

Aber wenn ich rufe beide Funktion zusammen gegeben wie below dann erscheint der Fehler mit einer Meldung auf, dass

„float Objekt nicht aufrufbar ist“
print('enter The Grosspay') 
r = int(raw_input()) 
tax = tax(r) 
net_pay = net(r) 
print("tax: " + str(tax) + "\t" + "net payment: " + str(net_pay)) 

Antwort

4

Sie nicht die gleichen Namen repräsentieren sowohl die Funktion und den Schwimmer haben können.

Diese Zeile erzeugt den globalen Namen tax und bindet es an eine Funktion:

def tax(amt): 

Diese Zeile erzeugt den globalen Namen tax und bindet es an einem Schwimmer:

tax=tax(r) 

Diese zweite Bindung (zu floaten) zerstört die erste Bindung (zu einer Funktion). Wenn Sie später nettax() aufrufen, erhalten Sie den Fehler "Float-Objekt ist nicht aufrufbar".

Lösung: Geben Sie Ihren Funktionen und Ihren Variablen verschiedene Namen.

+0

Vielen Dank Rob für die Klarstellung !! – Neel

Verwandte Themen