Develop a Python function which either returns the float square of its parameter x if the parameter is a number, or prints the string "Sorry Dave, I'm afraid I can't do that" if the parameter is a string, and then returns 0.0.
What am I doing wrong? I'm a first year CS student and I have no previous programming background.
I created a function that takes user input, evaluates what type of input it is and print different out puts for number and strings.
For that I used eval(var)
func. I also the type(var) == type
to verify the type and a if-else
loop.
def findt():
userin = input("Input: ") # Takes user input
inpeval = eval(userin) # Evaluates input type
if type(inpeval) == int: # If input is an int
userfloat = float(inpeval) # Modifies into a float
print(userfloat ** 2) # Prints the square of the value
elif type(inpeval) == float: # If input is a float
print(inpreval ** 2) # Prints the square of the value
elif type(userin) == str: # If input is a string
print("Sorry Dave, I'm afraid I can't do that") # Print a string
return 0.0 # Return 0.0
else:
print("Invalid Input")
findt()
When I run my code it works well when input is an int, a float or a char. But if I write more than one char it returns me an error:
NameError: name 'whateverinput' is not defined.