Error in python's print

1

Hello, I have a small problem, I think it's simple and I'll get help here. I have a code that gets a name, check if it's 'elvis' , if it's printa 'welcome' strong>. The problem is that when I hit the first name it printa the 'welcome' , but when I make a mistake a few times and then hit it, it does not start the 'welcome' strong>, simply terminates.

name=str(input('Write your name: ')) #Recebe o nome

def check(name): #Função para checar se o nome é elvis
    while(name!='elvis'): #Loop que fica pedindo o nome até ser digitado o correto
        print('You are not allowed!') #Mensagem avisando que não tem permissão
        name=str(input('Write your name: ')) #Recebe o nome novamente

def sucess(name): #Função que mostra a mensagem 'bem vindo'
    if(name=='elvis'): #Verifica se o nome que foi digitado é elvis
        print('Welcome {}!'.format(name)) #Mensagem de boas vindas
    else: #Caso não seja a função acima é chamada
        check(name)

sucess(name) #Função acima
    
asked by anonymous 06.08.2018 / 00:16

1 answer

1

This happens because after you miss the name, you ask that it be inserted again, but within the check function. So, even though the name is entered correctly in this second attempt, it is "stuck" inside the check function, and will never be passed to the sucess function, which is the one that gives the welcome .

As you said, it was little. I just needed to add a call to the sucess function after exiting the% error name%.

name=str(input('Write your name: ')) #Recebe o nome

def check(name): #Função para checar se o nome é elvis
    while(name!='elvis'): #Loop que fica pedindo o nome até ser digitado o correto
        print('You are not allowed!') #Mensagem avisando que não tem permissão
        name=str(input('Write your name: ')) #Recebe o nome novamente
    sucess(name)     #faltou chamar esta verificação aqui

def sucess(name): #Função que mostra a mensagem 'bem vindo'
    if(name=='elvis'): #Verifica se o nome que foi digitado é elvis
        print('Welcome {}!'.format(name)) #Mensagem de boas vindas
    else: #Caso não seja a função acima é chamada
        check(name)

sucess(name) #Função acima

If you allow me a suggestion, I think your code becomes more elegant and easy to understand if your 2 functions become one. So:

name=str(input('Write your name: ')) #Recebe o nome

def check(name): #Função para checar se o nome é elvis
    while(name!='elvis'): #Loop que fica pedindo o nome até ser digitado o correto
        print('You are not allowed!') #Mensagem avisando que não tem permissão
        name=str(input('Write your name: ')) #Recebe o nome novamente
    print('Welcome {}!'.format(name)) #Mensagem de boas vindas

check(name) #Função acima
    
06.08.2018 / 00:30