Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- ExercÃcio extra.
- Alcides Mignoso e Silva
- 22/12/2014
- """
- #Criação da classe
- class Livro:
- def __init__(self, autor, titulo, colecao, valor):
- self.autor = autor
- self.titulo = titulo
- self.colecao = colecao
- self.valor = valor
- """
- ExercÃcio 1
- """
- #Gravar a lista em um arquivo de texto
- def gravar_uma_lista_de_livros(lista_de_registros):
- #Pega o nome do arquivo (tem que estar criado no diretorio do python).
- arquivo = input("Nome do arquivo + extensão (.txt, .docx): ")
- #Abrir o arquivo de texto que foi criado no diretório do python,
- #e o "w" o modo, para escrever (tá nos slides).
- arquivo = open(arquivo, "w")
- #Criar o que vai ser gravado no arquivo texto:
- for valor in lista_de_registros: #O for vai percorrer as listas e dar os valores dos livros para que dentro do for eles sejam gravados.
- adicionar = valor.autor + " | " + valor.titulo + " | " \
- + valor.colecao + " | " + str(valor.valor)
- #Adicionar os dados (formato: autor|titulo|colecao|valor)
- arquivo.write(adicionar + "\n") #write vai gravar a linha no arquivo e \n é a quebra de linha para não ficar tudo junto.
- #Agora só fechar o arquivo.
- arquivo.close()
- def gravar_um_so_livro(registro):
- #Pega o nome do arquivo (tem que estar criado no diretorio do python).
- arquivo = input("Nome do arquivo + extensão (.txt, .docx): ")
- #Abrir o arquivo de texto que foi criado no diretório do python,
- #e o "w" o modo, para escrever (tá nos slides).
- arquivo = open(arquivo, "w")
- #Criar o que vai ser gravado no arquivo texto:
- adicionar = registro.autor + " | " + registro.titulo + " | " \
- + registro.colecao + " | " + str(registro.valor)
- #Adicionar os dados (formato: autor|titulo|colecao|valor)
- arquivo.write(adicionar + "\n") #write vai gravar a linha no arquivo e \n é a quebra de linha para não ficar tudo junto.
- #Agora só fechar
- """
- ExercÃcio 2
- """
- def le():
- #Pega o nome do arquivo.
- arq = input("Nome do arquivo + extensão (.txt, .docx): ")
- #Abre arquivo no modo "r" (leitura)
- arquivo = open(arq, "r")
- #Le as linhas
- linhas = arquivo.readlines()
- #Fecha arquivo
- arquivo.close()
- #O for para percorrer as linhas e arquivar os dados em um lista
- lista = []
- for linha in linhas:
- linha = linha.strip() #No slide diz que é rstrip(), mais o certo é strip(), o rstrip() só retira os espaços da direita, o strip tira todos os espaços.
- if linha != "": #Se tiver algo na linha
- lista_separada = linha.split("|") #Pelo que eu vi, tira os | e separa os dados em uma lista. Ex: "A|B|C|D" = ["A", "B", "C", "D"], usa os | como separadores.
- a = lista_separada[0]
- b = lista_separada[1]
- c = lista_separada[2]
- d = lista_separada[3]
- add_livro = Livro(str(a), str(b), str(c), float(d))#Pega os elementos da lista e armazenam em um novo registro chamado livro.
- lista.append(add_livro)#Adiciona o elemento livro para a lista de registros de tipo livro.
- return lista #Depois do for, vai retornar a lista de registros do tipo Livro completa.
- def menu(operacao, registro): #Não achei um jeito de pedir um registro com o input, então, deve preencher o campo registro se quiser usar a opção A, caso contrário preencha ela com um "", vou ver com o professor como faz isso.
- if operacao == "a": #Se o tipo de operação for A, faça:
- livro = registro
- gravar_um_so_livro(livro) #Usa a função de antes para gravar o livro. (É compatÃvel).
- print("\nO livro foi gravado no arquivo de texto com sucesso!\n")
- elif operacao == "b": #Se não for A e for B faça:
- lista_dos_livros = le() #Usa a função do exercÃcio 2 pra armazenar os livros.
- resp = []
- cont = 0
- for valor in lista_dos_livros: #Percorrer os livros e mostrar o ID de cada um.
- print(">>> Livro ", cont, "=", valor.titulo, "<<<")
- cont += 1
- deletar = int(input("Qual é o ID do livro que você quer deletar?: \n>>> ")) #Pega o ID do livro que é para ser deletado.
- del lista_dos_livros[deletar] #Deleta o livro da lista
- #Agora temos que gravar novamente os dados no arquivo.txt, pois o que foi gerado foi um arquivo em lista.
- #Reaproveitei algumas partes da função de gravar e fiz a parte da gravação:
- #Temos que pedir o nome do arquivo denovo:
- arq = input("Qual é mesmo o nome do arquivo?: \n>>> ")
- arquivo = open(arq, "w") #Abrir o arquivo.
- #Criar o que vai ser gravado no arquivo texto:
- for valor in lista_dos_livros: #O for vai percorrer as listas e dar os valores dos livros para que dentro do for eles sejam gravados.
- adicionar = valor.autor + " | " + valor.titulo + " | " \
- + valor.colecao + " | " + str(valor.valor)
- #Adicionar os dados (formato: autor|titulo|colecao|valor)
- arquivo.write(adicionar + "\n") #write vai gravar a linha no arquivo e \n é a quebra de linha para não ficar tudo junto.
- #Agora só fechar o arquivo.
- arquivo.close()
- """
- Essas outras abaixo estavam no slide, eu não sabia que era só até a B e fui fazendo, quem quiser ver como é ta ai:
- PS: Não testei, devem ter erros.
- """
- if operacao == "c": #Se for C, faça:
- livro = input("Livro: ") #Pega o livro.
- lista_dos_livros = le() #Usa a função do exercÃcio 2 pra armazenar os livros.
- for valor in lista_dos_livros: #Percorrer a lista dos livros
- if valor.titulo == livro: #Se o valor autor do registro que o "for" está percorrendo for o tÃtulo do livro que está sendo procurado, imprima todos os valores do registro desse tÃtulo.
- print(valor.autor)
- print(valor.titulo)
- print(valor.colecao)
- print(valor.valor)
- elif operacao == "d": #Se não for A, B, C, e for D, faça:
- autor = input("Autor: ") #Pega o autor.
- lista_dos_livros = le() #Usa a função do exercÃcio 2 pra armazenar os livros.
- for valor in lista_dos_livros: #Percorrer a lista dos livros
- if valor.autor == autor: #Se o valor autor do registro que o "for" está percorrendo for o autor está sendo procurado, imprima todos os valores do registro desse tÃtulo.
- print(valor.autor)
- print(valor.titulo)
- print(valor.colecao)
- print(valor.valor)
- elif operacao == "e": #Se não for A, B, C, D e for E, faça:
- lista_dos_livros = le() #Usa a função do exercÃcio 2 pra armazenar os livros.
- for valor in lista_dos_livros: #Imprime todos os livros e seus valores.
- print(valor.autor)
- print(valor.titulo)
- print(valor.colecao)
- print(valor.valor)
- grava(livro) #Usa a função de antes para gravar o livro. (É compatÃvel).
- def main():
- print("###########################")
- print("## ExercÃcio extra ##")
- print("## Gerenciador de livros ##")
- print("## Algoritmos ##")
- print("###########################")
- op = input("\nQual operação você deseja efetuar? (a/b):\n>>> ") #Pega a operação
- if op == "a": #Se a operação for a A, faça:
- pergunta = int(input("Quer gravar um so livro [Opção 1] ou uma lista de livros [Opção 2]? [1 ou 2]. \n>>> ")) #Pega a opção.
- if pergunta == 1: #Se for a primeira opção, pegue os dados do livro:
- autor = input("Autor: ")
- titulo = input("TÃtulo: ")
- colecao = input("Coleção: ")
- valor = input("Valor: ")
- print("\nGravando...\n") #Fala que tudo está ocorrendo tudo bem, o livro está sendo gravado.
- import time #Frescura (a biblioteca time traz as funções relacionadas ao tempo)
- time.sleep(1) #Time.sleep(segundos) e a função sleep dá biblioteca time que faz com que o programa pare de executar por (segundos) segundos.
- print("Tudo foi gravado com êxito!\n") #Mensagem de êxito.
- menu("a", Livro(autor, titulo, colecao, valor)) #Executar a operação A, que no caso é a de guardar o livro com os dados fornecidos acima.
- elif pergunta != 1: #Se não for a primeira opção (será a segunda):
- pergunta = int(input("Quantos livros você quer gravar?: \n>>> ")) #Quantidade de livros que serão gravados.
- lista_livros = []
- for valor in range(pergunta): #O for vai criando uma lista com os dados da quantidade (pergunta) de livros fornecida, para depois serem gravados.
- autor = input("Autor: ")
- titulo = input("TÃtulo: ")
- colecao = input("Coleção: ")
- valor = input("Valor: ")
- lista_livros.append(Livro(autor, titulo, colecao, valor)) #Adiciona a lista (que será gravado no arquivo) os valores dos X livros. X = Valor obtido na pergunta.
- gravar_uma_lista_de_livros(lista_livros) #Grava os dados da lista dos livros no arquivo.
- print("\nGravando...\n") #Fala que tudo está ocorrendo tudo bem, o livro está sendo gravado.
- import time #Frescura (a biblioteca time traz as funções relacionadas ao tempo)
- time.sleep(1) #Time.sleep(segundos) e a função sleep dá biblioteca time que faz com que o programa pare de executar por (segundos) segundos.
- print("Tudo foi gravado com êxito!\n") #Mensagem de êxito.
- elif op == "b": #Se a operação for B, faça:
- menu("b", "") #Execute a menu com a operação B, que, no caso, é usada para deletar um livro do arquivo.
- import time #O mesmo esquema da frescura ali em cima.
- print("\nPerae, o livro está sendo deletado!") #Avisa que o livro está sendo deletado.
- time.sleep(1) #Espera 1 segundo...
- print("\nO livro foi deletado com sucesso!\n") #Deleta o livro
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement