yFone - Yes, outra agenda telefonica escrita em python! ;- )
Publicado por Murilo R. Esplugues 30/11/2004
[ Hits: 12.075 ]
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
Dump MySQL com relatório de logs por e-mail
Deixando o Gnome bonitão em qualquer distribuição
Como ativar o módulo de cancelamento de ruído no Pipewire
Como escolher o melhor escalonador de CPU para melhorar o desempenho da máquina
Curiosidade sobre DOOM Guy e Isabelle de Animal Crossing
Inicializando servidor Ubuntu na AWS e rodando apache em Container
Baixar e ler mangás grátis no Linux e no Android
Instalando Brave Browser no Fedora 40
Problema com o Apache NetBeans IDE 21 no Debian 12 (1)
GRUB do Debian 12 não detecta segundo Linux instalado em partição BTRF... (26)
Sistema trava no boot após atualização do driver nVidia (GeForce 1070)... (4)