Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Agenda com tratamento de erros

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Python Agenda com tratamento de erros

    # funcao testa se o usuario digitou nome e sobrenome
    def ehNome(nome):
    if not ' ' in nome:
    return False
    if nome.index(' ') == 0:
    return False
    if nome.index(' ') == len(nome) - 1:
    return False
    return True

    assert not ehNome('walsan')
    assert not ehNome(' walsan')
    assert not ehNome('walsan ')
    assert not ehNome('123')
    assert ehNome('123 456')
    assert ehNome('walsan jadson')


    # funcao testa se o e-mail eh valido
    def ehEmail(email):
    arroba = email.index('@')
    ponto = email.index('.')
    ultimo = len(email) - 1

    if not '@' in email:
    return False
    if not '.' in email:
    return False
    if ponto < arroba:
    return False
    if arroba == 0:
    return False
    if ponto == ultimo:
    return False
    if ponto - arroba == 1:
    return False
    return True

    assert not ehEmail('abc')
    assert not ehEmail('abc@')
    assert not ehEmail('abc@def')
    assert not ehEmail('abc@def.')
    assert not ehEmail('@def.com')
    assert not ehEmail('abc.def@')
    assert not ehEmail('@def.')
    assert not ehEmail('abc@.com')
    assert ehEmail('a@b.c')


    # funcao testa se o celular eh valido
    def ehCelular(celular):
    if len(celular) != 8:
    return False
    if not celular.isdigit():
    return False
    return True

    assert not ehCelular('1234567')
    assert not ehCelular('123456a')
    assert not ehCelular('1234567a')
    assert ehCelular('12345678')


    # funcao que adiciona contatos
    def adicionaContato():
    while 1:
    nome = raw_input('Digite o nome e o sobrenome do contato: ')
    if ehNome(nome) == True:
    break
    else:
    print 'Digite nome e sebrenome!'
    while 1:
    celular = raw_input('Digite o celular do contato: ')
    if ehCelular(celular) == True:
    break
    else:
    print 'Celular invalido, digite novamente!'
    while 1:
    email = raw_input('Digite o e-mail do contato: ')
    if ehEmail(email) == True:
    break
    else:
    print 'E-mail invalido, digite novamente!'

    contato = [nome, celular, email]
    agenda.append(contato)
    print 'Contato adicionado com sucesso.'


    # funcao que pesquisa por um contato na agenda
    def pesquisarContato():
    if len(agenda) == 0:
    print 'Sua agenda ainda nao possui contatos.'
    else:
    contador = 1
    nome_do_contato = raw_input('Digite o nome do contato: ').upper()
    for contato in agenda:
    if nome_do_contato in contato[0]:
    print '\n %i' %contador
    print 'Nome: %s' %contato[0]
    print 'Celular: %s' %contato[1]
    print 'E-mail: %s' %contato[2]
    contador += 1
    if contador == 1:
    print 'Contato inexistente!'


    # funcao que edita um contato
    def editarContato():
    if len(agenda) == 0:
    print 'Sua agenda ainda nao possui contatos!'
    else:
    nome = raw_input('Digite o nome do contato: ')
    contador2 = 1
    filtro = []
    for contato in agenda:
    if nome in contato[0]:
    print '\n %i' %contador
    print 'Nome: %s' %contato[0]
    print 'Celular: %s' %contato[1]
    print 'E-mail: %s' %contato[2]
    contador2 += 1
    filtro.append(contato)
    if len(filtro) > 0:
    while 1:
    try:
    pergunta = int(raw_input('Digite o indice do contato a ser editado: '))
    if pergunta > contador2 - 1:
    print 'Numero invalido!'
    else:
    break
    except:
    print 'Caracter invalido!'
    contato_editar = (filtro[pergunta-1])
    endereco = agenda.index(contato_editar)

    while 1:
    novo_nome = raw_input('Nome: %s --> ' %contato_editar[0]).upper()
    if novo_nome == '': # duas aspas simples e juntas
    agenda[endereco][0] = contato_editar[0]
    break
    else:
    if ehNome(novo_nome) == True:
    agenda[endereco][0] = novo_nome
    break
    else:
    print 'Digite nome e sobrenome!'

    while 1:
    novo_celular = raw_input('Celular: %s --> ' %contato_editar[1])
    if novo_celular == '':
    agenda[endereco][1] = contato_editar[1]
    break
    else:
    if ehCelular(novo_celular) == True:
    agenda[endereco][1] = novo_celular
    break
    else:
    print 'Celular invalido, digite novamente!'

    while 1:
    novo_email = raw_input('E-mail: %s --> ' %contato_editar[2])
    if novo_email == '':
    agenda[endereco][2] = contato_editar[2]
    break
    else:
    if ehEmail(novo_email) == True:
    agenda[endereco][2] = novo_email
    break
    else:
    print 'E-mail invalido, digite novamente!'

    print 'Contato editado com sucesso.'
    else:
    print 'Contato inexistente!'


    # funcao que exclui um contato
    def excluirContato():
    if len(agenda) == 0:
    print 'Sua agenda ainda nao possui contatos!'
    else:
    nome = raw_input('Digite o nome do contato: ').upper()
    contador2 = 1
    filtro = []
    for contato in agenda:
    if nome in contato[0]:
    print '\n %i' %contador
    print 'Nome: %s' %contato[0]
    print 'Celular: %s' %contato[1]
    print 'E-mail: %s' %contato[2]
    contador2 += 1
    filtro.append(contato)
    if len(filtro) > 0:
    while 1:
    try:
    pergunta = int(raw_input('Digite o indice do contato a ser excluido: '))
    if pergunta > contador2 - 1:
    print 'Indice invalido!'
    else:
    break
    except:
    print 'Caracter Invalido!'
    agenda.remove(filtro[pergunta-1])
    print 'Contato excluido com sucesso.'
    else:
    print 'Contato inexistente!'


    # funcao que salva os contatos em um documento .txt
    def salva():
    abertura = open('agenda.txt', 'w')
    for contato in agenda:
    abertura.write('%s%s' %(contato[0], delimitador))
    abertura.write('%s%s' %(contato[1], delimitador))
    abertura.write('%s\n' %contato[2])
    # na ultima linha nao se coloca o delimitador pq na leitura seria criado
    # um elemento assim --> [' ']
    abertura.close()


    # funcao que recupera os contatos do arquivo .txt quando o programa eh aberto
    def ler():
    abertura = open('agenda.txt', 'r')
    ls = abertura.read().splitlines()
    # ls eh uma lista sendo que cada elemento eh uma linha do arquivo .txt
    for contato in ls:
    novo_contato = contato.split(delimitador)
    # novo_contato eh uma lista sendo que, aqui pegamos o elemento de ls
    # e quebramos no delimitador
    agenda.append(novo_contato)


    # programa
    delimitador = '++'
    agenda = []
    try:
    ler()
    except:
    abertura = open('agenda.txt', 'w')
    abertura.close()

    print ' Opcoes: '
    print ' - (a) adicionar'
    print ' - (ed) editar'
    print ' - (ex) excluir'
    print ' - (p) pesquisar'
    print ' - (s) sair'

    while 1:
    comando = raw_input('O que deseja fazer? ').upper()
    if comando == 'A':
    adicionaContato()
    if comando == 'ED':
    editarContato()
    if comando == 'EX':
    excluirContato()
    if comando == 'P':
    pesquisarContato()
    if comando == 'S':
    Valew's...
    salva()
    break
    else:
    print ' Opcoes: '
    print ' - (a) adicionar'
    print ' - (ed) editar'
    print ' - (ex) excluir'
    print ' - (p) pesquisar'
    print ' - (s) sair'
X
Working...
X