[Tutor] recursive function password check

Dave Angel davea at davea.name
Wed Feb 6 15:53:52 CET 2013

On 02/06/2013 08:44 AM, Mara Kelly wrote:
> Hi everyone, trying to write a program that has the user enter a password, checks if it contains any vowels, and if it does prints ' It is false that password(whatever the user enters) has no vowels,' and if it has no vowels prints it is True that password has no vowels...
> Here is what I have so far...def password(y):    vowels=["a","e","i","o"]    if y[0] in vowels:        return False    if len(y) ==0:        return True    elif(y[len(y)-1] != vowels):        return False    else:        return password(y[1:len(y)-1])x=input("Enter a password:")print("It is", password(x),"that",x,"has no vowles")
> As of now it just asks for the password, and then prints 'It is False that password(whatever was entered) has no vowles' for any word I enter. I think maybe some of my if statement conditions may be being returned to the function, but then not printing the appropriate one? Can anyone help? Thanks!

Please don't post in html email. It can seriously mess up your columns. 
  In your case, your email program didn't even try to provide a text 
version, so those of us who read text emails can't make much sense of it.

Fortunately, I can decipher it by using someone else's reply.  I quote 
that below:

def password(y):
 >     vowels=["a","e","i","o"]

You might want to include "u" in that list.  And maybe the uppercase 
versions as well.

 >     if y[0] in vowels:
 >         return False
 >     if len(y) ==0:
 >         return True
 >     elif(y[len(y)-1] != vowels):

No, you want  if y[-1] in vowels:   instead.  A string is never going to 
be equal to a list.

 >         return False
 >     else:
 >         return password(y[1:len(y)-1])
 > x=input("Enter a password:")
 > print("It is", password(x),"that",x,"has no vowles")

I presume that making the function recursive was an explicit part of the 


More information about the Tutor mailing list