I have defined this function that takes a word and a string of required letters and that returns True if the word uses all the required letters at least once. When I run this, it gives me the correct output but I do not understand why it also outputs 'None'.
Here is my code:
def uses_all(word, allused):
boolean = False
for e in allused:
if e in word:
boolean = True
else:
boolean = False
break
print boolean
print uses_all('facebook', 'd')
Output:
False
None
Comments on where I have gone wrong will be appreciated.
Your program prints
boolean
, which is False, so you know where that comes from.If a function doesn't return anything explicitly, it automatically returns None, and when you use
you're asking it to print what
uses_all
returns, which is None. Hence:BTW, I think your function could be more concisely written as
Could make it more efficient, but that should be good enough for government work. The all function is really handy (see also
any
).You print the result of the function, but the function doesn't
return
anything (--> None)If you want the result to be
False False
, addreturn boolean
in the function.Alternatively, if a single
False
is enough, you could changeprint uses_all('facebook', 'd')
to justuses_all('facebook', 'd')
Because
uses_all()
doesn't have a return statement. If you return a value from the function, it will be printed instead of None, unless of course youreturn None
:)