Advertisement
Guest User

Exercicio

a guest
Dec 22nd, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.39 KB | None | 0 0
  1. """
  2. Exercício extra.
  3. Alcides Mignoso e Silva
  4. 22/12/2014
  5. """
  6. #Criação da classe
  7. class Livro:
  8. def __init__(self, autor, titulo, colecao, valor):
  9. self.autor = autor
  10. self.titulo = titulo
  11. self.colecao = colecao
  12. self.valor = valor
  13. """
  14. Exercício 1
  15. """
  16.  
  17. #Gravar a lista em um arquivo de texto
  18. def gravar_uma_lista_de_livros(lista_de_registros):
  19. #Pega o nome do arquivo (tem que estar criado no diretorio do python).
  20. arquivo = input("Nome do arquivo + extensão (.txt, .docx): ")
  21. #Abrir o arquivo de texto que foi criado no diretório do python,
  22. #e o "w" o modo, para escrever (tá nos slides).
  23. arquivo = open(arquivo, "w")
  24. #Criar o que vai ser gravado no arquivo texto:
  25. 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.
  26. adicionar = valor.autor + " | " + valor.titulo + " | " \
  27. + valor.colecao + " | " + str(valor.valor)
  28. #Adicionar os dados (formato: autor|titulo|colecao|valor)
  29. arquivo.write(adicionar + "\n") #write vai gravar a linha no arquivo e \n é a quebra de linha para não ficar tudo junto.
  30. #Agora só fechar o arquivo.
  31. arquivo.close()
  32.  
  33. def gravar_um_so_livro(registro):
  34. #Pega o nome do arquivo (tem que estar criado no diretorio do python).
  35. arquivo = input("Nome do arquivo + extensão (.txt, .docx): ")
  36. #Abrir o arquivo de texto que foi criado no diretório do python,
  37. #e o "w" o modo, para escrever (tá nos slides).
  38. arquivo = open(arquivo, "w")
  39. #Criar o que vai ser gravado no arquivo texto:
  40. adicionar = registro.autor + " | " + registro.titulo + " | " \
  41. + registro.colecao + " | " + str(registro.valor)
  42. #Adicionar os dados (formato: autor|titulo|colecao|valor)
  43. arquivo.write(adicionar + "\n") #write vai gravar a linha no arquivo e \n é a quebra de linha para não ficar tudo junto.
  44. #Agora só fechar
  45.  
  46. """
  47. Exercício 2
  48. """
  49.  
  50. def le():
  51. #Pega o nome do arquivo.
  52. arq = input("Nome do arquivo + extensão (.txt, .docx): ")
  53.  
  54. #Abre arquivo no modo "r" (leitura)
  55. arquivo = open(arq, "r")
  56.  
  57. #Le as linhas
  58. linhas = arquivo.readlines()
  59.  
  60. #Fecha arquivo
  61. arquivo.close()
  62.  
  63. #O for para percorrer as linhas e arquivar os dados em um lista
  64. lista = []
  65. for linha in linhas:
  66. 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.
  67.  
  68. if linha != "": #Se tiver algo na linha
  69. 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.
  70. a = lista_separada[0]
  71. b = lista_separada[1]
  72. c = lista_separada[2]
  73. d = lista_separada[3]
  74. add_livro = Livro(str(a), str(b), str(c), float(d))#Pega os elementos da lista e armazenam em um novo registro chamado livro.
  75. lista.append(add_livro)#Adiciona o elemento livro para a lista de registros de tipo livro.
  76.  
  77. return lista #Depois do for, vai retornar a lista de registros do tipo Livro completa.
  78.  
  79. 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.
  80. if operacao == "a": #Se o tipo de operação for A, faça:
  81. livro = registro
  82. gravar_um_so_livro(livro) #Usa a função de antes para gravar o livro. (É compatível).
  83. print("\nO livro foi gravado no arquivo de texto com sucesso!\n")
  84.  
  85. elif operacao == "b": #Se não for A e for B faça:
  86. lista_dos_livros = le() #Usa a função do exercício 2 pra armazenar os livros.
  87. resp = []
  88. cont = 0
  89. for valor in lista_dos_livros: #Percorrer os livros e mostrar o ID de cada um.
  90. print(">>> Livro ", cont, "=", valor.titulo, "<<<")
  91. cont += 1
  92. deletar = int(input("Qual é o ID do livro que você quer deletar?: \n>>> ")) #Pega o ID do livro que é para ser deletado.
  93. del lista_dos_livros[deletar] #Deleta o livro da lista
  94. #Agora temos que gravar novamente os dados no arquivo.txt, pois o que foi gerado foi um arquivo em lista.
  95. #Reaproveitei algumas partes da função de gravar e fiz a parte da gravação:
  96. #Temos que pedir o nome do arquivo denovo:
  97. arq = input("Qual é mesmo o nome do arquivo?: \n>>> ")
  98. arquivo = open(arq, "w") #Abrir o arquivo.
  99. #Criar o que vai ser gravado no arquivo texto:
  100. 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.
  101. adicionar = valor.autor + " | " + valor.titulo + " | " \
  102. + valor.colecao + " | " + str(valor.valor)
  103. #Adicionar os dados (formato: autor|titulo|colecao|valor)
  104. arquivo.write(adicionar + "\n") #write vai gravar a linha no arquivo e \n é a quebra de linha para não ficar tudo junto.
  105. #Agora só fechar o arquivo.
  106. arquivo.close()
  107.  
  108. """
  109. 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:
  110. PS: Não testei, devem ter erros.
  111. """
  112.  
  113. if operacao == "c": #Se for C, faça:
  114. livro = input("Livro: ") #Pega o livro.
  115. lista_dos_livros = le() #Usa a função do exercício 2 pra armazenar os livros.
  116. for valor in lista_dos_livros: #Percorrer a lista dos livros
  117. 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.
  118. print(valor.autor)
  119. print(valor.titulo)
  120. print(valor.colecao)
  121. print(valor.valor)
  122.  
  123. elif operacao == "d": #Se não for A, B, C, e for D, faça:
  124. autor = input("Autor: ") #Pega o autor.
  125. lista_dos_livros = le() #Usa a função do exercício 2 pra armazenar os livros.
  126. for valor in lista_dos_livros: #Percorrer a lista dos livros
  127. 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.
  128. print(valor.autor)
  129. print(valor.titulo)
  130. print(valor.colecao)
  131. print(valor.valor)
  132. elif operacao == "e": #Se não for A, B, C, D e for E, faça:
  133. lista_dos_livros = le() #Usa a função do exercício 2 pra armazenar os livros.
  134. for valor in lista_dos_livros: #Imprime todos os livros e seus valores.
  135. print(valor.autor)
  136. print(valor.titulo)
  137. print(valor.colecao)
  138. print(valor.valor)
  139. grava(livro) #Usa a função de antes para gravar o livro. (É compatível).
  140.  
  141. def main():
  142. print("###########################")
  143. print("## Exercício extra ##")
  144. print("## Gerenciador de livros ##")
  145. print("## Algoritmos ##")
  146. print("###########################")
  147. op = input("\nQual operação você deseja efetuar? (a/b):\n>>> ") #Pega a operação
  148. if op == "a": #Se a operação for a A, faça:
  149. 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.
  150. if pergunta == 1: #Se for a primeira opção, pegue os dados do livro:
  151. autor = input("Autor: ")
  152. titulo = input("Título: ")
  153. colecao = input("Coleção: ")
  154. valor = input("Valor: ")
  155. print("\nGravando...\n") #Fala que tudo está ocorrendo tudo bem, o livro está sendo gravado.
  156. import time #Frescura (a biblioteca time traz as funções relacionadas ao tempo)
  157. 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.
  158. print("Tudo foi gravado com êxito!\n") #Mensagem de êxito.
  159. 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.
  160. elif pergunta != 1: #Se não for a primeira opção (será a segunda):
  161. pergunta = int(input("Quantos livros você quer gravar?: \n>>> ")) #Quantidade de livros que serão gravados.
  162. lista_livros = []
  163. for valor in range(pergunta): #O for vai criando uma lista com os dados da quantidade (pergunta) de livros fornecida, para depois serem gravados.
  164. autor = input("Autor: ")
  165. titulo = input("Título: ")
  166. colecao = input("Coleção: ")
  167. valor = input("Valor: ")
  168. 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.
  169. gravar_uma_lista_de_livros(lista_livros) #Grava os dados da lista dos livros no arquivo.
  170. print("\nGravando...\n") #Fala que tudo está ocorrendo tudo bem, o livro está sendo gravado.
  171. import time #Frescura (a biblioteca time traz as funções relacionadas ao tempo)
  172. 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.
  173. print("Tudo foi gravado com êxito!\n") #Mensagem de êxito.
  174. elif op == "b": #Se a operação for B, faça:
  175. menu("b", "") #Execute a menu com a operação B, que, no caso, é usada para deletar um livro do arquivo.
  176. import time #O mesmo esquema da frescura ali em cima.
  177. print("\nPerae, o livro está sendo deletado!") #Avisa que o livro está sendo deletado.
  178. time.sleep(1) #Espera 1 segundo...
  179. print("\nO livro foi deletado com sucesso!\n") #Deleta o livro
  180.  
  181.  
  182.  
  183.  
  184. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement