This code executes, however, an error message \" NameError: name \'p\' is not defined in lines 7 and 11 - I tried adding float( ) around everything - same error - any ideas ???
If you read your script from top to bottom:
def computepay(hrs,rate):
The interpreter uses this to define a local function with name computepay
. It then ignores everything in the block:
if 0 < hrs <=40:
print (hrs * rate)
elif hrs > 40:
print (40 * rate + (hrs-40)*rate*1.5)
return p
Then it executes input
, converts the result into a float object using float
, and creates a name rate
which points to the float object:
rate = float(input("Enter Rate per Hour:"))
Then it executes computepay
which does its thing and tries to return p
, however, the intepreter has not yet seen any definition of p
in the local scope. Even if we said global p
to tell the interpreter to look in the global scope, it has not yet created the NAME which points to any object. So you get a NameError:
p = computepay(hrs,rate)