#Definir as exceptions 

class UsernameDuplicado(Exception):
    pass

class IdadeMenorQuePermitida(Exception):
    pass

class IdadeInvalida(Exception):
    pass

class EmailInvalido(Exception):
    pass

class User:
    def __init__(self, username, email):
        self.__username = username
        self.__email = email

    def getUsername(self):
        return self.__username
    def getEmail(self):
        return self.__email

if __name__ == '__main__':
    listaExemplo = [('paulo', '<EMAIL>', 21), 
    ('maria', '<EMAIL>', 19), 
    ('antonio', '<EMAIL>', 25),
    ('pedro', '<EMAIL>', 15),
    ('maria', 'maria', 23),
    ('ana', '<EMAIL>', -22),
    ('maria', '<EMAIL>', 27)]

cadastro = {}
for username, email, idade in listaExemplo:
    try:
        if username in cadastro:
            raise UsernameDuplicado()
        if idade < 0:
            raise IdadeInvalida()
        if idade < 18:
            raise IdadeMenorQuePermitida()
        emailpartes = email.split('@')
        if len(emailpartes) != 2 or not email[0] or not emailpartes[1]:
            raise EmailInvalido()
    except UsernameDuplicado:
        print("Username %s ja está em uso" % username)
    except IdadeInvalida:
        print("Idade invalida: %d" % idade)
    except IdadeMenorQuePermitida:
        print("Usuário %s tem idade inferior a permitida" % idade)
    except EmailInvalido:
        print('%s não é um endereço de email válido' % email)
    else:
        cadastro[username] = User(username, email)





#Definir as exceptions 

class UsernameDuplicado(Exception):
    pass

class IdadeMenorQuePermitida(Exception):
    pass

class IdadeInvalida(Exception):
    pass

class EmailInvalido(Exception):
    pass

class User:
    def __init__(self, username, email):
        self.__username = username
        self.__email = email

    def getUsername(self):
        return self.__username
    def getEmail(self):
        return self.__email

if __name__ == '__main__':
    listaExemplo = [('paulo', '<EMAIL>', 21), 
    ('maria', '<EMAIL>', 19), 
    ('antonio', '<EMAIL>', 25),
    ('pedro', '<EMAIL>', 15),
    ('maria', 'maria', 23),
    ('ana', '<EMAIL>', -22),
    ('maria', '<EMAIL>', 27)]

cadastro = {}
for username, email, idade in listaExemplo:
    try:
        if username in cadastro:
            raise UsernameDuplicado()
        if idade < 0:
            raise IdadeInvalida()
        if idade < 18:
            raise IdadeMenorQuePermitida()
        emailpartes = email.split('@')
        if len(emailpartes) != 2 or not email[0] or not emailpartes[1]:
            raise EmailInvalido()
    except UsernameDuplicado:
        print("Username %s ja está em uso" % username)
    except IdadeInvalida:
        print("Idade invalida: %d" % idade)
    except IdadeMenorQuePermitida:
        print("Usuário %s tem idade inferior a permitida" % idade)
    except EmailInvalido:
        print('%s não é um endereço de email válido' % email)
    else:
        cadastro[username] = User(username, email)





#Definir as exceptions