Baixe o app para aproveitar ainda mais
Prévia do material em texto
LINGUAGEM PHYTON 2.7 1 Linguagem Phyton 2.7 LINGUAGEM PHYTON 2.7 2 Linguagem Phyton 2.7 1. Ciência de dados 1.1 Data Science Nos dias de hoje, ter acesso a dados, informações e, acima de tudo, ao conhecimento faz com que empresas tenham vantagem competitiva num mercado totalmente mutável e altamente concorrente. Data Science ou Ciência de Dados permite obter acesso a estes dados de forma a interpretá-los do melhor modo possível, a fim de se obter vantagem competitiva. De acordo com Grus (2016), Data Science tem sido chamada de “o emprego mais sexy do Século 21”. Provavelmente por alguém que nunca tenha visitado um quartel do corpo de bombeiros. Segundo o mesmo autor, Data Science é um campo em evidência e está em alta; não requer muita investigação para encontrar prognósticos de analista de que nos próximos dez anos serão necessários bilhões e bilhões de cientistas de dados a mais do que existem nos dias de hoje. Uma definição definitiva acerca de Data Science ainda é muito difícil de encontrar. A figura a seguir tenta expressar o entendimento sobre Data Science. LINGUAGEM PHYTON 2.7 3 Data Science – Onde se encontra? De acordo com Mueller (2016), a ciência de dados se refere à exploração e à análise de dados disponíveis objetivando o desenvolvimento e a compreensão a respeito deles para se extrair o conhecimento para a formulação de ações e as tomadas de decisão, visando obter vantagem competitiva. A Ciência de Dados representa a interseção de três esferas cognitivas do conhecimento: habilidade de hacker, conhecimento de estatística e matemática e competências significativas. (MARTINS, 2015) A habilidade de hacker e o conhecimento em estatística e matemática se referem à especialidade de aprendizagem de máquina, ligada à inteligência computacional. A habilidade de hacker e a competência significativa se referem à zona de perigo. Por fim, a competência significativa e o conhecimento de estatística e matemática se referem à pesquisa tradicional. Mesmo ainda sendo muito difícil de encontrarmos uma definição realmente concreta acerca de Data Science, o importante é saber como fazer e o que fazer com os dados que serão encontrados para se tirar alguma vantagem disso. LINGUAGEM PHYTON 2.7 4 1.2 Data Sciencester Martins (2015) 15) define Data Sciencester como uma rede social especializada em assuntos de Data Science, própria para cientistas de dados que apesar de ser específica para cientista de dados, não possui sua própria atividade de Data Science, pois não é a sua origem. (GRUS, 2016) De um modo geral, esta “rede social” ainda se encontra muito insipiente e precisando ser mais bem configurada e formalizada para que se possa ter um aprendizado sólido e um melhor aproveitamento daquilo que a ciência de dados pode proporcionar para transformar dados, informações e conhecimento sobre vantagem competitiva para as empresas. (PROVOST & FAWCETT, 2013) 1.3 Cientista de dados Entende-se por cientista de dados o profissional capaz de processar, analisar e perceber dados a fim de obter uma melhor tomada de decisão. (PROVOST; FAWCETT, 2013) De acordo com Davenport & Patil (2012), cientistas de dados são uma nova geração de especialistas analíticos que têm as habilidades técnicas para resolver problemas complexos. LINGUAGEM PHYTON 2.7 5 Cientista de dados O cientista de dados tem que apresentar (além da sua especialidade) criatividade, curiosidade e conhecimento de mundo. Com isso, será capaz de traduzir dados em prol de certa tomada de decisão. Portanto, os cientistas de dados são, de certa forma, parte matemáticos, parte cientistas da computação e parte analistas de tendências, objetivando obter vantagem competitiva com foco no negócio das empresas. 1.4 Data Science para negócios Hoje em dia, qualquer organização tem seu negócio globalizado e já faz parte do mercado de dados e informações digitais, pois a internet está presente na vida de qualquer empresa, independentemente do seu setor de negócios. LINGUAGEM PHYTON 2.7 6 Na internet, os dados apresentam fluxos mais rápidos, tomando uma proporção gigantesca a necessidade de seu efetivo armazenamento. Isto porque o mundo gera informação exponencial e ao mesmo tempo, todos querem uma fatia desse bolo ou, nesse caso, dado. É preciso saber que os dados permitem que empresas entendam seus clientes, produtos e processos muito melhor, a fim de obter, portanto, vantagem competitiva. Dessa forma a Ciência de Dados difere das análises estatísticas e da Ciência da Computação em seu método, pois aplica aos dados coletados princípios científicos. A necessidade crescente desta nova abordagem, portanto, relaciona o Big Data ao Cloud Computing, o qual demanda o uso de diferentes tecnologias à análise estatística e de dados, propriamente dita. Para Martins (2015), a análise de dados tradicional das empresas tem sido tipicamente implantada para explicar tendências na extração de modelos interessantes dos dados, a partir de questões bem-formuladas, a fim de aprimorar o processo de tomada de decisão nas organizações. Geralmente a análise de dados apresenta como referência a arquitetura de negócios que pode ser definida como um conjunto de elementos organizados que se relacionam entre si, e representam a estrutura organizacional e comportamental de um sistema de negócio, permitindo a visualização das possíveis abstrações dos processos e das estruturas chave do negócio. (BOENTE, 2015) Contexto da arquitetura de negócios LINGUAGEM PHYTON 2.7 7 Na verdade, a arquitetura de negócio nada mais é que uma descrição dos aspectos significativos da organização. A arquitetura do aplicativo é uma descrição dos aplicativos de software que suportam o negócio, incluindo como esses aplicativos são utilizados e como interagem uns com os outros. Contudo, a ciência de dados está procurando descobrir conhecimento a partir de uma quantidade grande e pesada de dados que podem ser usados para tomar decisões e fazer previsões, e não simplesmente a interpretação de números, como é pensado pela maioria das pessoas. 1.5 Modelando data Num mercado altamente concorrente e globalizado, em que o importante é ser digital, acima de tudo, é crucial para toda empresa estar em perfeito alinhamento com uma filosofia baseada na Ciência de Dados para tomar decisões direcionadas a fim de conseguir vantagem competitiva. Modelagem de dados baseado em ciência A modelagem baseada em Ciência de Dados consiste na definição do que precisa ser encontrado a fim de se aprimorar um processo de tomada de decisão com base em dados, informações e conhecimento, visando gerar vantagem competitiva para as organizações. LINGUAGEM PHYTON 2.7 8 A partir dessa modelagem, muitos arquivos são gerados, desde datasets até scripts, roteiros, dicionários de dados, documentações diversas etc. De acordo com Martins (2015), todo dado é útil quando analisado cuidadosamente a partir do foco de negócio de certa organização, visando o aprimoramento do processo de tomada de decisão de uma empresa. 1.6 Pensando em análise de dados A análise de dados é fundamental para o sucesso de qualquer empresa, independentemente do seu setor de negócio. Por este motivo, a tendência é que o mundo dos negócios seja baseado na análise de dados concisos para aprimoramento do processo de tomada de decisão. Neste viés, surge a Ciência de Dados, pois a maioria dos dados, informações e conhecimentos que as empresas podem deter está disponível na grande teia mundial de computadores (a internet), dispostos em Big Data, acessáveis 24 horas por dia, 7 dias na semana, por meio da tecnologia de Cloud Computing. As empresas são influenciadas por fatores externos e internos, sendode importância vital para o sucesso da organização o processo de coleta, organização, análise, compartilhamento e monitoramento de dados, informações e conhecimento, que ofereçam suporte à gestão de negócios. (CORRAR; DIAS FILHO, 2007) Então, a Ciência de Dados acesso, análise e tratamento desses dados, que estão organizados logicamente em gigantescos repositórios de dados denominados Big Data, acessíveis pela internet através da tecnologia de computação em nuvem. De acordo com Provost & Fawcett (2013), no que se refere às operações, surge o termo “Big Data Analytics”, que é o trabalho analítico e inteligente de grandes volumes de dados, estruturados ou não, coletados, armazenados e interpretados por produtos de software de altíssimo desempenho LINGUAGEM PHYTON 2.7 9 1.7 Big Data Big Data se transformou em uma expressão genérica, mas em sua essência ela apresenta três desafios para as organizações. Em primeiro lugar, os líderes de negócios devem implementar novas tecnologias e, em seguida, prepararem-se para uma revolução em potencial na coleta e mensuração de informações. Mais importante que isso, a organização como um todo deve se adaptar a essa nova filosofia sobre como as decisões serão tomadas se o real valor do Big Data for compreendido. Um segundo aspecto importante do Big Data é o potencial de novas formas de mensuração. Por exemplo, já está amplamente disponível a tecnologia que permite que você transmita seus dados de saúde a seu médico enquanto você se exercita. Finalmente, as organizações devem se confrontar com uma nova filosofia sobre a tomada de decisões. Hoje, vivemos em um mundo que está sempre conectado e no qual as preferências dos consumidores mudam a cada hora. Eles podem checar vários canais ao mesmo tempo e traçar uma série de caminhos inusitados e diferentes para efetuar uma compra. O processo de compra se parece mais com um novelo de lã do que com o funil de compra previsível, serial ou linear que tínhamos no passado. Isso significa que as organizações precisam estar preparadas para implantar novos canais para tomada de decisão, alguns deles automatizados, que permitam respostas rápidas e ágeis às informações dos clientes. LINGUAGEM PHYTON 2.7 10 O Big Data De acordo com Amaral (2016), Big Data refere-se ao gigantesco volume de dados, estruturados e não estruturados, que impactam os negócios no dia a dia. No entanto, o mais importante não é a quantidade de dados, e sim o que as empresas fazem com os dados que realmente importam. Em outras palavras, é importante saber como garimpar os dados certos, na hora certa para o momento certo de tomada de decisão. Quando o termo Big Data é associado a Cloud Computing, significa dizer que se tem um gigantesco armazém de dados disponível pela web, cujos dados estão armazenados em inúmeros servidores dispostos em várias partes do mundo, remotamente ligados e disponíveis 24 horas por dia. 1.8 Cloud Computing Hoje, as empresas estão inseridas num mundo totalmente globalizado e num mercado altamente mutável, tendo a necessidade de sempre buscar mudanças em sua estrutura organizacional visando uma melhor forma de adequação de suas estratégias junto a um mercado altamente competitivo. As empresas também passam por transformações crescentes ligadas à questão da tecnologia. Tais transformações levam a modificações necessárias, não apenas de equipamentos, mas também nos processos de trabalho, na gestão de pessoas e na reestruturação de seu parque tecnológico. A implantação de projetos de Cloud Computing requer um redesenho da organização orientado por uma redefinição necessária de hardware, software, network e peopleware, já que existe uma eminente conexão estratégica entre pessoas, capital intelectual e um conjunto de novas tecnologias. (BOENTE, 2015) A Cloud Computing ou computação em nuvem se refere a um conjunto de recursos virtuais facilmente utilizáveis e acessíveis, tais como hardware, software, plataformas de desenvolvimento e serviços. (VERAS, 2013) http://www.partnerconsulting.com.br/partner-consulting-brasil-lanca-programa-corrigindo-rotas/ LINGUAGEM PHYTON 2.7 11 Computação em nuvem O modelo de Cloud Computing é formado por cinco características essenciais, quatro modelos de implantação e três modelos de serviços. As cinco características essenciais da computação em nuvem são: (1) Sob demanda (On-demand self-service): fornecedores de serviços em nuvem oferecem diversos recursos, como armazenamento e processamento, são habilitados e configurados segundo as necessidades da empresa, sem nenhum tipo de intervenção por parte de especialistas com o servidor, perfazendo, portanto, certa economia financeira, já que o cliente paga apenas pelos serviços que são efetivamente contratados; (2) Acesso à rede (Broad network access): para fornecer ou utilizar um serviço em nuvem, é preciso acessar uma rede padrão através de dispositivos que possuam uma plataforma específica. Tal acesso pode ser feito por meio de laptops, tablets, smartphones, computadores pessoais, dentre outros; (3) Compartilhamento de recursos (Resource pooling): os provedores de serviços em nuvem utilizam um modelo de compartilhamento de recursos conhecido como multi-inquilino (Multi-tenancy), que permite o compartilhamento físico, expansível de acordo com a demanda requerida por cada usuário, com vários usuários virtualmente, de modo que cada recurso fique isolado em sua máquina. A localização dos dados de cada usuário não é exata, dificultando, portanto, o seu controle total. Entretanto, LINGUAGEM PHYTON 2.7 12 alguns provedores de serviços em nuvem já permitem que o usuário escolha a localização do Data Center (país, estado etc.); (4) Controle de serviços (Measured service): implica no controle de todos os recursos contratados pelo usuário com a possibilidade de monitoramento, controle e relatórios de todos os recursos utilizados, dando maior transparência para quem contrata os serviços e para o próprio fornecedor de nuvem. (5) Elasticidade imediata (Rapid elasticity): capacidade de aumentar ou diminuir recursos físicos não utilizados dos servidores. Na maioria das vezes, é realizado de modo automático ou em alguns casos controlados pelos funcionários do provedor. Essa elasticidade imediata evita serviços ociosos, possibilitando, portanto, serviços mais baratos para os clientes, já que o provedor procura utilizar todos os recursos físicos do Data Center. As cinco características essenciais de Cloud Computing Os modelos de implantação de projeto de cloud computing são os seguintes: (1) Público (Public Cloud): as infraestruturas estão disponíveis para o uso do público em geral e são gerenciadas pelas empresas fornecedoras de serviços de nuvem, de forma que o usuário paga pelo que usar. As infraestruturas da nuvem pública são instaladas nas empresas LINGUAGEM PHYTON 2.7 13 fornecedoras e, muitas vezes, os usuários não possuem conhecimento da localização dos dados; (2) Privado (Private cloud): as infraestruturas são criadas para o uso exclusivo e particular de uma empresa, permitindo um maior controle sobre os dados. As nuvens privadas são gerenciadas pelo departamento de TI, terceirizadas ou de forma combinada, permitindo, portanto, que esses recursos sejam utilizados para fornecer serviços internos ou utilizados como mecanismo de regras de negócio da empresa. A infraestrutura da nuvem privada pode estar localizada dentro ou fora da empresa; Os quatro modelos de implantação de Cloud Computing (3) Comunitário (Community cloud): as infraestruturas são compartilhadas por várias organizações que possuem propósitos e interesses comuns. A infraestrutura da nuvem comunitária pode ser gerenciada pelo departamento de TI das empresas, terceirizadas ou de formacombinada, e a sua infraestrutura pode estar localizada dentro ou fora das empresas; (4) Híbrido (Hybrid cloud): as infraestruturas são compostas por dois ou mais modelos de implantação (nuvem privada, nuvem comunitária, nuvem pública). Em uma nuvem híbrida, os modelos de implantação trabalham como se fossem uma única nuvem. Em linha gerais, as empresas buscam utilizar esse modelo para ter maior controle sobre os dados. Os três modelos de serviços disponibilizados pela computação em nuvem são: LINGUAGEM PHYTON 2.7 14 (1) Software como serviço (Software as a Service – SaaS): modelo de serviço em que o fornecedor disponibiliza aplicativos que são acessados por meio de Web Browsers (navegadores web) ou via desktop. Esse modelo vem revolucionando a forma de como os aplicativos são comercializados, uma vez que o usuário não compra a licença do aplicativo, como normalmente acontece, mas paga apenas pelo serviço que utiliza. Existem diversos vários serviços disponíveis, como Google Docs, Google Tradutor, Photoshop Express Editor dentre outros, alguns gratuitos e outros pagos. Os três serviços de computação em nuvem (2) Plataforma como Serviço (Platform as a Service – PaaS): modelo de serviço destinado a desenvolvedores de soluções para Cloud Computing, pois fornece um ambiente com sistema operacional, frameworks para desenvolvimento de aplicativos em nuvem, controle de transações, serviços e também hospedagem para os aplicativos desenvolvidos (cloud apps). Cada provedor fornece suas próprias bibliotecas de desenvolvimento, banco de dados e infraestrutura para o desenvolvedor. Aqui, o usuário não pode administrar ou controlar os recursos da LINGUAGEM PHYTON 2.7 15 infraestrutura como processamento, armazenamento, memória entre outros recursos, mas tem controle sobre os aplicativos desenvolvidos e as configurações no ambiente de hospedagem do servidor; (3) Infraestrutura como serviço (Infrastructure as a Service – IaaS): modelo de serviço que oferece controle sobre processamento, armazenamento, redes e outros recursos básicos da computação em nuvem. Aqui, o usuário poderá instalar o sistema operacional e as aplicações para o funcionamento da máquina virtual, além de ter total acesso para administrar ou controlar a infraestrutura do servidor, o usuário ainda tem controle sobre o sistema operacional, armazenamento das informações, controle de memória, aplicativos implantados e, em alguns casos, o controle do firewall do host e recursos da rede pelo painel de administração do fornecedor. Mudança no perfil dos serviços Dessa forma, existe uma mudança significativa no perfil dos serviços quando estamos trabalhando com Cloud Computing. Assim, quando uma empresa implanta um novo tipo de tecnologia, em particular Cloud Computing, a utilização desta estará sujeita às influências do clima e da cultura organizacional, requerendo, portanto, que essas influências sejam analisadas como peças fundamentais na gestão estratégica de qualquer empresa, independentemente do seu porte. LINGUAGEM PHYTON 2.7 16 2. Conhecendo o Phyton 2.1 Histórico de Phyton Neste capítulo iremos conhecer a linguagem de programação Phyton 2.7, suas características e particularidades. Python é uma linguagem de programação interpretada, de código-fonte aberto e disponível para diversos tipos de sistemas operacionais. Símbolo do Phyton Diferentemente de outras linguagens de programação tradicional, como C# e Java, Phyton não é uma linguagem compilada (traduzida para uma linguagem da máquina), mas lida e “interpretada" por outro programa (chamado de interpretador), que traduz para a máquina o que seu programa quer dizer. Os integrantes e/ou participantes da Data Sciencester, quando passam por treinamentos em suas empresas, em linha geral, são obrigados a estudar a linguagem de programação Phyton. Dessa forma, todo o cientista de dados domina ou pelo menos simplesmente tem a obrigação de conhecer a linguagem de programação Python. De acordo com Grus (2016), qualquer pessoa pode baixar Phyton em <https://phyton.org/>. LINGUAGEM PHYTON 2.7 17 Phyton Software Fundation A partir daí, um download poderá ser feito para se obter uma versão da linguagem de programação Phyton (Phyton 2.7, no nosso caso). Página para download de Phyton Embora a versão mais recente seja Phyton 3.4, todos os códigos-fonte que iremos trabalhar neste curso foram escritos em Phyton 2.7, pois, segundo Grus (2016), a comunidade do Data Science ainda está presa a esta versão. Depois de instalado, um ícone aparecerá na sua área de trabalho para que você possa acessar o ambiente de programação Phyton. LINGUAGEM PHYTON 2.7 18 Ícone do Phyton A seguir, após a execução de Phyton, uma tela com o ambiente de programação Phyton permanecerá aberta para a criação e a adição de programas de computador. Ambiente de programação Phyton Para a escrita dos códigos-fonte em Phyton, sugere-se a instalação e uso do editor Notepad++ <https://notepad-plus-plus.org/>. O Notepad++ é um editor de texto e de código-fonte aberto sob a licença GPL (GNU General Public License). Ele é distribuído como software livre e suporta várias linguagens de programação rodando sob o sistema operacional Windows e Linux. LINGUAGEM PHYTON 2.7 19 Download do Notepad++ Em seguida, pode-se observar a tela do ambiente de edição de programas (código-fonte Phyton) disponibilizado pelo Notepad++: Ambiente do Notepad++ LINGUAGEM PHYTON 2.7 20 2.2 A linguagem de programação Python foi concebido no final do ano de 89 por Guido van Rossum no Instituto de Pesquisa Nacional para Matemática e Ciência da Computação (CWI), nos países baixos. Um dos focos primordiais da linguagem de programação Python era aumentar a produtividade do programador. Foi desenvolvida com base na linguagem ABC e possui parte da sintaxe derivada da linguagem C. Python é uma linguagem de programação de alto nível, interpretada, de script, orientada a objetos, de tipagem dinâmica e forte. (MUELLER, 2016) Phyton é de código aberto e gerenciado pela organização sem fins lucrativos denominada Phyton Software Fundation. Ela é uma linguagem de programação fortemente utilizada na Data Sciencester por todos os cientistas de dados. Rede Social – Data Sciencester Como se trata de uma linguagem de programação voltada para soluções script, embasada sob o paradigma orientado a objetos, é ideal para os cientistas de dados de toda a Data Sciencester. 2.3 Características e particularidades Python é uma linguagem de propósito geral de alto nível que apresenta como características a orientação a objetos e a imperatividade, funcional e procedural. LINGUAGEM PHYTON 2.7 21 Devido às suas características, ela é principalmente utilizada para processamento de textos, dados científicos e criação de CGIs para páginas dinâmicas para a web. Os cientistas de dados costumam utilizar a versão Phyton 2.7, embora a versão 3.4 seja a mais atual. O vocabulário de Python é bastante reduzido. Chamamos este vocabulário de “palavras reservadas”. Estas são as palavras que possuem um significado muito especial em Python, pois quando identificadas em um programa possuem apenas um significado em Python. Phyton possui o que chamamos de tipagem dinâmica, ou seja, ela pode mudar a cada nova entrada de dados em uma variável. Com isso, a quantidade de tempo de planejamento prévio é reduzida e é considerada um mecanismo importante para a flexibilidade e simplicidade das funções da linguagem de programação Phyton. Outra característica importante: em Phyton, não existe um delimitador específico para blocos de código, então essa “delimitação” é feita por meio de indentação, garantindo, portanto,que o código Phyton seja sempre legível. >>> print “O numero eh “ ... if a > 0: ... print “positivo” ... else: ... print “negativo” ... exit( ) O segredo da linguagem de programação Phyton é a indentação das linhas de código, delimitando, portanto, os blocos de código de um programa de computador. 2.4 Terminologia As linguagens de programação, em sua grande maioria, são ditas compiladas, pois necessitam de um programa especial (denominado compilador) para traduzir para máquina o que o programa quer realmente dizer. LINGUAGEM PHYTON 2.7 22 Por definição, um compilador é um programa de computador que, a partir de um código-fonte escrito em uma linguagem de programação, cria um programa semanticamente equivalente, denominado código-objeto. Processo de compilação Portanto, um compilador traduz um programa de uma linguagem de alto nível, textual, facilmente entendível, para a linguagem de máquina, baixo nível, específica para um processador e sistema operacional. Tecnicamente, o processo de compilação é composto de duas fases: análise e síntese. A análise tem como objetivo entender o código-fonte e representá-lo em uma estrutura intermediária. A síntese constrói o código-objeto a partir desta representação intermediária. A linguagem de máquina parece ser bastante simples, já que só existem zero e um (0 e 1), código binário, mas sua sintaxe é ainda mais complexa do que Python. Dessa forma, pouquíssimos programadores já escreveram em linguagem de máquina. Costuma-se construir diversos tradutores para permitir que programadores escrevam em linguagens de alto nível, tais como Python ou JavaScript, e eles convertem os programas em código que possa ser traduzido para linguagem de máquina para ser executado pela UCP. LINGUAGEM PHYTON 2.7 23 Como a linguagem de máquina está associada ao hardware do computador, ela não é portável em diferentes tipos de hardware. Programas escritos em linguagens de alto nível podem ser utilizados em diferentes computadores, utilizando-se um interpretador diferente ou recompilando o código para criar uma versão do programa em linguagem de máquina para o novo computador (de nova arquitetura). Interpretadores são programas de computador que leem um código-fonte de uma linguagem de programação interpretada, como é o caso da linguagem Phyton, e o converte em código executável. O interpretador lê e “interpreta” linha a linha do código-fonte, convertendo-o em código-objeto ou bytecodes à medida que vai executando o programa ou, em alguns casos, converte todo o código-fonte para depois executá-lo. Processo de interpretação Em princípio, pode-se implementar compiladores e interpretadores para qualquer linguagem de programação. A escolha de criar um compilador ou interpretador para LINGUAGEM PHYTON 2.7 24 certa linguagem de programação depende exclusivamente da proposta da própria linguagem de programação. 2.5 Escrevendo programas Escrever programas no interpretador Python é uma boa maneira de conhecer as características da linguagem, mas não é recomendado para resolver problemas mais complexos. Quando queremos escrever um programa, usamos um editor de texto para escrever instruções em Python em um programa denominado Script (recomenda-se o editor Notepad++). Por convenção, Scripts em Python possuem nomes terminados com “.py”. Dessa forma, um programa em Phyton sempre apresentará a extensão “.py”. Observe como exemplo a linha de código do “programa1.py”. >>> print “Alo Mundo!” Em geral, você não tem apenas uma linha de código de programação, seja em Phyton ou seja, em qualquer outra linguagem de programação. Veja: >>> print “Primeira Instrução” ... print “Segunda Instrução” ... print “Terceira Instrução” ... print “Quarta Instrução” ... print “Enésima Instrução” 2.6 Bloco de programas Existem alguns padrões conceituais de baixo nível que usamos para a construção de programas de computador. Estas construções não são apenas para programas em Python, elas são parte de todas as linguagens de programação, desde a linguagem de máquina até as linguagens de alto nível. Temos então: LINGUAGEM PHYTON 2.7 25 - Entrada: permite ao programa obter dados por meio de leitura de dados de um arquivo ou até mesmo por meio de um sensor como microfone ou GPS, ou simplesmente digitados por teclado. - Saída: permite mostrar os resultados dos programas na tela ou impressora ou os armazena em um arquivo. - Execução sequencial: permite executar as sentenças uma após a outra, na ordem em que aparecem no Script, seguindo sua ordem de escrita. - Execução condicional: permite verificar algumas condições e executa uma rotina ou comando específico acerca da condição determinada. - Execução de repetição: permite executar um conjunto de instruções repetidamente. - Reúso: permite a reutilização de instruções em outros programas. Tanto em Phyton como em qualquer outra linguagem de programação, existem três tipos de erros clássicos decorrentes de um programa de computador. Na medida em que seus programas se tornem sofisticados, você poderá encontrar os seguintes tipos de erros de programação: - Erros de sintaxe: significa que você violou as regras de “gramática” do Python. O Python faz o possível para apontar para a linha e o caractere que ele percebeu que estão confusos. A única coisa complicada em erros de sintaxe é que às vezes os erros que precisam ser corrigidos estão antes do local que o Python identificou. Dessa forma, a linha e o caractere que o Python indicar em um erro de sintaxe são apenas pontos iniciais de investigação. - Erros de lógica: ocorre quando o programa está com a sintaxe correta mas há um erro na ordem das sentenças e talvez um erro na relação entre as sentenças. Um programa de computador apresenta linhas de instruções sequenciais que devem ser escritas logicamente para que o resultado do programa faça algum tipo de sentido no contexto ao qual foi implementado. - Erros de semântica: Um erro de semântica ocorre quando sua descrição de passos está sintaticamente correta e na ordem correta mas há simplesmente um erro no programa. O programa está correto, no entanto não faz o que deveria fazer. LINGUAGEM PHYTON 2.7 26 3. Explorando o Phyton 2.7 3.1 Valores e tipos Valores são elementos básicos nos quais um programa trabalha, como uma letra ou um número. (MARTINS, 2015) Os valores apresentam tipos diferentes. Por exemplo, “1” representa um valor do tipo inteiro, “5.5” representa um valor do tipo real e ‘Boente’ representa um valor do tipo cadeia de caracteres, também conhecida como String. O interpretador Phyton pode identificar facilmente Strings porque elas são escritas entre aspas simples, ‘Boente’, por exemplo. Veja as instruções a seguir: >>> print 1 1 >>> print 5.5 5.5 >>> print ‘Boente’ Boente Note que os valores do tipo inteiro e real não precisaram ser colocados entre aspas simples. No entanto, a String ‘Boente’ necessitou das aspas para ser exibida. Para a exibição dos valores, utilizamos a instrução print, que se refere a um comando de saída, output. O interpretador Phyton também poderá auxiliá-lo a identificar o tipo de um valor caso tenha alguma dúvida. Observe a seguir: >>> type (1) <type ‘int’> >>> type (5.5) <type ‘float’> LINGUAGEM PHYTON 2.7 27 >>> type (‘Boente’) <type ‘str’> Note que a instrução type foi utilizada para identificar o tipo referente a certo valor. No nosso exemplo: no primeiro caso, inteiro (int); no segundo caso, real (float) e no terceiro, caso String (str). A seguir, serão apresentados os principais tipos builtin da linguagem de programação Python: int: para números inteiros. float: para números reais. str: para cadeiade caracteres (String). bool: armazena true ou false (Lógico ou Booleano). list: para agrupar um conjunto de elementos (lista de elementos). tupla: igual ao tipo list, porém imutável. dic: para agrupar elementos que serão recuperados por chave. 3.2 Variáveis e constantes Uma variável representa tecnicamente um espaço reservado de memória em que se pode armazenar temporariamente dados. Mueller (2016) afirma que uma variável nada mais é que um nome dado para certo valor. Tecnicamente, pode ser chamada de variável significativa quando o nome dado à variável se referir claramente ao conteúdo que deverá ser armazenado nela. O operador de atribuição do Phyton, símbolo de igualdade (=), permite criar novas variáveis, atribuindo valores para elas, conforme exemplo a seguir: >>> x = 1 >>> y = 5.5 >>> z = ‘Boente’ LINGUAGEM PHYTON 2.7 28 Nesses exemplos iniciais, criou-se três variáveis: “x”, do tipo inteira; “y”, do tipo real; e “z” do tipo String. No entanto, os nomes utilizados para estas variáveis não são considerados significativos. A seguir, pode-se observar o mesmo exemplo com o uso de variáveis significativas: >>> numero = 1 >>> nota = 5.5 >>> nome = ‘Boente’ É claro que embora, estejamos utilizando uma variável significativa, se o usuário tiver a possibilidade de entrar com dados, ele poderá não respeitar o real valor requerido pela variável. Para a criação dos nomes das variáveis, deve-se iniciar com letras, maiúsculas ou minúsculas, que podem vir acompanhadas de números, sendo ainda possível a utilização do caractere ‘_’ na composição do nome da variável. Qualquer outro caractere será considerado inválido, inclusive as chamadas palavras reservadas (aquelas que são específicas do Phyton, conforme ilustrado no quadro a seguir). As 31 palavras reservadas do Phyton And elif if print as else import raise assert except in return break exec is try class finally lambda while continue for not with def from or yield del global pass Exemplos de variáveis significativas realmente válidas: Aluno_1, salario_bruto, nota_1_bim etc. LINGUAGEM PHYTON 2.7 29 Uma constante em Phyton são “variáveis” cujos valores não são alterados no decorrer do programa. A forma de criação de uma constante é idêntica à de uma variável. Então, para se diferenciar um a variável de uma constante, busca-se escrever as constantes com letras maiúsculas. Observe a seguir: >>> numero = 7 >>> idade = 42 >>> PI = 3.14159265 >>> MAX = 100 Nas duas primeiras linhas de código, tem-se as variáveis número e idade, e nas duas últimas linhas tem-se as constantes PI e MAX. 3.3 Sentenças e expressões De acordo com Grus (2016), uma sentença refere-se a uma unidade de código que o interpretador Python pode executar. Quanto uma sentença no modo interativo do Phyton é digitada, o interpretador executa e exibe o resultado, caso haja. Quando nos referimos a scripts Phyton, geralmente eles contêm uma sequência de sentenças, e, caso exista mais de uma, os resultados aparecem cada vez que as declarações são executadas, a exemplo do script abaixo: print 1 num = 5.5 print valor Que irá gerar a seguinte saída: 1 5.5 LINGUAGEM PHYTON 2.7 30 Como a atribuição do valor 5.5 para a variável num não gera saída, então não terá output para esta linha de código. Toda vez que for necessário dar uma pausa na tela de saída para que o usuário possa ler as informações impressas como saída de um programa Phyton, busca-se utilizar a função raw_input( ), ou seja, faz-se uma pausa temporária até que algo seja digitado pelo usuário. Veja como fica o programa anterior com o raw_input( ): print 1 num = 5.5 print valor raw_input( ) Quanto à saída produzida pelo programa exemplo, 1 e 5.5, nada seria alterado, portanto. 3.4 Operadores e operandos Os operadores são símbolos especiais utilizados para representar certas operações aritmética. Os operandos são valores que os operadores designam às variáveis. Os operadores +, -, *, / e ** são de adição, subtração, multiplicação, divisão e exponenciação, respectivamente. Podemos observar os tipos de operadores existentes no Phyton através das tabelas de operadores ilustradas no estudo de tipos de operadores. LINGUAGEM PHYTON 2.7 31 3.5 Tipos de operadores 3.5.1 Operadores aritméticos Símbolo Descrição Exemplo + Adição de valores a + b - Subtração de valores a - b * Multiplicação de valores a * b / Divisão de valores reais a / b // Divisão de valores inteiros a // b ** Exponenciação de valores a ** b % Resto da divisão (módulo) a % b 3.5.2 Operadores relacionais Símbolo Descrição Exemplo > Maior que a > b < Menor que a< b >= Maior ou igual a >= b <= Menor ou igual a <= b == Igualdade a == b != Diferença a != b 3.5.3 Operadores lógicos e deslocamento de bits LINGUAGEM PHYTON 2.7 32 Símbolo Descrição Exemplo and E lógico a > b and b < c or Ou lógico a > b or b < c not Não lógico not (a > b) << Deslocamento de bits à esquerda a << b >> Deslocamento de bits à direita a >> b & Operador bit a bit AND a & b | Operador bit a bit OR a | b ^ Operador bit a bit XOR a ^b ~ Operador bit a bit NOT ~a 3.5.4 Operador com funções anônimas Permite a criação de funções que não têm um nome especificado. Elas ainda representam um recurso interessantíssimo na linguagem de programação Phyton quando se trata de valor de parâmetro, call-back. 5.5.4.1 Map( ) A função map( ), dita como função “builtin”, é implementada diretamente no interpretador Python, podendo ser utilizada sem a importação de um módulo específico. Esta função, em especial, permite aplicarmos uma função a cada elemento de uma lista, a qual devolve uma nova lista contendo os elementos resultantes da aplicação da função especificada. import math lista1 = [1, 4, 9, 16, 25] lista2 = map(math.sqrt, lista1) LINGUAGEM PHYTON 2.7 33 print lista2 raw_input() O programa produzirá a seguinte saída: [1.0, 2.0, 3.0, 4.0, 5.0] Esta saída se refere à raiz quadrada de cada um dos números assinalados na lista apresentada e nomeada como lista1. Para tanto, foi necessário utilizarmos a biblioteca padrão de funções matemáticas (import math) e em seguida a função para retornarmos à raiz quadrada de um número, math.sqrt. 5.5.4.2 Filter( ) A função filter( ) permite ao usuário filtrar elementos de uma determinada sequência, cujas diretrizes de filtragem serão definidas pelo programador Phyton. Observe o exemplo a seguir: def maior_que_zero(x): return x > 0 valores = [10, 4, -1, 3, 5, -9, -11] print filter(maior_que_zero, valores) raw_input() A saída produzida pelo programa é a seguinte: [10, 4, 3, 5] Ou seja, todos os números maiores que zero. 5.5.4.3 Reduce( ) e lambda LINGUAGEM PHYTON 2.7 34 A função reduce( ) é outra função do tipo builtin do Python cuja utilidade está na aplicação de uma função a todos os valores do conjunto, de forma a agregá-los todos em um único valor. Ela é muito utilizada com a expressão lambda. Na verdade, lambda na mais é que uma função anônima que aceita argumentos, inclusive operacionais, e que suporta apenas uma expressão. Observe o script exemplo a seguir: valores = [1, 2, 3, 4, 5] soma = reduce(lambda x, y: x + y, valores) print soma raw_input( ) Irá gerar como saída 15, que representa a soma de todos os números da sequência definida. 3.5.5 Precedência dos operadores Operadores Descrição ** Index (prioridade mais alta) ~ + - Bit a bit inversão, além de unário e menos (os dois últimos método chamado + e @ - @) * /% // Multiplicação, divisão e módulo tomar divisível+ - Adição e subtração >> << Certo, operador de esquerda & Bit 'E' ^ | Operadores bit a bit <= <>> = Relacional LINGUAGEM PHYTON 2.7 35 <> ==! = Operador de igualdade =% = / = @ = - = + = * = * = Operadores de atribuição É, não está Operador de identidade Em, não em Operador de membro Ou, não e Operadores lógicos 3.5.6 Operações com String (concatenação) O operador ´+´ funciona com Strings, mas não é uma adição no sentido matemático. Ele tem a função de concatenação de duas ou mais Strings, isto é, proporciona a união de Strings. Veja o exemplo a seguir: nome = ‘Alfredo’ sobrenome = ‘ Boente’ print nome + sobrenome Dessa forma, a saída produzida pelo programa será Alfredo Boente. 3.6 Entrada e saída Existem algumas formas de realizar a entrada de dados, input, em Phyton. Vamos observar algumas delas: #Primeiro exemplo de entrada e saída print 'Escreva algo:' entrada = raw_input( ) LINGUAGEM PHYTON 2.7 36 print 'Voce escreveu... ' + entrada raw_input( ) No primeiro programa de entrada e saída, utilizou-se então uma variável chamada “entrada” para receber certo conteúdo digitado via teclado através da instrução raw_input( ), permitindo, portanto, que aconteça o processo de entrada de dados, input. Já para o processo de output, saída de informações, utilizou-se a instrução print. #Segundo exemplo nome = raw_input('Qual o seu nome? ') print 'Ola ' + nome raw_input( ) No segundo programa, a mensagem para entrada de dados já é inserida automaticamente na própria instrução raw_input( ), permitindo, portanto, que o valor lido pela variável “nome” ocorra ao lado da mensagem exibida. Para fazer a entrada de dados na próxima linha, conforme o primeiro exemplo, pode- se utilizar o caractere especial para pular linha, new line, ‘\n’. Observe o próximo exemplo: #Terceiro exemplo nome = raw_input('Qual o seu nome?\n') print nome + ' tudo bem?' raw_input( ) Como a entrada de dados realizada através da instrução raw_input() refere-se a uma cadeia de caracteres, para ler um valor numérico é necessário convertê-lo em número. Veja os exemplos a seguir: #Quarto exemplo num1 = raw_input('Primeiro Numero: ') LINGUAGEM PHYTON 2.7 37 num2 = raw_input('Segundo numero: ') print int(num1) + int(num2) raw_input( ) No quarto exemplo, são lidos dois valores, que são convertidos para inteiro através da função int( ) para que seja possível realizar a operação aritmética. Assim, supondo-se que os valores lidos sejam 4 e 5, respectivamente, será exibido como resposta 9, pois o objetivo era somar os dois números lidos via teclado. No entanto, partindo da mesma hipótese, caso não seja feita a conversão de tipo, o resultado impresso será igual a 45, pois o Phyton interpretará como concatenação de caracteres. Veja n o exemplo a seguir: #Quinto exemplo num1 = raw_input('Primeiro Numero: ') num2 = raw_input('Segundo numero: ') print num1 + num2 raw_input( ) Assim como foi feito para a conversão de número inteiro, pode-se utilizar a função float( ) para a conversão de número real. Observe o próximo exemplo: #Sexto exemplo num1 = raw_input('Primeiro Numero: ') num2 = raw_input('Segundo numero: ') print float(num1) + float(num2) raw_input( ) Considerando que os valores fornecidos foram 5.5 e 2.4, o resultado produzido será 7.9. LINGUAGEM PHYTON 2.7 38 Você também poderá realizar a conversão de forma direta, através da própria instrução de entrada de dados. Veja o exemplo a seguir: #Setimo exemplo num1 = int(raw_input('Entre com um Numero Inteiro: ')) num2 = float(raw_input('Entre com um Numero Real: ')) soma = num1 + num2 print soma raw_input( ) 4. Estruturas de controle 4.1 Expressões booleanas e operadores lógicos Uma expressão booleana é aquela que pode assumir dois valores lógicos: verdadeiro ou falso. >>> 1 == 1 TRUE >>> 1 == 2 FALSE O operador de igualdade, ‘==’, é apenas um dos operadores de comparação utilizados pela linguagem de programação Phyton. Veja outros tipos de operadores de comparação válidos: a != b (a não é igual à b) a > b (a é maior do que b) a < b (a é menor do que b) a >= b (a é maior ou igual à b) LINGUAGEM PHYTON 2.7 39 a <= b (a é menor ou igual à b) a is b (a é o mesmo que b) a is not b (a não é o mesmo que b) Devemos lembrar que o símbolo ‘=’ em Phyton serve para a atribuição de valores, não para a representação de igualdade. Assim como nas demais linguagens de programação, existem três operadores lógicos para expressar uma conjunção, disjunção e negação. Os operadores lógicos em Phyton são os seguintes: and, or e not. Observe a semântica utilizada: a > 0 and a < 5 Será verdadeiro apenas se a for maior que 0 e menor que 5. Portanto, ambas as condições devem ser satisfeitas, obrigatoriamente. a > 0 or a < 5 Será verdadeiro se pelo menos uma das condições for verdadeira. not(a > b) Será verdadeira somente se a > b for falso. 4.2 Operadores booleanos de Strings-in A linguagem de programação Phyton tem o recurso de entradas e saídas formatadas. Para tanto, a substituição em Strings acontece através do uso do operador %. Para que o interpretador Phyton possa substituir Strings, utiliza-se o símbolo % acompanhado da letra “s” (%s); Já para a substituição de valores numéricos, por LINGUAGEM PHYTON 2.7 40 exemplo, utiliza-se o símbolo % acompanhado da letra “d” (%d) para números inteiros, e o símbolo % acompanhado da letra “f” (%f) para números reais. Então, tomando como base o exemplo ilustrado na unidade 3, a substituição ocorre da seguinte forma: #Código do script original da unidade 3 print 1 print 5.5 print ‘Boente’ raw_input( ) #Codigo do Novo script num1 = 1 num2 = 5.5 nome = 'Boente' print '%d' % num1 print '%f' % num2 print '%s' % nome raw_input( ) A saída produzida será a seguinte: LINGUAGEM PHYTON 2.7 41 Note que o valor 5.5 no formatador para números reais foi impresso como 5.500000. Para que isto não aconteça, você poderá definir o número de casas inteiras e o número de casas reais no próprio formatador %f. Veja no exemplo: #Código do Novo script com definição de número de casas inteiras e decimais do número real num1 = 1 num2 = 5.5 nome = 'Boente' print '%d' % num1 print '%2.1f' % num2 print '%s' % nome raw_input( ) A saída produzida será a seguinte: LINGUAGEM PHYTON 2.7 42 Note que foram assumidas através do formatador %2.1f duas casas inteiras e uma casa decimal (limitador). 4.3 Comparações entre Strings Em Phyton, a comparação de Strings ocorre da mesma forma da comparação de dois valores numéricos assim: num1 = 4 num2 = 5 num3 = 4 print num1 == num2 print num1 == num3 raw_input( ) No primeiro print teremos como resposta FALSE, pois 4 não é igual a 5. Não obstante, no segundo print teremos como resposta TRUE, pois 4 é igual a 4. Vamos ver como funciona para cadeia de caracteres Strings: LINGUAGEM PHYTON 2.7 43 palavra1 = 'Ana' palavra2 = 'Maria' palavra3 = 'ana' palavra4 = 'Ana' print palavra1 == palavra2 print palavra1 == palavra3 print palavra1 == palavra4 raw_input( ) Analisando o script apresentado, no primeiro print teremos como resposta FALSE, pois Ana não é igual a Maria. No segundo print, também teremos FALSE como resposta, pois Ana não é igual a ana. Isto porque o interpretador Phyton faz a distinção entre letras maiúsculas e letras minúsculas, ou seja, tecnicamente dizendo, a linguagem de programação Phyton é Case Sensitive. O Phyton permite a manipulação de outros métodos com Strings. Vejamos então alguns deles: O método upper( ) permite transformartodas as letras de uma cadeia de caracteres em maiúscula, enquanto o método lower( ) permite transformar todas as letras de uma cadeia de caracteres em minúscula. Observe o exemplo abaixo: #Conversão de letras maiusculas e minusculas palavra = 'Alfredo Boente' print palavra print palavra.upper() print palavra.lower() raw_input( ) A saída produzida pelo Script fica da seguinte forma: Alfredo Boente LINGUAGEM PHYTON 2.7 44 ALFREDO BOENTE alfredo boente O método len( ) devolve um número inteiro referente à quantidade de caracteres de uma palavra. Veja o exemplo a seguir, o qual o número 14 referente ao total de caracteres da palavra ‘Alfredo Boente’: palavra = ‘Alfredo Boente’ print len(palavra) raw_input( ) A saída produzida será a seguinte: LINGUAGEM PHYTON 2.7 45 O método count( ) retorna um número inteiro referente à quantidade de um caractere específico. No exemplo a seguir, o número 3 é referente ao total de letras ‘e’: palavra = ‘Alfredo Boente’ print palavra.count(‘e’) raw_input( ) A saída produzida será a seguinte: LINGUAGEM PHYTON 2.7 46 O método find( ) indica a localização do “vetor” de caracteres em que se encontra a palavra, ou parte dela, que se deseja encontrar. Veja o exemplo a seguir, que retorna o número 10 referente à posição do vetor de caracteres em que se inicia a palavra ‘ente’: palavra = ‘Alfredo Boente’ print palavra.find(‘ente’) raw_input( ) A saída produzida será a seguinte: 4.4 Estruturas condicionais simples e composta As estruturas condicionais podem ser classificadas como simples ou composta. A instrução if é uma instrução de retorno booleano responsável pelo teste condicional em um programa Phyton. 4.4.1 Estrutura simples LINGUAGEM PHYTON 2.7 47 if a > 0: print ‘Positivo’ A sentença é completada com o caractere ‘:’ ao final da instrução if. Portanto, se a condição for satisfeita, TRUE, a instrução print ‘Positivo’ será executada. Caso contrário, nada será feito. 4.4.2 Estrutura composta if a > 0: print ‘Positivo’ else: print ‘Negativo’ Se a condição for satisfeita, será impresso ‘Positivo’. Caso contrário, será impresso ‘Negativo’. Note que a alternativa de resposta print ‘Negativo’ virá após o senão, aqui representado pelo else:, conforme exemplo. Na estrutura composta, o teste lógico realizado sempre permite duas respostas possíveis: uma verdadeira, caso a condição testada seja satisfeita, e a outra falsa, caso não seja satisfatória. Vamos a mais um exemplo em que, a partir da digitação de um número, seu programa seja capaz de informar se este é um número par ou ímpar. num = int(raw_input('Qual o numero?')) if int(num) % 2 == 0: print "O numero informado e par" else: print "O numero informado e impar" raw_input( ) LINGUAGEM PHYTON 2.7 48 4.4.3 Encadeamento de estruturas if a < b: print ‘a menor que b’ elif a>b: print ‘a maior que b’ else: print ‘a e b sao iguais’ Note que no encadeamento de estruturas, utilizou-se elif a>b: para que nova alternativa seja testada, permitindo também duas respostas possíveis. 4.5 Tratamento de exceções – Try e except Existe uma estrutura condicional de execução na linguagem de programação Python denominada try/except. O objetivo do try e do except é a prevenção de certa ocorrência de erro que você já tenha conhecimento que possa vir a acontecer e, por isto, precisa ser tratado. Observe o exemplo abaixo: temp = raw_input(‘Qual a temperatura em Fahrenheit?’) try: fahr = float(temp) cel = (fahr - 32.0) * 5.0 / 90 print cel except: print ‘Forneca a temperatura em Fahrenheit’ Você ainda poderá agregar ao try/execept, o final, perfazendo, portanto, try/except/finaly. Vejamos outro exemplo de tratamento de erro: def filhos(): LINGUAGEM PHYTON 2.7 49 try: val = int(raw_input('Quantas filhos voce tem? ')) except StandardError, e: print 'Erro - ', e return 'Errado!' finally: print "Registrado" print val return val filhos() #Primeira vez filhos() #Segunda vez filhos() #Terceira vez raw_input( ) 4.6 Estrutura de iteração com a instrução for A estrutura para/variando na linguagem de programação Phyton é representada pela instrução for( ). Assim como qualquer linguagem de programação, esta permite que um conjunto de instruções seja repetido n vezes. Observe o exemplo abaixo: for i in range(11): print i raw_input( ) A saída produzida será: LINGUAGEM PHYTON 2.7 50 Então, para que os números apareçam um ao lado do outro, basta colocar uma vírgula no final da instrução print i. Observe como os números serão impressos: Observação importante: O loop for( ) é utilizado sobre um conjunto de elementos, como uma lista de palavras, as linhas de um arquivo etc. LINGUAGEM PHYTON 2.7 51 Digamos que você queira imprimir os números pares compreendidos entre 0 e 10. Analisando esta situação em particular, tem-se uma lista com todos os números pares que estejam entre 0 e 10. Vejamos o script Phyton: pares=[2,4,6,8] for i in pares: print i, raw_input( ) Caso você não tenha definido um conjunto ou lista com valores, como todos os números ímpares compreendidos entre 1 e 10, inclusive, você deve definir o range do loop for conforme o exemplo abaixo: for i in range(1,10): if i % 2 != 0: print i, raw_input( ) 4.7 Estrutura de iteração com a instrução while A instrução while( ) permite realizar um loop enquanto certa condição for verdadeira. Dessa forma, executa um bloco de comandos. Observe o exemplo a seguir: #Mostra a soma de todos os numeros positivos menores que 10 cont = 1 soma = 0 while (cont < 10): soma = soma + cont cont = cont + 1 print 'Soma = ', soma LINGUAGEM PHYTON 2.7 52 raw_input( ) Nesta estrutura, enquanto cont, que se inicia com o valor 1 e enquanto for menor que 10, a soma que se inicia com o valor zero vai sendo progressivamente incrementada de um em um, ou seja, soma = soma + 1. Vejamos outro exemplo do loop while: num = 5 while num > 0: print num, num = num-1 raw_input( ) 4.8 Loops infinitos – Break e continue Uma forma elegante de controlar os chamados loops infinitos é através do uso das instruções break e continue do Phyton. Muitas das vezes, não conseguimos saber qual a hora de acabar um loop até chegar ao meio do corpo dessa iteração. Neste caso, em especial, pode-se fazer a escrita de um loop infinito controlado através da instrução break. Veja um exemplo: while True: line = raw_input ('Digite algo e pressione ENTER (parar p/ terminar) > ') if line == 'parar': break print line print 'Finalizado!' LINGUAGEM PHYTON 2.7 53 raw_input( ) Dessa forma, o usuário poderá digitar qualquer coisa e, ao final, pressionar a tecla ENTER para registrar oficialmente a entrada de dados que, em seguida, será exibida para o usuário. No entanto, assim que o usuário digitar ‘parar’, o loop infinito chegará ao seu fim. Vamos agora visualizar um exemplo prático de um loop infinito com o uso do break e continue juntos. while True: line = raw_input ('Digite algo e pressione ENTER (parar p/ terminar) > ') if line[0]=='#': continue #nao imprime nada if line == 'parar': break print line print 'Finalizado!' raw_input( ) Dessa forma, podemos observar que para trabalhar com loop infinito o breake o continue auxiliam muito o programador Phyton. LINGUAGEM PHYTON 2.7 54 5. Trabalhando com funções 5.1 Funções embutidas Uma função é uma sequência de comandos que realiza certo cálculo. Ao definirmos uma função, é necessário dá-se um nome para ela e determinar um conjunto de comandos a serem executados. Quando uma função já está criada e declarada, pode-se chamar essa função através do seu nome. Por exemplo: no programa da unidade 4, definimos e criamos uma função chamada filhos( ), conforme podemos observar a seguir: def filhos(): try: val = int(raw_input('Quantas filhos voce tem? ')) except StandardError, e: print 'Erro - ', e return 'Errado!' finally: print "Registrado" print val return val filhos() #Primeira vez filhos() #Segunda vez filhos() #Terceira vez A chamada da função filhos( ), neste programa exemplo, ocorreu três vezes, conforme ilustrado: filhos() #Primeira vez filhos() #Segunda vez filhos() #Terceira vez LINGUAGEM PHYTON 2.7 55 A linguagem de programação Phython disponibiliza diversas funções embutidas, as quais podemos usar sem a necessidade de definirmos antes. No exemplo a seguir, o Phyton irá retornar a letra de maior valor (MAX), e em seguida a letra de menor valor (MIN). Os valores das letras são reconhecidos pelo Phyton através da tabela ASCII – American Standard Code for Information Interchange. Por exemplo: a letra A vale 65(10), a letra B vale 66(10), e assim por diante. #Exemplo didatico print max('BOENTE') print min('BOENTE') raw_input( ) No primeiro print, será exibida a letra ‘T’, pois ela tem o maior (MAX) valor, ou seja, 84(10). Já no segundo print, será exibida a letra ‘B’, pois ela tem o menor (MIN) valor, ou seja, 66(10). No próximo exemplo, podemos visualizar as funções max e min, cuja função devolve o maior e o menor valor de uma lista, respectivamente. LINGUAGEM PHYTON 2.7 56 #Segundo exemplo d = {'a': 1000, 'b': 3000, 'c':100} print 'a=1000, b=3000, c=100' print 'Maximo = ' + max(d, key=d.get) print 'Minimo = ' + min(d, key=d.get) raw_input( ) O script apresentará como resposta o maior e o menor valor daqueles definidos na lista, ora denominada “d”. A outra função embutida que podemos citar como exemplo é a função len( ), que retorna um valor inteiro referente à quantidade total de letras de certa String. Observe o exemplo abaixo: #Retorna o valor referente a quantidade de caracteres de uma String print len('BOENTE') raw_input( ) Neste caso, a resposta impressa será 6. 5.2 Funções e conversões de tipo A linguagem Python contém funções para converter valores de um tipo para outro. Vejamos alguns exemplos: #Converte uma String em número inteiro num1 = raw_input('Entre com um numero inteiro: ') num2 = raw_input('Outro numero inteiro: ') print int(num1) + int(num2) LINGUAGEM PHYTON 2.7 57 raw_input( ) Lembrando que toda entrada de dados é do tipo String, devemos, portanto, converter os valores armazenados em num1 e num2 para números inteiros através da função int( ). Somente então poderemos efetuar cálculos. Observe o próximo exemplo: #Converte uma String em número real num1 = raw_input('Entre com um numero real: ') num2 = raw_input('Outro numero real: ') print float(num1) + float(num2) raw_input( ) Como podemos observar, a função float( ) converte um valor String em um número real para que seja possível operações de cálculos. #Converte um numero em String ano_nasc=raw_input('Qual o ano do seu nascimento? ') ano_atual='2017' idade=int(ano_atual)-int(ano_nasc) print 'Voce tem ' + str(idade) + ' anos de idade' raw_input( ) Depois que estamos trabalhando com um valor numérico, também podemos converter esse número em String, conforme ilustrado no programa anterior. Isso é possível na linguagem Phyton, através do uso da função str( ). 5.3 Funções matemáticas A linguagem de programação Python permite utilizar funções matemáticas. Para isto, é necessária a importação do módulo de matemática da biblioteca no seu programa. Vejamos um exemplo prático: LINGUAGEM PHYTON 2.7 58 #Funcao matematica para raiz quadrada import math a = 25 b = math.sqrt(a) print 'A raiz quadrada de 25 e... ' + str(b) raw_input( ) Utilizou-se a função math.sqr( ) para calcular a raiz quadrada de um número. Note que foi requerida a inclusão da biblioteca matemática através da instrução import math. No exemplo a seguir, utilizou-se a função math.pow(x, y), cujo objetivo é elevar um número x ao número y (x^y), ou seja, exponenciação. import math a = 5 b = 3 c = math.pow(a,b) print '5 ^ 3 = ' + str(c) raw_input( ) Vejamos outro exemplo: import math a = 5 b = math.factorial(a) print 'O fatorial de 5 e... ' + str(b) raw_input( ) Neste exemplo, utilizou-se a função math.factorial( ), que permite calcular o fatorial de um número. LINGUAGEM PHYTON 2.7 59 No próximo exemplo, utilizamos a função math.pi, que retorna o valor de pi (), ou seja, 3.14159265359. import math a = math.pi print 'O valor de pi e... ' + str(a) raw_input( ) O programa exemplo a seguir tem por objetivo utilizar as funções matemáticas math.sin(x), math.cos(x) e math.tan(x) para retornar um valor referente ao seno, cosseno e tangente de um número, respectivamente. import math x = float(raw_input('Digite um numero para saber o seno, cosseno e tangente: ')) a = math.sin(x) b = math.cos(x) c = math.tan(x) print 'Seno de ' + str(x) + ' = ' + str(a) print 'Cosseno de ' + str(x) + ' = ' + str(b) print 'Tangente de ' + str(x) + ' = ' + str(c) raw_input( ) 5.4 Criando novas funções Como já mostramos anteriormente, para criarmos ou declararmos uma função basta dar um nome ela, definindo, portanto, o seu conteúdo. Em Phyton, isso pode ser feito através da palavra reservada def, conforme exemplo a seguir: LINGUAGEM PHYTON 2.7 60 def print_linguagem(): print 'Eu sou Phyton...' print 'A melhor linguagem de programacao do mundo!' def repeat_linguagem(): print_linguagem() print_linguagem() repeat_linguagem() raw_input( ) Utilizou-se a instrução def print_linguagem( ): para criar ou definir uma função em Phyton. O mesmo ocorreu quando criou-se uma outra função através da instrução def repeat_linguagem( ). As chamadas das funções ocorreram, respectivamente, através das instruções print_linguagem( ) e repeat_linguagem( ). Observe o próximo exemplo: def fibonacci(n): if n < 2: return n else: return fibonacci(n-1)+fibonacci(n-2) print 'Sequencia dos 10 primeiros numeros da Serie de Fibonacci:' for x in range(10): print fibonacci(x), raw_input( ) Neste programa exemplo, a instrução def fibonacci(n): defini uma função para calcular os números da série de Fibonacci. No entanto, esta função requer um valor n, que será passado como parâmetro para a função (veremos mais detalhes na próxima seção). A chamada da função ocorreu quando utilizamos a instrução print fibonacci(x), LINGUAGEM PHYTON 2.7 61 que, de forma recursiva, vinculada à estrutura de iteração, foi calculando o próximo número da série de Fibonacci. 5.5 Argumentos e parâmetros Quando trabalhamos com funções em Phyton, geralmente utilizamos argumentos e parâmetros. Argumentos ou parâmetros são variáveis próprias de uma função que são utilizados para receber valores que serão utilizados pela função. Essas variáveis que representam os parâmetros da funçãosão ditas locais, pois pertencem exclusivamente a esta função. As demais variáveis declaradas num programa Phyton são consideradas variáveis globais, pois podem ser utilizadas em qualquer parte do programa. Vejamos o exemplo a seguir: def cubo(x): return x*x*x a = int(raw_input('Entre com um numero: ')) print 'O cubo de ' + str(a) + ' e... ' + str(cubo(a)) raw_input( ) O programa exemplo tem por objetivo calcular o cubo de um número que será fornecido pelo usuário. Note que o parâmetro utilizado na chamada da função é diferente do parâmetro utilizado na declaração da função. Os argumentos devem ser do mesmo tipo, porém devem apresentar nomes diferentes. O valor passado como parâmetro na chamada da função é tecnicamente chamado de parâmetro real, enquanto o valor recebido e declarado como parâmetro da função cubo() é tecnicamente chamado de parâmetro formal. Vejamos o próximo exemplo: LINGUAGEM PHYTON 2.7 62 def troca(x, y): aux = x x = y y = aux return x,y a = int(raw_input('Valor do 1o numero: ')) b = int(raw_input('Valor do 2o numero: ')) print troca(a, b) raw_input( ) Neste programa, o usuário entra com dois números através do teclado e, em seguida, chama a função troca( ) para inverter/trocar os números digitados originalmente. Assim, por exemplo, se o usuário digitou os números 2 e 5, no final a saída produzida pela instrução print será 5 e 2, pois os números serão trocados, ou seja, o valor da variável a passará para a variável b, e vice-versa. 5.6 Funções produtivas e funções void Algumas funções em Phyton, como as funções matemáticas, produzem, por si só, resultados sólidos. De acordo com Grus (2016), estas são as chamadas funções produtivas. Quando temos uma função que não retorna valor algum, dizemos que esta função é vazia ou simplesmente void, sem retorno. Então, print math.sqrt(25) é considerada uma função produtiva, e realiza_entrada( ) é uma função sem retorno, do tipo void. LINGUAGEM PHYTON 2.7 63 6. Manipulando arquivos 6.1 Persistência Todos os programas criados até agora manipulam dados na memória do computador. No entanto, programas de computador do dia a dia, na vida real, fazem as manipulações de dados por meio de arquivos, pois os dados manipulados na memória do computador têm seu armazenamento limitado e temporário; isso porque a memória do computador é volátil. No caso dos arquivos, permitem armazenar uma grande quantidade de dados e não é uma memória volátil, ou seja, os dados vão permanecer guardados ali, mesmo com a ausência de energia elétrica. Aqui, iremos aprender a manipular arquivos para que os nossos programas tenham a capacidade de guardar dados em grande quantidade por um período de tempo indeterminado. Por exemplo, as linhas de código abaixo permitem criar um arquivo de dados vazio, apenas para sinalizar a criação deste. #Simplesmente cria um arquivo vazio arq = open('tmp/teste.dat', 'w') print arq arq.close( ) raw_input('\nArquivo vazio criado com sucesso!') Após a execução do programa, aparecerá a seguinte informação como saída: LINGUAGEM PHYTON 2.7 64 A linguagem de programação Phyton permite manipular tanto arquivos texto quanto arquivos de dados. Ambos os focos são interessantes para o trabalho de um cientista de dados. 6.2 Abertura de arquivo Utilizaremos a instrução open, em Phyton para realizar a abertura de um arquivo. Portanto, a função open retorna um objeto da classe file, que permite fazer a leitura e escrita em arquivos das mais diversas formas. Modos de abertura de arquivo do Phyton para arquivo texto: ‘w’ - gravação (write) ‘r’- leitura (read) ‘a’ - acrescentar (append) LINGUAGEM PHYTON 2.7 65 O modo de abertura para gravação, ‘w’, toda vez que for executado, permite criar um novo arquivo, subscrevendo todo o conteúdo uma vez já criado anteriormente. arquivo = open(‘teste.txt’, ‘w’) O modo de abertura para leitura, ‘r’, permite que seja feita uma leitura do conteúdo do arquivo já existente. arquivo = open(‘teste.txt’, ‘r’) O modo de abertura para acrescentar, ‘a’, serve para manter o conteúdo já gravado anteriormente, acrescentando novos dados neste arquivo sem a necessidade de apagar os dados anteriores. arquivo = open(‘teste.txt’, ‘a’) Dessa forma, o arquivo que será fisicamente criado na sua unidade de armazenamento ficará gravado no mesmo diretório, na mesma pasta em que o programa Phyton está sendo executado para a criação do seu arquivo. No entanto, você poderá determinar um local em que deseja gravar os arquivos. Por exemplo: imagine que seus programas Phyton estão sendo executados a partir da pasta /progphyton e dentro dessa pasta existe outra pasta nomeada como /tmp, por exemplo, em que os arquivos criados serão armazenados. Para tanto, você deverá indicar na instrução de abertura de arquivo o local desejado, dessa forma: arquivo = open(‘tmp/teste.txt’, ‘w’) Você também poderá manter uma pasta para manipular arquivos diretamente no desktop do seu computador. Vamos utilizar um exemplo de uma pasta criada no desktop chamada /Local, assim: arquivo = open('/Users/Boente/Desktop/Local/teste.txt', 'w'). Note que é necessário passar todo o caminho, path, em que a pasta se encontra quando ela não se encontra no mesmo diretório no qual o programa está sendo executado. LINGUAGEM PHYTON 2.7 66 Vejamos o exemplo da abertura de um arquivo para gravação/criação chamado ‘arquivo.txt’. #Criacao do arquivo arq = open('tmp/arquivo.txt', 'w') arq.close() raw_input('Arquivo vazio criado com sucesso!') Dessa forma, um arquivo chamado ‘arquivo.txt’ foi criado sem conteúdo algum, ou seja, foi criado vazio. É claro que alguns comandos específicos de manipulação de arquivos da linguagem de programação Phyton foram utilizados. Vamos estudar o que cada um desses comandos faz. A instrução open( ) permite abrir/criar um arquivo em Phyton a partir da escolha de um modo de abertura (‘w’, ‘r’, ‘a’), por exemplo, arq = open('tmp/arquivo.txt', 'w'). Vejamos um exemplo de criação de arquivo ainda não existente, arquivo para gravação, chamado ‘arquivo.txt’. Caso esse arquivo já exista, seu conteúdo será sobreposto, ou seja, o conteúdo antigo será apagado e substituído por um novo a ser registrado. #Abertura de arquivo para gravacao arq = open('tmp/arquivo.txt', 'w') texto = [] texto.append('Lista de Amigos\n') texto.append('---\n') texto.append('Alfredo Boente\n') texto.append('Renata Miranda\n') texto.append('Giullia Edwiges') LINGUAGEM PHYTON 2.7 67 arq.writelines(texto) arq.close() raw_input('Arquivo criado com sucesso!') Este será o arquivo criado no seu diretório /tmp: A instrução arq.writelines(texto) permite gravar linhas em um arquivo texto com as linhas de conteúdo de certa lista. Agora, nós iremos acrescentar outros três amigos no arquivo já criado. Para isto, substituiremos o modo de abertura de arquivo ‘w’, write, por ‘a’, append. #Abertura de arquivo para acrescentar novos registros arq = open('tmp/arquivo.txt', 'a') texto = [] texto.append('\n') LINGUAGEM PHYTON 2.7 68 texto.append('Juan Gabriel\n') texto.append('Maria Miranda\n') texto.append('Sergio Albano') arq.writelines(texto) arq.close() raw_input('Novos Amigos gravados com sucesso!') Este será o novo conteúdo do arquivo: Podemos observar que os primeiros três nomes gravados no arquivo foram mantidos, sendo acrescentados, portanto, outros três novos nomes no final do arquivo. Como auxílio, foi utilizada a instrução texto.append('Nome\n') para acrescentar novas linhas de texto em uma lista, ora definida no programa exemplo como texto = []. LINGUAGEM PHYTON 2.7 69Para fazer a leitura do conteúdo do arquivo criado, utilizaremos o modo de abertura de arquivo ‘r’, read. Vamos admitir que já existisse o arquivo ‘arquivo.txt’ com o seguinte conteúdo: #Abertura de arquivo para leitura arq = open('tmp/arquivo.txt', 'r') texto = arq.readlines() for linha in texto: print(linha) arq.close() raw_input('\nLeitura realizada com sucesso!') Esta será a tela de saída exibida como resultado: LINGUAGEM PHYTON 2.7 70 A instrução texto = arq.readlines() permite ler linhas de conteúdo do arquivo, adicionando-as a uma lista, que será utilizada como referência para a impressão das informações desse arquivo. 6.3 Arquivo texto e linha Como podemos manipular arquivos texto e arquivos binários no Phyton, iremos explicar cada um deles. Conceitualmente, um arquivo texto representa uma sequência de linhas com registro de um conjunto de caracteres, da mesma forma que uma String. Dessa forma, para quebrar o arquivo texto em diversas linhas, busca-se utilizar o caractere especial ‘\n’, new line, já utilizado anteriormente em alguns programas exemplo. O new line, portanto, irá representar o final de uma linha e o início de outra. Os arquivos de dados serão aqueles cujo conteúdo das linhas representa as tuplas do arquivo, ou seja, os registros que compõem certos arquivos de dados. Os arquivos binários registram uma tupla, um registro por vez dentro do arquivo criado. Um arquivo texto não cria essa relação de tupla. LINGUAGEM PHYTON 2.7 71 6.4 Lendo arquivos A leitura do conteúdo gravado no arquivo é feita através da instrução s = arquivo.read( ). Veja o código exemplo: #Leitura de arquivo arquivo = open('tmp/arqnum.txt', ‘r’) s = arquivo.read( ) print s arquivo.close( ) raw_input('\nLeitura realizada com sucesso!') A saída produzida será a seguinte: Todo o arquivo é lido de uma só vez para a memória do computador. Nós abrimos o arquivo texto para leitura, ‘arqnum.txt’, da seguinte forma: arquivo = open('tmp/arqnum.txt', ‘r’). No entanto, temos a opção de suprimir o ‘r’ de read, leitura, conforme se segue: arquivo = open(‘tmp/arqnum.txt’). LINGUAGEM PHYTON 2.7 72 Não podemos esquecer que o arquivo lido deve existir, ou seja, já deve ter sido criado. 6.5 Pesquisando em arquivos Temos a opção de pesquisar dados em um arquivo sem necessariamente lê-lo totalmente para a memória do computador. Dessa forma, você pode processar apenas as linhas que se encaixam em um critério particular. Nós podemos combinar tal comportamento com métodos que atuam sobre String para construirmos um simples mecanismo de busca. Observe o exemplo a seguir: #Pesquisando em Arquivos arquivo = open('tmp/arqnum.txt', 'r') for linha in arquivo : if int(linha)%2!=0: print linha arquivo.close( ) raw_input('\nPesquisa realizada com sucesso!') A saída produzida pelo programa será a seguinte: LINGUAGEM PHYTON 2.7 73 Em outras palavras, nosso programa buscou no arquivo ‘tmp/arqnum.txt’ todos os números que fossem ímpares e os mostrou na tela do computador como saída. Note que entre as linhas de dado impressas, apareceu uma linha em branco. Para retirar essa linha em branco, você deverá utilizar a instrução print linha.rstrip( ), como se segue: #Pesquisando em Arquivos arquivo = open('tmp/arqnum.txt', 'r') for linha in arquivo : if int(linha)%2!=0: print linha.rstrip( ) arquivo.close( ) raw_input('\nPesquisa realizada com sucesso!') Será produzida, então, a seguinte saída: Vejamos outro exemplo de pesquisa em que iremos buscar todos os nomes dos amigos registrados no arquivo ‘tmp/arquivo.txt’ cujo nome seja diferente de ‘Renata Miranda’ ou ‘Maria Miranda’. LINGUAGEM PHYTON 2.7 74 #Pesquisando em Arquivos arquivo = open('tmp/arquivo.txt', 'r') for linha in arquivo : if linha !='Renata Miranda' or linha != 'Maria Miranda': print linha arquivo.close( ) raw_input('\nPesquisa realizada com sucesso!') Esta será a saída produzida pelo programa: 6.6 Usando try, except e open No exemplo a seguir, vamos pedir para que o usuário digite o nome do arquivo que ele deseja abrir para leitura. Então, quando um nome de arquivo válido for digitado, o Phyton irá realizar o processo de leitura das informações do arquivo. No entanto, caso o usuário digite o nome de um arquivo inexistente, certamente seu programa dará erro, pois o Phyton irá tentar abrir um arquivo para leitura das informações que não existe. LINGUAGEM PHYTON 2.7 75 #Tentando Abrir um Arquivo nome = raw_input('Digite o nome do arquivo: ') arquivo = open('tmp/'+nome) for linha in arquivo : print linha.rstrip( ) arquivo.close( ) raw_input('\nPesquisa realizada com sucesso!') Para evitar esse tipo de erro, vamos agora fazer o tratamento de exceção com a operação de abertura de arquivo através do try/except. #Tratamento de Excecoes nome = raw_input('Digite o nome do arquivo:') try: arquivo = open('tmp/'+nome) except: print 'O arquivo '+nome+' nao pode ser aberto' raw_input('\nPressione <Enter> para terminar...') exit( ) for linha in arquivo : print linha.rstrip( ) arquivo.close( ) raw_input('\nPesquisa realizada com sucesso!') 6.7 Escrevendo arquivos Utilizaremos a instrução arquivo.write(str(val)+’\n’) para realizar o processo de escrita/gravação de dados no arquivo criado. #Escrevendo em arquivo arquivo = open('tmp/arqnum.txt', 'w') LINGUAGEM PHYTON 2.7 76 val = 0 for num in range(10): val = val + 1 arquivo.write(str(val)+'\n') arquivo.close( ) raw_input('\nGravacao realizada com sucesso!') O arquivo criado terá o seguinte conteúdo: 6.8 Fechamento de arquivos e depuração A instrução arq.close() é utilizada para fechar o arquivo que esteja aberto na memória do computador. É importante lembrar que o Phyton também permite a manipulação de arquivos do tipo binário. O arquivo tipo texto armazena conteúdo com caracteres ASCII do tipo LINGUAGEM PHYTON 2.7 77 String, enquanto o arquivo binário irá preservar os dados gravados de acordo com os seus respectivos tipos. Em Phyton, para manipularmos um arquivo binário, devemos utilizar ‘w’, ‘r’ e ‘a’, acompanhados da letra ‘b’ de binário. Para que possamos preservar o tipo do dado que será gravado, iremos usar a função dump( ) da biblioteca import pickle. Observe o seguinte exemplo: #Criando Arquivo Binario import pickle arquivo = open('tmp/arquivo.dat', 'wb') for i in range(10): pickle.dump(i, arquivo) arquivo.close( ) raw_input('\nArquivo binario criado com sucesso!') No exemplo anterior, foi criado um arquivo binário para gravação de dados no arquivo ‘tmp/arquivo.dat’. A gravação é realizada pela instrução pickle.dump(i, arquivo). Vamos visualizar o próximo exemplo, em que para o mesmo arquivo, ‘tmp/arquivo.dat’, foi criado um programa para realizar a leitura desse arquivo binário. #Lendo Arquivo Binario import pickle arquivo = open('tmp/arquivo.dat', 'rb') soma=0 for i in range(10): n=pickle.load(arquivo) soma=soma+n print soma arquivo.close( ) raw_input('\nArquivo binario lido com sucesso!') LINGUAGEM PHYTON 2.7 78 Note que foi utilizada a instrução n=pickle.load(arquivo) para realizar a leitura dos registros do arquivo. Vamos visualizar outro exemplo de criação e leitura de arquivo binário. Iremos manipular o arquivo ‘tmp/arqdados.dat’ para registro de nomes e idades de três pessoas. #Arquivo Binario Gravacao import pickle arq = open('tmp/arqdados.dat', 'wb') for i in range(3): nome=raw_input('Digite seu nome: ') idade=raw_input('Digite a sua idade: ') pickle.dump(nome, arq) pickle.dump(idade, arq) arq.close( ) raw_input('\nArquivo binario
Compartilhar