# 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'
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'