{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Python para Desenvolvedores](http://ricardoduarte.github.io/python-para-desenvolvedores/#conteudo)\n", "===================================\n", "2ª edi\u00e7\u00e3o, revisada e ampliada\n", "-----------------------------------\n", "\n", "Respostas dos exerc\u00edcios V\n", "=============================\n", "_____________________________\n", "1\\. Implementar uma classe *Animal* com os atributos: nome, esp\u00e9cie, g\u00eanero, peso, altura e idade. O objeto derivado desta classe dever\u00e1 salvar seu estado em arquivo com um m\u00e9todo chamado \u201csalvar\u201d e recarregar o estado em um m\u00e9todo chamado \u201cdesfazer\u201d.\n", "\n", "Solu\u00e7\u00e3o:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pickle\n", "\n", "class Animal(object):\n", " \"\"\"\n", " Classe que representa um animal.\n", " \"\"\"\n", "\n", " attrs = ['nome', 'especie', 'genero', 'peso', 'altura', 'idade']\n", "\n", " def __init__(self, **args):\n", "\n", " # Crie os atributos no objeto a partir da lista\n", " # Os atributos tem None como valor default\n", " for attr in self.attrs:\n", " setattr(self, attr, args.get(attr, None))\n", " \n", " def __repr__(self):\n", "\n", " dic_attrs = {}\n", " for attr in self.attrs:\n", " dic_attrs[attr] = getattr(self, attr)\n", " return 'Animal: %s' % str(dic_attrs)\n", "\n", " def salvar(self):\n", "\n", " \"\"\"\n", " Salva os dados do animal.\n", " \"\"\"\n", " dic_attrs = {}\n", " for attr in self.attrs:\n", " dic_attrs[attr] = getattr(self, attr)\n", "\n", " pickle.dump(dic_attrs, file('a.pkl', 'w'))\n", "\n", " def desfazer(self):\n", "\n", " \"\"\"\n", " Restaura os \u00faltimos dados salvos.\n", " \"\"\"\n", " attrs = pickle.load(file('a.pkl'))\n", "\n", " for attr in attrs:\n", " setattr(self, attr, attrs[attr])\n", "\n", "# Teste\n", "gato = Animal(nome='Tinker', especie='Gato', genero='m',\n", " peso=6, altura=0.30, idade=4)\n", "\n", "gato.salvar()\n", "gato.idade = 5\n", "print gato\n", "gato.desfazer()\n", "print gato" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Animal: {'especie': 'Gato', 'genero': 'm', 'nome': 'Tinker', 'peso': 6, 'idade': 5, 'altura': 0.3}\n", "Animal: {'especie': 'Gato', 'genero': 'm', 'nome': 'Tinker', 'peso': 6, 'idade': 4, 'altura': 0.3}\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "2\\. Implementar uma fun\u00e7\u00e3o que formate uma lista de tuplas como tabela HTML.\n", "\n", "Solu\u00e7\u00e3o:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# O m\u00f3dulo StringIO implementa uma classe\n", "# de strings que se comportam como arquivos\n", "import StringIO\n", "\n", "def table_format(dataset):\n", " \"\"\"\n", " Classe que representa um animal.\n", " \"\"\"\n", "\n", " out = StringIO.StringIO()\n", " out.write('
%s | ' % col)\n", " out.write('