![Creative The name of the picture]()

Clash Royale CLAN TAG#URR8PPP
function is not returning what is intended
The function that I created is to measure the length of an argument!. I want to return "Sorry, integers don't have length"
def string_length(mystring):
if type(mystring) == int:
return "Sorry, integers don't have length"
else:
return len(mystring)
mystring = input("what is the value ?")
print(string_length(mystring))
what am I doing wrong?
2 Answers
2
Your question isn't very clear, but this should work, if my understanding is not wrong:
def string_length(mystring):
try:
if type(int(mystring)) == int:
return "Sorry, integers don't have length"
elif type(mystring) == str:
return len(mystring)
except:
return len(str(mystring))
mystring = input("what is the value ?")
print(string_length(mystring))
type(int(mystring)) == int
In Python2, input
will evaluate to an integer, not a string, which would explain the message.
input
You can use hasattr
to check for the __len__
magic function rather than doing explict type checking.
hasattr
__len__
This should work for any iterable type, I believe
def string_length(mystring):
if hasattr(mystring, '__len__'):
return len(mystring)
else:
print("Sorry, {} don't have length".format(type(mystring)))
return None
mystring = input("what is the value ?")
print(string_length(mystring))
Then, make sure you are running this in Python3
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
You didn't pass it an int.
– user2357112
yesterday