yFone - Yes, outra agenda telefonica escrita em python! ;- )
Publicado por Murilo R. Esplugues 30/11/2004
[ Hits: 12.192 ]
Homepage: http://www.helpday.blogspot.com/
yFone é uma agenda telefonônica escrita em python (modo-texto) e utilizando shelve como bd. Com ele você pode adicionar, remover, pesquisar e deletar nomes e telefones de sua lista de contatos.
É extremamente simples e fácil de utilizar, ela funcionou bem com uma lista de 500 números e provavelmente suportará bem mais...
Dúvidas, sugestões: mail-me.
#!/usr/bin/env python # Fonelista (Agenda Telefonica) le, adiciona e apaga informacoes de um # banco de dados. O codigo eh pequeno e de facil entendimento. #Mesmo que nao o usem como uma agenda, ele eh util para mostrar certas funcionalidades da linguagem, como acesso a um pseudo banco de dados e tratamento de erros basico. # Este programa esta sendo distribuido livremente, voce tem liberdade # para modifica-lo e distribui-lo contanto que mantenha este aviso, a # versao, nome do autor e email. # Programa: FONELISTA 0.1 - 10/2004 # Autor: Murilo R. Esplugues # Sugestoes: murilo_esplugues@yahoo.com.br # 'shelve' eh um objeto do tipo dicionario que possui persitencia, import sys, shelve, time ## Caso nao exista tenta criar o arquivo 'contatos.db'. def abrirDB(): dbarquivo = 'contatos.db' try: global db db = shelve.open(dbarquivo) except IOError: print 'Erro ao abrir banco de dados!' sys.exit(0) print print 'Banco de dados', dbarquivo, 'aberto!' # Listando contatos def STATUS(): print '\n' * 5 COUNT = 0 LINHAS = 30 for NAME in db.keys(): TESTE = len(NAME) PONTO = '_' SINAL = -(TESTE - 22) * PONTO COUNT = COUNT + 1 if COUNT <= LINHAS: print 'Nome:',NAME,SINAL,'Numero:',db[NAME] else: more = raw_input('Mais? (s/n): ') if more in ['s','S']: COUNT = 0 elif more in ['n','N']: break else: print 'Opcao nao encontrada!' time.sleep(1) print 'Voce tem:',len(db),'registro(s)!' print ## Loop (menu), mantem o loop ate que se pressione a tecla 's' (sair) def Main(): ESCOLHA = None while ESCOLHA != 's' and ESCOLHA != 'S': print '\n' * 2 print 'Bem vindo a lista de Contatos' ESCOLHA = raw_input(""" a - Adicionar d - Deletar v - Ver s - Sair Escolha um opcao: """) if ESCOLHA in ['a','A']: adicionar() elif ESCOLHA in ['d','D']: deletar() elif ESCOLHA in ['v','D']: ver() elif ESCOLHA in ['s','S']: fecharDB() else: print 'Opcao nao encontrada' time.sleep(1) Main() ## Opcao 'v', mostra todo o dicionario, (nomes e telefones), atraves do 'STATUS' # pode-se tambem procurar por um nome aqui, faz-se o teste com 'db.has_key(VERNOME)' # para saber se ha o nome nesse banco de dados. def ver(): STATUS() if len(db) == 0: print 'Sua lista de Contatos esta vazia!' else: print print 's para sair' print VERNOME = raw_input('Digite o nome que quer ver: ') if VERNOME == 's' or VERNOME == 'S': print 'Voltando ao menu principal...' else: if db.has_key(VERNOME): MOSTRAR = db[VERNOME] print '\n' * 2 print 'NOME: ',VERNOME, 'FONE: ',MOSTRAR else: print 'Nome nao encontrado!' ## Opcao 'd', serve para deletar um registro da lista de contatos. # caso o nome dado esteja incorreto ou nao exista, python mostrara # uma mensagem de erro, isso eh novamente tratado aqui com 'db.has_key(DELETAR)' def deletar(): STATUS() if len(db) == 0: print 'Sua lista de Contatos esta vazia!' else: print print 's para sair' print DELETAR = raw_input('Digite o nome que quer apagar: ') if DELETAR == 's' or DELETAR == 'S': print 'Voltando ao menu principal' else: STATUS() if db.has_key(DELETAR): del db[DELETAR] STATUS() print 'O contato', DELETAR, 'foi apagado com sucesso!' ## Opcao 'a'. Para adicionar um registro ao banco de dados. # Caso o nome exista o registro # nao sera efetuado, caso o 'nome' tenha mais de 21 letras # ele sera rejeitado, isso eh assim para que se possa ter uma # saida bonita e organizada do 'STATUS'. def adicionar(): print print 's para sair' print MAXNAME = 21 NOME = raw_input('Nome: ') if db.has_key(NOME): print '\n', NOME,'ja existe' time.sleep(1) elif NOME in ['','\b']: print "Nome em branco nao e permitido" time.sleep(1) elif NOME == 's' or NOME == 'S': print 'Voltando ao menu principal...' elif len(NOME) > MAXNAME: print print ' Nome pode ter no maximo 21 letras!' print ' Experimente usar apenas o primeiro-nome + identificador!' print ' Ex: joao-escola' else: FONE = raw_input('Telefone: ') if FONE in ['s','S']: print 'Voltando ao menu principal...' elif FONE in ['','\b']: print 'Telefone em branco nao e permitido' time.sleep(1) else: db[NOME]=FONE STATUS() # Fechando o Db... def fecharDB(): db.close() print print 'Banco de dados fechado!' sys.exit() if __name__ == '__main__': abrirDB() Main()
Backup automatizado de toda a base MySQL
Python com CouchDB usando couchdbkit
Acompanhar status de uma replicação MySQL
Dígito verificador, módulo 11 simples, para uso interno no "postgresql" como
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Toda vez que tento atualizar o clamav me deparo com erros ao atualizar... (0)
Meu notebook não está funcionando no monitor secundário (2)
Queria saber se existe alguma forma de desistalar programa no ubuntu s... (2)
Quero saber sobre os melhores aplicativos de office para usar em 2024 ... (1)