# definindo funcao para testar se o nome eh valido (tem 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('walsanjadson')
assert not ehNome(' walsan')
assert not ehNome('Walsan ')
assert not ehNome('123')
assert ehNome('123 345')
assert ehNome('walsan jadson')
# definindo funcao para testar se o email eh valido
def ehEmail(email):
if not '@' in email:
return False
if not '.' in email:
return False
# definindo as posicoes do '@' e do '.'
arroba = email.index('@')
ponto = email.index('.')
if ponto < arroba:
return False
if arroba == 0:
return False
# verificando a quantidade de caracteres do email
ultimo = len(email)-1
# verificando se existe alguma coisa depois do ponto
if ponto == ultimo:
return False
# verificando se existe alguma coisa entre '@' e o '.'
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')
assert ehEmail('walsan@ufpb.com')
# definindo funcao para testar se o celular e 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')
assert ehCelular('99228978')
# definindo uma funcao que adiciona um contato
def adicionaContato():
while 1:
nome= raw_input('\nDigite seu nome: ').upper()
if ehNome(nome) == True:
break
else:
print '\ndigite nome e sobrenome!!!\n'
while 1:
celular= raw_input('Digite o seu celular: ')
if ehCelular(celular) == True:
break
else:
print '\nnumero incorreto, digite novamente!!!\n'
while 1:
email= raw_input('Digite seu email: ')
if ehEmail(email) == True:
break
else:
print '\nemail invalido, digite novamente!!!\n'
contato= [nome, celular, email]
agenda.append(contato)
print '\nContato adicionado com sucesso.\n'
# definindo funcao para varrer a agenda e procurar um contato
def pesquisarContato():
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
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 \n' %contato[2]
contador += 1
if contador == 1:
print '\nContato inexistente.\n'
# definindo funcao para editar um contato
def editarContato(): # logoca dessa funcao eh substituir o que estah na agenda pelo que o usuario digitar
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
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' %contador2
print 'Nome: %s' %contato[0]
print 'Celular: %s' %contato[1]
print 'e-mail: %s \n' %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 '\nnumero invalido!!!\n'
else:
break
except:
print '\ncaracter invalido!!!\n'
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 == '': # se o usuario teclar ENTER o nome nao muda
agenda[endereco][0]= contato_editar[0]
break
else:
if ehNome(novo_nome) == True:
agenda[endereco][0]= novo_nome
break
else:
print '\nDigite nome e sobrenome!\n'
while 1:
novo_celular= raw_input('Celular: %s --> ' %contato_editar[1])
if novo_celular == '': # se o usuario teclar ENTER o celular nao muda
agenda[endereco][1]= contato_editar[1]
break
else:
if ehCelular(novo_celular) == True:
agenda[endereco][1]= novo_celular
break
else:
print '\nCelular invalido, digite novamente!\n'
while 1:
novo_email= raw_input('email: %s --> ' %contato_editar[2])
if novo_email == '': # se o usuario teclar ENTER o e-mail nao muda
agenda[endereco][2]= contato_editar[2]
break
else:
if ehEmail(novo_email) == True:
agenda[endereco][2]= novo_email
break
else:
print '\nE-mail invalido, digite novamente!\n'
print '\nContato editado com sucesso.\n'
else:
print '\nContato inexistente.\n'
# definindo funcao para excluir contato
def excluirContato():
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
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' %contador2
print 'Nome: %s' %contato[0]
print 'Celular: %s' %contato[1]
print 'e-mail: %s \n' %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 '\nnumero invalido!!!\n'
else:
break
except:
print '\ncaracter invalido!!!\n'
agenda.remove(filtro[pergunta-1])
print '\nContato excluido com sucesso.\n'
else:
print '\nContato inexistente.\n'
# definindo funcao que mostra todos os contatos da agenda
def tudo():
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
else:
contador3= 1
for contato in agenda:
print '\n %i' %contador3
print 'Nome: %s' %contato[0]
print 'Celular: %s' %contato[1]
print 'e-mail: %s \n' %contato[2]
contador3 += 1
# definindo uma funcao para salvar a agenda em um documento .txt
def salva():
abertura= open('agenda_lista.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]) #nao se coloca o delimitador, pq na leitura seria criado um elemento assim --> ['']
abertura.close()
# definindo funcao para recuperas todos os contatos do arquivo .txt
def ler():
abertura= open('agenda_lista.txt','r')
ls= abertura.read().splitlines()
# ls me eh uma lista, sendo que cada elemento eh uma linha do arquivo
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= []
# quando o programa inicia, ele tenta ler o arquivo .txt, mais se nao exeistir ainda
# um arquivo .txt
ele cria um em branco para poder ser usado no fim do programa
try:
ler()
except:
abertura= open('agenda.txt','w')
abertura.close()
print ' \nOpcoes: '
print ' - (m) menu'
print ' - (a) adicionar'
print ' - (p) pesquisar'
print ' - (ed) editar'
print ' - (ex) excluir'
print ' - (t) tudo'
print ' - (s) sair\n'
while 1:
comando= raw_input('o que deseja fazer? ').upper()
if comando == 'a'.upper():
adicionaContato()
elif comando == 'p'.upper():
pesquisarContato()
elif comando == 'ed'.upper():
editarContato()
elif comando == 'ex'.upper():
excluirContato()
elif comando == 't'.upper():
tudo()
elif comando == 's'.upper():
print '\n Valew`s... \n'
salva()
break
elif comando == 'm'.upper():
print '\n Opcoes: '
print ' - (m) menu'
print ' - (a) adicionar'
print ' - (p) pesquisar'
print ' - (ed) editar'
print ' - (ex) excluir'
print ' - (t) tudo'
print ' - (s) sair\n'
else:
print '\n Opcoes: '
print ' - (m) menu'
print ' - (a) adicionar'
print ' - (p) pesquisar'
print ' - (ed) editar'
print ' - (ex) excluir'
print ' - (t) tudo'
print ' - (s) sair\n'
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('walsanjadson')
assert not ehNome(' walsan')
assert not ehNome('Walsan ')
assert not ehNome('123')
assert ehNome('123 345')
assert ehNome('walsan jadson')
# definindo funcao para testar se o email eh valido
def ehEmail(email):
if not '@' in email:
return False
if not '.' in email:
return False
# definindo as posicoes do '@' e do '.'
arroba = email.index('@')
ponto = email.index('.')
if ponto < arroba:
return False
if arroba == 0:
return False
# verificando a quantidade de caracteres do email
ultimo = len(email)-1
# verificando se existe alguma coisa depois do ponto
if ponto == ultimo:
return False
# verificando se existe alguma coisa entre '@' e o '.'
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')
assert ehEmail('walsan@ufpb.com')
# definindo funcao para testar se o celular e 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')
assert ehCelular('99228978')
# definindo uma funcao que adiciona um contato
def adicionaContato():
while 1:
nome= raw_input('\nDigite seu nome: ').upper()
if ehNome(nome) == True:
break
else:
print '\ndigite nome e sobrenome!!!\n'
while 1:
celular= raw_input('Digite o seu celular: ')
if ehCelular(celular) == True:
break
else:
print '\nnumero incorreto, digite novamente!!!\n'
while 1:
email= raw_input('Digite seu email: ')
if ehEmail(email) == True:
break
else:
print '\nemail invalido, digite novamente!!!\n'
contato= [nome, celular, email]
agenda.append(contato)
print '\nContato adicionado com sucesso.\n'
# definindo funcao para varrer a agenda e procurar um contato
def pesquisarContato():
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
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 \n' %contato[2]
contador += 1
if contador == 1:
print '\nContato inexistente.\n'
# definindo funcao para editar um contato
def editarContato(): # logoca dessa funcao eh substituir o que estah na agenda pelo que o usuario digitar
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
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' %contador2
print 'Nome: %s' %contato[0]
print 'Celular: %s' %contato[1]
print 'e-mail: %s \n' %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 '\nnumero invalido!!!\n'
else:
break
except:
print '\ncaracter invalido!!!\n'
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 == '': # se o usuario teclar ENTER o nome nao muda
agenda[endereco][0]= contato_editar[0]
break
else:
if ehNome(novo_nome) == True:
agenda[endereco][0]= novo_nome
break
else:
print '\nDigite nome e sobrenome!\n'
while 1:
novo_celular= raw_input('Celular: %s --> ' %contato_editar[1])
if novo_celular == '': # se o usuario teclar ENTER o celular nao muda
agenda[endereco][1]= contato_editar[1]
break
else:
if ehCelular(novo_celular) == True:
agenda[endereco][1]= novo_celular
break
else:
print '\nCelular invalido, digite novamente!\n'
while 1:
novo_email= raw_input('email: %s --> ' %contato_editar[2])
if novo_email == '': # se o usuario teclar ENTER o e-mail nao muda
agenda[endereco][2]= contato_editar[2]
break
else:
if ehEmail(novo_email) == True:
agenda[endereco][2]= novo_email
break
else:
print '\nE-mail invalido, digite novamente!\n'
print '\nContato editado com sucesso.\n'
else:
print '\nContato inexistente.\n'
# definindo funcao para excluir contato
def excluirContato():
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
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' %contador2
print 'Nome: %s' %contato[0]
print 'Celular: %s' %contato[1]
print 'e-mail: %s \n' %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 '\nnumero invalido!!!\n'
else:
break
except:
print '\ncaracter invalido!!!\n'
agenda.remove(filtro[pergunta-1])
print '\nContato excluido com sucesso.\n'
else:
print '\nContato inexistente.\n'
# definindo funcao que mostra todos os contatos da agenda
def tudo():
if len(agenda) == 0:
print '\nSua agenda ainda nao possui contatos!!!\n'
else:
contador3= 1
for contato in agenda:
print '\n %i' %contador3
print 'Nome: %s' %contato[0]
print 'Celular: %s' %contato[1]
print 'e-mail: %s \n' %contato[2]
contador3 += 1
# definindo uma funcao para salvar a agenda em um documento .txt
def salva():
abertura= open('agenda_lista.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]) #nao se coloca o delimitador, pq na leitura seria criado um elemento assim --> ['']
abertura.close()
# definindo funcao para recuperas todos os contatos do arquivo .txt
def ler():
abertura= open('agenda_lista.txt','r')
ls= abertura.read().splitlines()
# ls me eh uma lista, sendo que cada elemento eh uma linha do arquivo
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= []
# quando o programa inicia, ele tenta ler o arquivo .txt, mais se nao exeistir ainda
# um arquivo .txt
ele cria um em branco para poder ser usado no fim do programa
try:
ler()
except:
abertura= open('agenda.txt','w')
abertura.close()
print ' \nOpcoes: '
print ' - (m) menu'
print ' - (a) adicionar'
print ' - (p) pesquisar'
print ' - (ed) editar'
print ' - (ex) excluir'
print ' - (t) tudo'
print ' - (s) sair\n'
while 1:
comando= raw_input('o que deseja fazer? ').upper()
if comando == 'a'.upper():
adicionaContato()
elif comando == 'p'.upper():
pesquisarContato()
elif comando == 'ed'.upper():
editarContato()
elif comando == 'ex'.upper():
excluirContato()
elif comando == 't'.upper():
tudo()
elif comando == 's'.upper():
print '\n Valew`s... \n'
salva()
break
elif comando == 'm'.upper():
print '\n Opcoes: '
print ' - (m) menu'
print ' - (a) adicionar'
print ' - (p) pesquisar'
print ' - (ed) editar'
print ' - (ex) excluir'
print ' - (t) tudo'
print ' - (s) sair\n'
else:
print '\n Opcoes: '
print ' - (m) menu'
print ' - (a) adicionar'
print ' - (p) pesquisar'
print ' - (ed) editar'
print ' - (ex) excluir'
print ' - (t) tudo'
print ' - (s) sair\n'
Comment