Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) Autor: Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos 07 de Dezembro de 2022 05013218101 - PAULO VICTOR DA CONCEICAO TAVARES Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Índice ..............................................................................................................................................................................................1) Programação - Lógica de Programação - Conceitos Básicos 3 ..............................................................................................................................................................................................2) Programação - Lógica de Programação - Representações de Algoritmos 9 ..............................................................................................................................................................................................3) Programação - Python - Conceitos Básicos 15 ..............................................................................................................................................................................................4) Programação - Python - Tipos de Operadores 20 ..............................................................................................................................................................................................5) Programação - Python - Funções 23 ..............................................................................................................................................................................................6) Programação - Python - Comentários 27 ..............................................................................................................................................................................................7) Programação - Python - Tipos e Variáveis 28 ..............................................................................................................................................................................................8) Programação - Python - Controle de Fluxo 48 ..............................................................................................................................................................................................9) Programação - Python - Arquivos 60 ..............................................................................................................................................................................................10) Programação - Python - Desafio 67 ..............................................................................................................................................................................................11) Mapa Mental - Programação - Python 70 ..............................................................................................................................................................................................12) Resumo - Programação - Python 76 ..............................................................................................................................................................................................13) Questões Comentadas - Programação - Python - Multibancas 84 ..............................................................................................................................................................................................14) Lista de Questões - Programação - Python - Multibancas 106 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 2 118 Seus lindos, vamos iniciar a nossa aula de Python. Eu sei que muitas pessoas ficam preocupadíssimas achando que precisam aprender a programar para resolver questões de prova. Galera, não é necessário... vocês vão ver que é totalmente possível responder questões de programação sem nunca ter desenvolvido um software na vida. Fiquem calmos... venham comigo que vocês vão adorar descobrir como funciona um programa de computador ;) Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 3 118 Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 4 118 Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 5 118 ==210444== O Edital traz um tópico sobre Python, mas eu insiro dois pequenos tópicos no início da aula sobre lógica de programação para que vocês entendam os fundamentos que norteiam o estudo de qualquer linguagem de programação. Para alunos que já tiveram alguma experiência prévia com programação ou que não encontram dificuldades no assunto, eu sugiro pular esses três primeiros tópicos e irem diretamente para o assunto de Python. Vamos lá... em primeiro lugar, por que nós chamamos de lógica? Porque nós vamos utilizar princípios lógicos para resolver geralmente, mas não exclusivamente, problemas computacionais. Como assim, Diego? É necessário utilizar um encadeamento de raciocínios coerentes para alcançar um determinado objetivo. Nós podemos descrever esses raciocínios como uma sequência de instruções ou passos. Professor, e o que seria uma instrução? É um conjunto de regras ou normas simples e bem definidas para a realização ou emprego de algo, indicando ao computador uma ação ou função elementar a ser executada. Galera, um computador não pensa, ele é burro – ele somente recebe ordens e as executa! O programador de computador – sim – é o cara inteligente que dá as ordens. Então, vejam só a linha de raciocínio... Um computador é excelente para realizar cálculos e processamentos, mas ele não consegue pensar sozinho. Já o programador é ótimo em pensar sozinho sobre como resolver problemas, mas ele não Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 6 118 tem capacidade de fazer bilhões de cálculos e processamentos. Logo, eles se juntam de forma que o programador possa pensar na forma de resolver um problema e criar um conjunto de instruções para que o computador apenas as execute. Sabe qual é o nome dado a um conjunto de instruções? Algoritmo! Programadores são especialistas em construir algoritmos. Formalmente podemos definir um algoritmo como um conjunto predeterminado e bem definido de passos destinados à solução de um problema, com um número finito de etapas. Professor, você pode dar um exemplo? Claro! O exemplo mais comum da bibliografia é mostrado a seguir: uma receita de bolo. Qual é o problema que desejamos resolver? Nós queremos fazer um bolo! Observem que para solucionar nosso problema – fazerum bolo –, é necessário seguir uma sequência de passos finitos e predeterminados. Galera, no fim das contas um software é apenas a representação de um algoritmo. Claro que é um algoritmo bastante complexo que exige um conjunto de recursos e ferramentas computacionais, mas – no fim das contas – é apenas um algoritmo. (MPCM – 2015) Um algoritmo é: Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 7 118 a) Uma sequência de passos para realizar uma atividade. b) A operação matemática inversa a potencia. c) A parte de um programa em que se limita a definir os tipos de dados das variaveis. d) A parte de um programa em que se limita a definir as constantes. e) Um software utilizado para escrever programas _______________________ Comentários: um algoritmo é uma sequência de passos para realizar uma atividade (Letra A). (CODENI/RJ – 2010) É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações "primitivas", das quais damos por certo que elas podem ser executadas. A descrição refere-se a: a) Sequenciamento. b) Algoritmo. c) Compilador. d) Modularização. _______________________ Comentários: ações primitivas que podem ser executadas é um algoritmo (Letra B). (PC/RJ – 2013) Marque a opção que determina uma lista de procedimentos bem definida, que pega algum valor, ou conjunto de valores como entrada, e produz algum valor ou conjunto de valores como saída. a) Algoritmo. b) Código. c) Chave d) Inserção. e) Loop. _______________________ Comentários: lista de procedimentos bem definida é um algoritmo (Letra A). (Câmara de Juiz de Fora/MG – 2018) Lógica de programação é o modo como se escreve um programa de computador, um algoritmo. Um algoritmo é uma sequência de passos para se executar uma função. _______________________ Comentários: perfeito... um algoritmo é uma sequência de passos para se executar uma função (Correto). (Câmara de Juiz de Fora/MG – 2018) Saber lógica de programação é saber o melhor jeito de escrever um código, para o computador interpretar corretamente. É saber se comunicar com a máquina a partir de uma linguagem seja lá qual for. _______________________ Comentários: perfeito... é uma linguagem em comum entre humanos e máquinas (Correto). (CRM/PR – 2018) Os algoritmos são sequências finitas de instruções que, quando corretamente executadas, levam à solução de um problema. _______________________ Comentários: perfeito... algoritmos são sequências finitas de instruções para resolver um problema (Correto). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 8 118 Todos os programas de um computador ou dispositivos são representações de algoritmos! Inclusive o Candy Crush no meu celular? Sim! O Uber, Waze e Spotify também? Eles também! Se você pudesse ver como são internamente cada programa, você perceberia que todos são basicamente um conjunto de instruções. Dito isso, vamos ver a seguir as maneiras possíveis de se representar um algoritmo. Venham comigo... Também conhecida como Descrição Narrativa, trata-se da maneira como expressamos nosso raciocínio e trocamos informações. Como é a expressão da cultura de uma sociedade, desenvolvida através das gerações e em diferentes situações, raramente constitui um sistema de regras rígidas e estruturadas que possa ser implementada numa máquina ou que possa ser transcrita logicamente. Além da linguagem falada, fazem parte da nossa comunicação gestos e posturas, que não podem ser diretamente adaptados para compreensão de uma máquina. Ademais, toda a comunicação eficiente pressupõe um conhecimento prévio comum entre os interlocutores, por exemplo: a mesma língua, a mesma bagagem cultura, etc. Ao contrário dos seres humanos, as máquinas são projetadas para executar tarefas bem determinadas a partir de determinadas instruções. Um computador não é por si só uma máquina inteligente – no sentido de que não pode aprender com a própria experiência para melhorar seu comportamento futuro. Ao contrário, um computador é somente capaz de realizar estritamente as tarefas que lhe forem delegadas e que façam parte do conjunto daquelas ações que ele pode executar. Neste sentido, é necessário compreender que tipo de instruções podem ser executadas pelos computadores. Por que? Para que possamos programá-los – instruí-los com a sequência de ações necessárias para resolver um determinado problema – de modo que realizem a tarefa do modo desejado. Em suma: basta que eu escreva um conjunto de passos em qualquer língua que o meu computador realiza a tarefa que eu quiser? Não, isso é uma descrição narrativa que utiliza a linguagem natural para especificar os passos para a realização das tarefas – são ambíguas e não estruturadas. (EBC – 2011) A descrição narrativa é uma forma de algoritmo que utiliza linguagem estruturada e, embora sua estrutura e simbologia apresentem pequenas diferenças em relação à língua portuguesa, também é chamada de português estruturado. _______________________ Comentários: a descrição narrativa utiliza linguagem natural para especificar os passos para a realização das tarefas. Isso dá margem a más interpretações e ambiguidades. O português estruturado – pseudocódigo –realmente utiliza uma linguagem estruturada, mas não é a mesma coisa que descrição narrativa (Errado). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 9 118 Além do fato de o computador necessitar que lhe instruam com ações bem específicas, estas ações devem ser passadas para o computador numa linguagem que ele possa entendê-las, chamada linguagem de máquina. Esta linguagem é composta somente por números, representados de forma binária (0 e 1), que – sob o ponto de vista do computador – representam as operações e os operandos que serão usados no processamento do programa. Para um ser humano, a linguagem de máquina é extremamente difícil de se compreender. Querem um exemplo? A saudação “Olá, Estratégia Concursos” em linguagem de máquina seria: 01001111011011001110000100101100010001010111001101 11010001110010011000010111010011101001011001110110 10010110000101000011011011110110111001100011011101 010111001001110011011011110111001100100001 Vocês já imaginaram alguém programando na linguagem de máquina? Seria inviável! Existe, portanto, uma linguagem representada por comandos, mas que reproduz as tarefas que serão executadas dentro do computador, chamada Linguagem de Montagem (Assembly). No entanto, mesmo a linguagem de montagem é difícil de programar – além de outros problemas como a especificidade do processador. Vejam como seria a mesma saudação em Assembly: 4F6CE12C457374726174E9676961436F6E637572736F7321 Viram que já melhorou? Está melhor e já existem algumas letras, no entanto ainda seria muito complicado para um ser humano programar utilizando essa linguagem. Vamos seguir... (IFC/SC – 2015) Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas, é necessário que ele seja programado, isto é, que seja transcrito para uma linguagem que o computadorpossa “entender”, direta ou indiretamente. Os computadores só podem executar diretamente os algoritmos expressos em: a) Linguagem de máquina. b) Linguagem orientada a objeto. c) Linguagem constante. d) Linguagem simbólica. _______________________ Comentários: computadores só “entendem” Linguagem de Máquina (Letra A). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 10 118 Para facilitar a tarefa de programar um computador, foram criadas várias linguagens de programação. Estas linguagens são uma maneira de tentar escrever as tarefas que o computador vai realizar de maneira mais parecida com a linguagem natural. Embora ainda seja muitas vezes complexo em comparação com a linguagem natural, um programa escrito em uma linguagem de programação é muito mais fácil de ser implementado, compreendido e modificado. As linguagens de programação são um meio termo entre a linguagem de máquina e a linguagem natural. As linguagens mais parecidas com a linguagem de máquina são classificadas como linguagens de baixo nível. Já as linguagens mais parecidas com a linguagem natural são classificadas como linguagens de alto nível. Como um computador não entende diretamente linguagens de programação, ela deve ser traduzida em código de máquina antes de ser executada. Esse processo é chamado de tradução e é responsável por converter os comandos da linguagem de programação nas instruções em linguagem de máquina, que o computador é capaz de processar! Em suma: as linguagens de programação surgem – portanto – como uma solução para abstrair a comunicação entre seres humanos e computadores de modo que o computador nos entenda e nós os entendamos. A mesma saudação em uma linguagem de programação seria: Nesse caso, a linguagem de programação utilizada foi a linguagem Python, mas existem centenas de outras. Assim como seres humanos se comunicam por meio de diversas línguas (Exemplo: português, inglês, francês, japonês, dinamarquês, entre outras), as máquinas também podem se comunicar por meio de diversas linguagens de programação (Exemplo: Java, PHP, C++, Python, Ruby, entre outras). Bem, acho que todo mundo já ouviu falar alguma vez na vida em Código-Fonte. Se você não sabe o que é um código-fonte, eu tenho uma tarefa para você executar agora: abra algum navegador web (Ex: Google Chrome, Mozilla Firefox ou Microsoft Edge), acesse qualquer site que vocês queiram e pressionem a Tecla F12. Pronto, vocês verão o código-fonte por trás do site bonitinho que você está vendo... Um código-fonte é uma versão do software da forma em que ele foi originalmente escrito – digitado em um computador – por um programador humano em texto puro (caracteres alfanuméricos humanamente legíveis). Todo software ou site possui um código-fonte, que é um conjunto de palavras organizadas de acordo com regras específicas. Essas palavras que formam o algoritmo são escritas – em geral – utilizando linguagens de programação. Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 11 118 ==210444== Uma vantagem interessante da linguagem de programação em relação à linguagem de máquina é que um programa escrito em linguagem de máquina – como contém instruções escritas para um processador específico – só poderá ser utilizado naquele processador ou em similares. Em contrapartida, uma linguagem de programação, como contém somente instruções abstratas do que fazer, pode ser executado em qualquer processador ou máquina. (Câmara de Juiz de Fora/MG – 2018) A linguagem de programação é como uma língua normal, um grupo de palavras com significados. No caso da programação, a maioria das linguagens é escrita em Inglês. Estas linguagens fazem o computador assimilar cada comando e função de um algoritmo, depois executar cada função. _______________________ Comentários: as linguagens de programação realmente são similares a uma língua normal que geralmente utilizam palavras em inglês e que servem de padrão comum entre humanos e máquinas (Correto). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 12 118 O pseudocódigo é uma linguagem intermediária entre a linguagem natural e a linguagem de programação. Ela utiliza um conjunto restrito de palavras-chave, em geral na língua nativa do programador, que tem equivalentes nas linguagens de programação. Além disso, o pseudocódigo não requer a rigidez sintática necessária numa linguagem de programação, permitindo que um aprendiz se atenha à lógica do algoritmo e, não, ao formalismo da sua representação. À medida que se obtém mais familiaridade com os algoritmos, o pseudocódigo pode ser traduzido para uma linguagem de programação. Por essa razão, ele é considerado um excelente instrumento pedagógico para ensinar linguagens de programação. Em suma, um pseudocódigo é uma representação abstrata de um algoritmo utilizando uma linguagem simples sem necessidade de conhecer a sintaxe correta de nenhuma linguagem de programação. Pode-se dizer também que ele é uma simulação de uma linguagem de programação real, mas que – na verdade – é uma linguagem de programação “de mentirinha”. Logo, ela não pode ser utilizada para criar softwares de verdade, mas são excelentes para ajudar a entender a lógica. Um tipo de pseudocódigo brasileiro é o Portugol ou Português Estruturado. O que é isso, Diegão? Cara, é uma pseudolinguagem utilizada para ensinar algoritmos em português. Sim, em português! Porque vocês perceberão que a imensa maioria das linguagens de programação do mercado utilizam como base a língua inglesa. Professor, esse português estruturado é moleza de entender? Galera, embora ele seja uma linguagem simplificada, ele possui todos os elementos básicos necessários para construir um algoritmo por meio de uma estrutura semelhante à de uma linguagem de programação de computadores. Dessa forma, resolver problemas com português estruturado pode ser uma tarefa tão complexa quanto a de escrever um programa em uma linguagem de programação qualquer, porém utilizando uma linguagem mais simples! Bacana? A imagem anterior é um exemplo de português estruturado. Comparem com o exemplo da linguagem de programação e vocês notarão que a diferença está na língua utilizada, mas continua sendo um algoritmo. (CFO/DF – 2017) O portugol é uma das formas de se representar um algoritmo. _______________________ Comentários: portugol é realmente uma das formas de se representar algoritmos (Correto). (EBC – 2011) Para especificar os passos de um algoritmo, o pseudocódigo utiliza uma linguagem natural com característica pouco formal, o que pode causar ambiguidade e propiciar interpretações errôneas. _______________________ Comentários: ele não usa linguagem natural e nem é ambíguo (Errado). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 13 118 Além do português estruturado, é possívelrepresentar um algoritmo também por meio de um Fluxograma! O que é isso, professor? É uma espécie de diagrama utilizado para documentar processos, ajudando o leitor a visualizá-los, compreendê-los mais facilmente e encontrar falhas ou problemas de eficiência, como mostra a imagem abaixo. Nada como usar imagens – agora vai ficar beeeeem mais fácil de entender. Vamos ver um exemplo... O que mostra o diagrama anterior? Ele mostra um algoritmo – conjunto de instruções – para comprar um curso de informática. Você acessa o site do Estratégia Concursos, depois procura por cursos do Prof. Diego Carvalho, baixa e acessa a aula demonstrativa, lê e decide se gostou ou não! Gostou? Compra para estudar! Não gostou? Compra também para ajudar! Brincadeira, pessoal! Com um fundo de verdade! Mas é brincadeira (mas é verdade...). Bem, nós vimos então que podemos representar algoritmos por meio de Descrições Narrativas, Linguagens de Programação, Pseudocódigos ou Fluxogramas! Em geral, os fluxogramas são mais utilizados para leigos; pseudocódigo para usuários um pouquinho mais avançados; e linguagens de programação para os usuários avançados. Agora que já vimos diversas representações de algoritmos, vamos falar de conceitos mais específicos e avançados. Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 14 118 Antes de iniciar a aula, é importante mencionar que vários exemplos dessa aula foram retirados ou inspirados em exemplos do W3Tutorials (www.w3schools.com/python). Não fizemos isso porque somos preguiçosos, mas por dois motivos: (1) os exemplos são excelentes; (2) essa é umadas fontes de inspiração das bancas. Além disso, eu sugiro que vocês tenham sempre aberta uma janela com um interpretador online para que vocês possam testar o que veremos. Recomendo esse: O que é Python? Python é uma linguagem de programação de alto nível, interpretada, multiparadigma e case-sensitive sendo bastante utilizada para desenvolvimento web, criação de fluxos de trabalho, conexão com bancos de dados, resolução de problemas matemáticos, prototipação de software, entre outros. Eu sei, eu sei que você tomou aquele susto, mas relaxa que nós vamos entender cada um desses conceitos. Não é tão difícil quanto parece... Trata-se de uma linguagem de alto nível porque é uma linguagem com nível de abstração bastante elevado, bem longe do código de máquina e mais próximo da Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 15 118 linguagem humana. Em outras palavras, o Python está muito mais próximo à forma humana de pensar/escrever do que dos comandos entendidos por um processador. Trata-se de uma linguagem interpretada porque seu código-fonte é executado linha a linha por um interpretador (software que traduz uma linguagem em outra) e depois pelo sistema operacional, isto é, seu código -fonte não precisa ser totalmente transformado em código de máquina para somente depois ser executado1. Trata-se de uma linguagem multiparadigma porque suporta mais de um paradigma de programação. No caso, eles são: imperativo, procedural, funcional e orientado a objetos. Paradigmas são formas diferentes de resolver problemas – alguns utilizam funções, outros utilizam objetos, outros procedimentos e assim por diante. Trata-se de uma linguagem case-sensitive, isto é, capaz de diferenciar maiúsculas e minúsculas. Em outras palavras, isso significa que as variáveis nome, Nome e NOME são diferentes entre si, uma vez que possuem diferenças de caixa em sua grafia. Acabou? Não acabou! Python é uma linguagem multiplataforma, podendo ser utilizada no Windows, Linux, MacOS, etc. Além disso, ele é fácil de aprender e possui uma linguagem simples extremamente semelhante com o inglês comum. Pode-se afirmar também que é uma linguagem menos verbosa, isto é, sua sintaxe permite escrever softwares com menos palavras e linhas que outras linguagens semelhantes. Acabou? Ainda não... Python é uma linguagem de tipagem forte e dinâmica. Como é, Diego? Linguagens de programação possuem um conjunto de regras sobre como tratar tipos de dados, sendo que a tipagem de uma variável pode ser estática/dinâmica ou fraca/forte. Linguagens com tipagem estática não permitem alteração de tipo de variável durante a execução do código-fonte; já linguagens com tipagem dinâmica permitem essa alteração. No código abaixo, nós declaramos uma variável com nome de var1 e a atribuímos o valor ‘Diego’, logo a linguagem já infere que se trata de uma variável do tipo string (conjunto de caracteres)2. Em seguida, nós atribuímos o valor 2020 (que é do tipo int) a essa mesma variável e não ocorre nenhum erro. Ela permite que a variável var1 tenha seu tipo modificado de string para int (inteiros). Se uma linguagem permite esse tipo de alteração durante a execução, trata-se de uma tipagem dinâmica. var1 = ‘Diego’ var1 = 2020 Linguagens com tipagem forte não permitem realizar algumas operações com variáveis de tipos diferentes sem conversão; já linguagens com tipagem fraca permitem realizar esse tipo de operação. No código abaixo, declaramos uma variável com nome de var2 e a atribuímos o valor 1 Isso significa que o código-fonte pode ser executado linha por linha em tempo real à medida que sendo traduzida pelo interpretador. Há outras linguagens que são compiladas, isto é, primeiro traduz todo o programa e só depois pode ser executada. 2 Essa inferência é conhecida como Duck Typing (Tipagem de Pato). Esse nome vem da expressão: “Se anda como pato, nada como um pato e faz quack como um pato, então provavelmente é um pato”. Em outras palavras, isso significa que o tipo de uma variável é inferido pelo interpretador em tempo de execução pelo valor que foi atribuído a ela. Se eu atribuo um valor do tipo string, significa que a variável é do tipo string; se eu atribuo um valor do tipo inteiro, significa que a variável é do tipo inteiro; e assim por diante. Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 16 118 ‘20’, logo a linguagem já infere que se trata de uma variável do tipo string. Ué, Diego? Como assim? Galera, tudo que vier entre aspas é considerado uma string (até mesmo números). var2 = ‘20’ print(10 + var2) Na linha seguinte, há um comando (print) para imprimir na tela a soma de 10 com var2 – sendo que 10 é do tipo int e var2 é do tipo string. Isso resultará em um erro porque o Python não permite realizar uma soma entre variáveis string e int – seria necessário fazer uma conversão antes de realizar a operação desejada. Linguagens de programação de tipagem fraca permitem fazer esse tipo de operação sem precisar fazer uma conversão prévia de tipos. Python tem tipagem forte, logo teríamos que fazer uma conversão explícita transformando var2 em um inteiro antes de imprimir o valor em tela. Se ela tivesse tipagem fraca, faria essa conversão implicitamente, sem a necessidade de o programador indicar que deseja fazer uma conversão. Enfim, Python é uma linguagem de tipagem forte e dinâmica, porque não possui conversão implícita de tipos e porque permite alterar o tipo de uma variável durante a execução do código. Por fim, essa linguagem de programaçãoapresenta código-fonte agrupado por indentação. O que diabos é isso, professor? Indentar é o recuo do texto em relação a sua margem! Em outras palavras, se antes de escrevermos uma instrução, utilizarmos quatro espaçamentos da margem esquerda até a instrução propriamente dita, podemos dizer que a indentação utilizada possui quatro espaços. Esse termo vem do inglês indentation e é bastante comum em linguagens de programação. Algumas linguagens utilizam marcadores textuais para identificar e delimitar blocos de código, como chaves ({ }) ou palavras-chave (begin/end). O Python não utiliza nenhum marcador textual para isso – ele utiliza apenas a profundidade da indentação. Dessa forma, códigos que estiverem rente a margem esquerda farão parte do primeiro nível hierárquico; os que estiverem a quatro espaços da margem esquerda estarão no segundo nível hierárquico; e assim por diante. Todos os blocos são delimitados pela profundidade da indentação e, por conta disso, sua organização é vital para o programa escrito nessa linguagem. A sua má utilização acarretará à não execução ou no mal funcionamento do software. Assim, se você criar um while e quiser colocar 4 comandos dentro dele, terá que colocar todos com uma indentação de alguns espaços. Quantos espaços? Quantos você quiser – desde que seja a mesma quantidade no bloco. Veja o exemplo: Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 17 118 ==210444== No código da esquerda, a linha 2 cria um loop de repetição em que as linhas 3 a 6 serão repetidas enquanto i < 3. Sabemos disso porque todas essas linhas estão com indentação interna ao comando while. Por sua vez, a linha 5 está em um bloco pertencente ao if da linha 4, pois está quatro espaços para dentro do if. Dessa forma, a indentação (ou endentação) em Python é estrutural e não apenas um elemento de organização visual, tanto que o código da esquerda é diferente. Python permite utilizar ponto-e-vírgula (;) para delimitar comandos, mas de forma opcional – assim como em outras linguagens como JavaScript e Typescript. Python é distribuída sob uma licença própria (compatível com a GPL), que permite a distribuição – comercial ou não – tanto da linguagem quanto de aplicações desenvolvidas nela, em formato binário ou código fonte, bastando cumprir a exigência de manter o aviso de copyright. Python permite que programas sejam compilados para um formato portável chamado de bytecode. Essa característica faz com que programas escritos nessa linguagem com uma biblioteca padrão sejam executadas da mesma forma em diversos sistemas operacionais que possuam um software interpretador de Python. Python possui uma interface com muitas bibliotecas e sistemas de janela, sendo extensível em C/C++. Além disso, pode ser utilizada como linguagem de extensão para aplicações que necessitam de uma interface programável (muito comum em aplicativos, jogos, processamento de textos, dados científicos e motores de busca). Python possui funcionalidades para expressões regulares; sockets; threads; data/tempo; analisadores XML; analisadores de arquivos de configuração; manipulação de arquivos e diretórios; persistência de dados; unidades de testes; bibliotecas clientes para os protocolos HTTP, FTP, IMAP, SMTP e NNTP. Python suporta o paradigma orientado a objetos com todos os seus componentes, tais como herança (simples ou múltipla), polimorfismo, sobrescrita, encapsulamento, abstração, reflexão, introspecção, etc! Não é necessário entender o que isso significa exatamente, apenas saber que ele suporta e que tudo em Python é um objeto3. Galera, apenas para finalizar é importante mencionar que houve algumas mudanças introduzidas na virada da versão do Python de 2.x para o Python 3.x. Vocês podem acabar fazendo questões de provas antigas e ficarem um pouco confusos, por isso estou fazendo essa ressalva! Em termos de concurso, acredito que vale mencionar apenas uma mudança: o print mudou de instrução para função. O que isso significa na prática? Significa apenas que agora precisa de parênteses: print 'Olá Mundo' # até versão 2.7 print('Olá Mundo')# a partir da versão 3.0 (IF/MT – 2018) Sobre a linguagem Python, é INCORRETO afirmar que: a) Suporta os paradigmas: imperativo, orientado a objetos e funcional. b) Utiliza indentação para delimitar início e fim de blocos. c) A linguagem Python é distribuída sob licença que proíbe sua incorporação em produtos proprietários. 3 Esse paradigma trata um software como uma coleção de agentes interconectados chamados de objetos, que são uma posição na memória que funciona como abstração para qualquer coisa que tenha atributos e comportamentos (Ex: se eu quero representar pessoas em um software, eu posso criar um Objeto Pessoa e configurar seus atributos – pessoa tem nome, idade, altura, etc – e seus comportamentos – pessoa fala, come, anda, etc. Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 18 118 d) Python é uma linguagem de tipagem dinâmica e forte. e) Python é um software de código aberto. _______________________ Comentários: (a) Correto, ele suporta todos esses paradigmas de programação; (b) Correto, ele realmente utiliza endentação para delimitar início e fim de blocos de programação; (c) Errado, Python é um software de código aberto (com licença compatível com a GPL - General Public License), porém menos restritiva – permitindo que ele seja incorporado em produtos proprietários; (d) Correto, ele realmente possui tipagem dinâmica e forte; (e) Correto, ele é uma linguagem de programação, mas também pode ser considerado um software de código aberto pelo conjunto (Letra C). (IF/PB – 2015) Sobre a tipagem de dados na linguagem Python, considere as seguintes afirmativas: I. Python possui tipagem dinâmica. II. Python possui tipagem forte. III. Python não possui tipagem. IV. Python possui tipagem fraca. V. Python possui tipagem estática. Está CORRETO o que se afirma apenas em: a) III. b) I e II. c) IV e V. d) I e IV. e) II e V. _______________________ Comentários: (I) Correto, ele possui tipagem dinâmica; (II) Correto, ele possui tipagem forte; (III) Errado, ele possui tipagem; (IV) Errado, ele possui tipagem forte; (V) Errado, ele possui tipagem dinâmica (Letra B). (IF/RS – 2019) Em relação às características da linguagem Python, é correto afirmar que: a) tem tipagem fraca e dinâmica. b) deve ser usada, exclusivamente, para programação web. c) tem suporte a herança múltipla. d) a tupla é um tipo mutável. _______________________ Comentários: (a) Errado, tem tipagem forte e dinâmica; (b) Errado, pode ser utilizada para desenvolvimento web, criação de fluxos de trabalho, conexão com bancos de dados, resolução de problemas matemáticos, prototipação de software, entre outros; (c) Correto, ele realmente suporta orientação a objetos e herança múltipla; (d) Errado, tupla é tipo imutável (Letra C). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 19 118 Assim como na matemática, operadores são elementos utilizados em linguagens de programação para realizar operações. Existem quase 40 operadores em Python, mas nós não vamosver todos porque diversos deles possuem um péssimo custo/benefício e não valerá a pena! Vamos nos ater – portanto – aos operadores mais cobrados em prova. Abaixo serão apresentadas categorias de operadores com suas descrições e exemplos. Operadores Matemáticos são os mais simples comuns. Nós aprendemos todos eles na época de escola, só basta lembrar da ordem de precedência1: + Soma 10 + 10 = 20. - Subtração 20 - 20 = 0. * Multiplicação 15 * 25 = 375. / Divisão 25 / 4 = 6,25. // Divisão com Piso 25 // 4 = 6 (6,25 arredondado para baixo) . ** Exponenciação 2 ** 5 = 32. % Módulo 30 % 7 = 2 (resto da divisão). Operadores de Atribuição são usados para atribuir valores a variáveis! Considerem na tabela abaixo que as operações seguem uma sequência (o resultado da linha atual depende da linha anterior)2: = Atribuição Simples x = 10 é o mesmo que atribuir o valor 10 a x. += Atribuição com Soma x += 1 é o mesmo que x = x + 1, logo x = 10 + 1 = 11. -= Atribuição com Subtração x -= 6 é o mesmo que x = x - 6, logo x = 11 – 6 = 5. *= Atribuição com Produto x *= 2 é o mesmo que x = x*2, logo x = 5 * 2 = 10. /= Atribuição com Divisão x /= 5 é o mesmo que x = x / 5, logo x = 10 / 5 = 2. Operadores de Comparação (também chamados de Operadores Relacionais) são utilizados para comparar valores! Nos exemplos abaixo, considere sempre que x = 1 e y = 2. Vejamos... == Igual x == y retorna Falso. != Diferente x != y retorna Verdadeiro. 1 A ordem de precedência é uma convenção que indica a ordem pela qual devem ser realizadas as operações em uma expressão com vários operadores. O Python utiliza a ordem PEMMDAS: Parênteses, Exponenciação, Multiplicação/Módulo/Divisão (o que vier primeiro da esquerda para direita), Adição/Subtração (o que vier primeiro da esquerda para direita). 2 Diferente de outras linguagens, Python não possui o operador incremento (++) e decremento (--). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 20 118 > Maior que x > y retorna Falso. < Menor que x < y retorna Verdadeiro. >= Maior ou igual a x >= y retorna Falso. <= Menor ou igual a x <= y retorna Verdadeiro. Operadores Lógicos são utilizados para combinar condições em expressões e também são frequentemente utilizados em Python. Nos exemplos abaixo, considerem que x = 10 e y = 20: and Retorna Verdadeiro se ambas condições forem Verdadeiras x == 10 and y > 20 retorna Falso. or Retorna Verdadeiro se uma das condições for Verdadeira x == 10 or y > 20 retorna Verdadeiro. not Inverte o resultado de uma condição qualquer not(x == 10 or y > 20) retorna Falso. Operadores de Associação são utilizados para verificar se um conjunto de valores está presente em um objeto. Vejamos como funciona: in Retorna Verdadeiro se o conjunto de valores estiver presente no objeto x = [“Flamengo”, “Vasco”] y = “Botafogo” in x print(y) retornará Falso porque Botafogo não está na lista. not in Retorna Verdadeiro se o conjunto de valores não estiver presente no objeto x = [“Flamengo”, “Vasco”] y = “Flamengo” not in x print(y) retornará Falso porque Flamengo está na lista. (MPE/AL – 2018) Considere os seguintes operadores: Exponenciação Comparação de Igualdade Módulo (Resto da Divisão) Assinale a lista dos símbolos que, respectivamente, representam esses operadores no Python: a) ^ == mod b) ** == % c) ** = % d) ** = mod e) ^ = mod _______________________ Comentários: Exponenciação é representado por **; Comparação de Igualdade é representado por == e Módulo (Resto da Divisão) é representado por % (Letra B). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 21 118 ==210444== (AL/RR – 2010 – Letra E) O operador lógico de conjunção ("e", como em a e b) é &&. _______________________ Comentários: o operador lógico de conjunção (“e”, como em a e b) é o and e, não, && (Errado). (CEV – 2018 – Letra A) O operador lógico de conjunção (“e”, como em aa e bb) é &&. _______________________ Comentários: o operador lógico de conjunção (“e”, como em aa e bb) é o and e, não, && (Errado). (IFC/SC – 2015 – Item I) b %= a é equivalente a b = b % a. _______________________ Comentários: b %= a é a forma reduzida de representar b = b % a – assim como b += a equivale é b = b+a (Correto). (IFC/SC – 2015 – Item II) <> é o operador de comparação que significa “diferente de” em Python. O operador != também é, mas este é um operador obsoleto e não se recomenda mais sua utilização. _______________________ Comentários: o operador de "diferente de" do Python é o != e, não, <> (Errado). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 22 118 Uma função é um bloco de código que é executado apenas quando é invocado. São três passos bem simples: (1) uma função é invocada; (2) é passado algum dado como parâmetro ou não; (3) e algum dado é retornado como resultado. No Python, uma função é definida utilizando a palavra- chave def. Sempre que você vir essa palavra em um código-fonte, saiba que ela está definindo uma função (lembrando que a utilização de chaves para delimitar o bloco é facultativa). Seguindo... Sintaxe: def NomeFunção(argumentos): def BomDia(): print('Bom dia!') No código acima, foi definida uma função chamada BomDia(). Toda vez que essa função for invocada, será impresso na tela as palavras “Bom dia!”. Professor, o que você quer dizer com invocar uma função? Invocar significa chamar essa função para que ela seja executada. Caso eu deseje que essa função seja executada em algum ponto do meu código-fonte, eu posso invocá-la bastando apenas chamar seu nome: BomDia(). Professor... e se a minha função precisar de alguns dados para que ela consiga processar alguma informação e retornar um resultado? Sem problemas! Nós podemos passar alguns parâmetros – também chamados de argumentos – dentro dos parênteses separados por vírgulas. Modificando um pouco a função definida no código anterior, nós podemos inserir um nome como parâmetro de modo que seja impressa uma mensagem que dependerá do parâmetro passado: def BomDia(nome): print('Bom dia, ',nome) Note que agora a função precisa de um parâmetro para que possa ser executada! Logo, se eu invoco essa função como BomDia(‘Diego’), será impressa a mensagem “Bom dia, Diego”. Vejam só: BomDia('Diego Carvalho') #Retornará Bom dia, Diego Carvalho BomDia('Renato da Costa') #Retornará Bom dia, Renato da Costa BomDia('Ricardo Vale') #Retornará Bom dia, Ricardo Vale BomDia('Herbert Almeida') #Retornará Bom dia, Herbert Almeida Como já dissemos, é possível também passar mais de um parâmetro para uma função. Para tal, basta separá-los por vírgula dentro dos parênteses: def BomDia(nome1, nome2): print('Bom dia, ' + nome1 + ' e ' + nome2) BomDia('Diego','Renato') #Retornará Bom dia, Diego e Renato Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULOVICTOR DA CONCEICAO TAVARES 23 118 Em todas as funções apresentadas, não se retornou nenhum resultado (dados apenas foram impressos em tela). No entanto, é possível retornar algum valor usando a palavra-chave return: def MultiplicaPorCinco(numero): return 5*numero #Retornará o número do parâmetro multiplicado por 5 print(MultiplicaPorCinco(1)) #Imprimirá 5*1 = 5 print(MultiplicaPorCinco(2)) #Imprimirá 5*2 = 10 print(MultiplicaPorCinco(3)) #Imprimirá 5*3 = 15 print(MultiplicaPorCinco(4)) #Imprimirá 5*4 = 20 print(MultiplicaPorCinco(5)) #Imprimirá 5*5 = 25 Um dado importante é que uma variável somente está disponível dentro da região em que ela é criada – chamamos isso de escopo! Como é, Diego? Vejam o código-fonte abaixo: def minhaFuncao(y): x = y + y #Escopo Local print(x) return x x = 5 #Escopo Global minhaFuncao(x) print(x) Notem que definimos inicialmente uma função chamada minhaFuncao( ). Toda variável criada dentro dessa função possui um escopo local, logo somente podem ser utilizadas dentro dessa função. Em seguida, temos x = 5 com uma indentação diferente, logo ele não possui escopo local daquela função, ele possui um escopo global. Por que? Porque ele não foi criado dentro da função, portanto ele existe e pode ser utilizado em qualquer parte do código. Dito isso, vamos analisar o código! A função é definida (linhas 1 a 4), depois cria-se uma variável x com valor 5 e chama-se a função com esse parâmetro (linha 7), logo minhaFuncao(5). Quando essa variável vai para dentro da função, ela é recebida como y (minhaFuncao(y)). E essa função cria uma variável x (que só existe dentro dela) e diz que x = y + y. Ora, quanto é y? y = 5, logo x = 5+5 = 10. Na linha 3, a função imprime x (logo, imprime 10) e retorna 10. Quando voltamos ao corpo principal do código-fonte, temos um print(x). Ora, quanto é x? Agora que vem o pulo do gato! Aquele x utilizado na função só existe lá dentro porque ele tem escopo local. Logo, quando voltamos ao corpo principal, ele não existe! No entanto, existe outro x no corpo principal. Qual? Aquele definido na linha 6! Logo, a linha 8 imprimirá 5! Legal, né? Imprimimos x duas vezes, mas dentro da função ele tem valor 10 e fora da função ele tem valor 5. (Prefeitura de Criciúma/SC – 2018) Uma função no Python é um conjunto nomeado de código, que pode também ter uma lista opcional de argumentos. Assinale a alternativa que corresponde a forma padrão de uma função na linguagem Python: a) default function name (argument); Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 24 118 ==210444== b) void function name (argument); c) def function name (argument) : d) function name (argument) : _______________________ Comentários: a sintaxe de uma função é: def NomeFunção(argumentos):. Logo, a única opção que é adequada a essa sintaxe é def function name (argument) : (Letra C). (FUB – 2013) Considere o código abaixo digitado em Python. ..I.... contar(n): a = 1 while a < n: print a, a = a+1 contar(10) Preenche, corretamente, a lacuna I: a) function b) def c) procedure d) public e) void _______________________ Comentários: questão tranquilaaaaaça – a palavra-chave para representar uma função é o def. Professor, como você sabe que se trata de uma função? Porque veja que no final é executado contar(10), que é exatamente o nome da função que está sendo definida na primeira linha de código (Letra B). Por fim, é importante falar sobre funções/expressões lambda. O que é isso, Diego? São pequenas funções anônimas! Como assim? Galera, essas funções são úteis para deixar o código mais simples e legível. Elas são funções de uma única linha, isto é, não possuem nome e são declaradas como variáveis. Além disso, sua sintaxe não utiliza a palavra-chave def e nem utilizam a palavra return antes do comando porque se considera que haverá um retorno implícito. Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 25 118 Sintaxe: lambda lista_de_argumentos : expressão Uma função anônima é útil principalmente nos casos em que precisamos de uma função para ser passada como parâmetro para outra função e que não será mais necessária após isso – como se fosse “descartável”. Vejam no exemplo abaixo a criação de uma função anônima que recebe dois parâmetros – x e y – e retorna a soma das duas variáveis. Essa função anônima é atribuída à variável s, que quando é invocada retorna essa soma: s = lambda x,y : x+y print(s(10,20)) #Retornará 10+20 = 30 Para finalizar, vamos ver uma comparação de uma função comum apresentada anteriormente com uma função lambda. Vejamos... def quadrado(x): return x*x print(quadrado(2)) #Retornará 4 Notem que se trata de uma função comum. Como poderíamos transformar essa função em uma expressão lambda? Basta utilizar a sintaxe apresentada anteriormente. Logo, teríamos... quadrado = lambda x: x*x print(quadrado(2)) #Retornará 4 (FUB – 2013) Na linguagem Phyton, uma função lambda atribui à nova função o nome que está no cabeçalho, em vez de retorná-la como resultado. _______________________ Comentários: a palavra-chave lambda faz exatamente o oposto do que está no enunciado: lambda retorna uma função anônima como resultado. O Python (ignorem a grafia errada da questão) retorna uma função ao invés de atribuí-la a um nome – como ocorria com def (Errado). (UFPRE – 2019) Funções lambda em Python são úteis para deixar o código mais simples e legível. Abaixo temos a descrição de uma função lambda em Python. O valor resultante da expressão será: ((lambda x: (lambda y: x**2 - y))(29))(31) a) 810 b) 27 c) 932 d) 33 e) 872 _______________________ Comentários: notem que temos uma função lambda dentro de outra função lambda. É importante dizer que é possível aplicar um argumento na função lambda rodeando a função e seus argumentos entre parênteses (Ex: (lambda x:x+1)(5) retornará 5+1 = 6. Para facilitar a visualização, podemos reescrever a função como (lambda x,y : x**2-y)(29,31). Dessa forma, temos 29²-31 = 841-31 = 810 (Letra A). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 26 118 A utilização de comentários é uma prática comum em programação. Seu objetivo é adicionar descrições em partes especificas do código, seja para documentá-lo, seja para descrevê-lo, ou mesmo, para marcar que uma determinada linha, ou um conjunto de linhas, não devem ser executadas. Podem ser utilizados para documentar programas, classes, funções, variáveis, constantes ou o que mais você desejarmos. Quando criamos uma funcionalidade, é importante que o código possua uma documentação para que os outros programadores (e até nós mesmos) entendam qual foi a lógica utilizada. Para adicionarmos comentários, utilizamos uma marcação especial a fim de informar ao interpretador para não interpretar os caracteres contidos na notação que demarca trechos de comentários. E que marcação seria essa, professor? No caso do Python, há notações diferentes para comentários de uma única linha e comentários de mais de uma linha. Caso você deseje fazer umcomentário de apenas uma linha, pode utilizar o caractere cerquilha (#). Tudo que estiver à frente desse caractere deve ser ignorado pelo interpretador. Caso você deseje fazer um comentário com mais de uma linha, pode utilizar aspas triplas (simples ou duplas). Vejamos alguns exemplos: # Comentário para documentar a função "Olá, Mundo!" print("Olá, Mundo!") ’’’ Comentário para documentar a função "Olá, Mundo!" com mais de uma linha e aspas simples ’’’ print("Olá, Mundo!") ””” Comentário para documentar a função "Olá, Mundo!" com mais de uma linha e aspas duplas ””” print("Olá, Mundo!") Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 27 118 Tipos e Variáveis Definições INCIDÊNCIA EM PROVA: baixíssima Em nível de hardware, seu computador possui um componente chamado Memória RAM, que é responsável – grosso modo – por armazenar dados, sendo composta por milhões e milhões de posições ou espaços físicos. Em nível de software, dados são armazenados – em geral – em variáveis, que são essas posições na memória responsáveis por armazenar dados e identificadas por um nome. Notem abaixo que há uma posição na memória do computador que guarda um espaço físico e que nós demos o nome dessa posição de numeroDaConta. Logo, esse é o nome que identifica esse endereço na memória do computador. Essa posição pode armazenar uma variável, que são dados que podem variar com o tempo ou circunstância. Note pela imagem que atualmente essa variável está armazenando o valor 4823 na posição numeroDaConta. O conteúdo de uma variável pode ser alterado, consultado ou apagado diversas vezes durante a execução de um algoritmo, porém o valor apagado será perdido. Eu gosto de pensar na variável como uma caixa aberta, em que você inserir, retirar ou modificar coisas de dentro. Em contraste com uma constante, que seria uma caixa em que – uma vez inserido algo dentro – não mais permite inserções, alterações ou remoções enquanto o programa estiver sendo executado. Galera, assim como as línguas faladas, as linguagens de programação possuem o que chamamos de declarações. O que são declarações? Basicamente são pensamentos completos e individuais – por exemplo: “Eu quero café” ou “Está chovendo”. Usando palavras diferentes, podemos mudar o Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 28 118 significado – por exemplo: “Eu quero café” para “Eu quero unicórnios”. No entanto, não podemos mudar de “Eu quero café” para “Eu quero chovendo” – que não faz sentido gramatical. O conjunto de regras que governam a estrutura e composição de declarações em uma linguagem é chamado de sintaxe. Assim como o idioma Português possui uma sintaxe, todas as linguagens de programação também possuem. Vejam só: a é igual a 5 é uma declaração na língua portuguesa; a = 5 também é uma declaração, mas na linguagem de programação Python. Neste caso, a declaração diz que uma variável chamada a armazena o número inteiro 5. Galera, quando uma declaração atribui um valor a uma variável, nós chamamos isso de "declaração de atribuição". É possível também expressar coisas mais complexas como: A é 5; B é 10; C é A mais B; O que o algoritmo acima está querendo dizer? Este algoritmo diz ao computador para definir a variável A como 5, a variável B como 10, e, finalmente, somar A e B e armazenar o resultado na variável C. Legal, não é? Note que podemos chamar as variáveis de qualquer coisa que nós quisermos desde que cumpra a sintaxe da linguagem de programação escolhida. Em vez de A, B e C, poderíamos chamar de Maçã, Pera e Uva. Pessoal, é claro que uma melhor prática seria nomeá-las com coisas que façam sentido no caso de alguém mais tentar entender seu código. Imaginem vocês tentando ler um código escrito por outra pessoa! Fica mais fácil de compreender Maçã, Pera e Uva do que A, B e C. Concordam? Legal! As declarações atribuem identificadores para variáveis, tipos, funções, entre outros. Vamos agora ver como tudo isso funciona especificamente no Python! \o/ Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 29 118 Identificadores INCIDÊNCIA EM PROVA: baixa O que é uma variável? Variáveis são uma espécie de contêiner para armazenar valores de dados. No Python, as variáveis possuem duas particularidades: (1) variáveis são consideradas um tipo de objeto; (2) variáveis não precisam ser previamente declaradas. Como é, Diego? Em outras linguagens de programação, é necessário usar um comando para declarar uma variável. No Python, não é necessário usar comando nenhum, basta informar o nome e o valor que será armazenado. nome = "Diego" idade = 31 Vejam acima que não é necessário usar nenhum comando, eu simplesmente inseri o nome da variável e o seu valor! Em outras linguagens de programação, eu teria que fazer algo como: var nome = "Diego" var idade = 31 Além disso, não é necessário informar qual é o tipo da variável, isto é, quais tipos de valores serão armazenados na variável. Em outras linguagens de programação, eu teria que fazer algo como: var string nome = "Diego" var int idade = 31 É possível fazer várias atribuições de variáveis em uma mesma linha. Para tal, basta separar os identificadores por vírgula do lado esquerdo da atribuição e manter a mesma ordem no lado direito: nome, idade = "Diego", 31 Professor, eu posso dar qualquer nome para uma variável? Não é bem assim! Identificadores de variáveis válidos devem obedecer às seguintes regras: Começar necessariamente com uma letra ou _ (underline); Jamais devem começar com um número; Conter caracteres alfanuméricos e undelines (a-z, A-Z, 0-9 e _); São Case-Sensitive, isto é, capazes de diferenciar maiúscula de minúscula. Essa mesma regra vale também para identificação de funções, classes, módulos, entre outros. Vejamos alguns exemplos de nomes válidos e inválidos: NOMES VÁLIDOS DE VARIÁVEIS NOMES INVÁLIDOS DE VARIÁVEIS nomevariavel = "Diego" 2nomevariavel = "Diego" nome_variavel = "Diego" nome-variavel = "Diego" _nome_variavel = "Diego" nome variavel = "Diego" nomeVariavel = "Diego" nome#variavel = "Diego" Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 30 118 NOMEVARIAVEL = "Diego" Nome%variavel = "Diego" nomevariavel2 = "Diego" n0m3v@r1@vel = "Diego" O Python possui uma função chamada print() responsável por imprimir na tela do computador o valor de uma variável. Vejamos como funciona: nome = "Diego" idade = 31 print(nome) #Imprimirá: Diego print(idade) #Imprimirá: 31 Para imprimir um texto junto com o valor de uma variável, basta utilizar o caractere +. Lembrando que esse caractere serve tanto para somar o valor de variáveis quanto para realizar concatenações. nome = "Diego" idade = 31 print("Prof. " + nome + " tem " + str(idade) + " anos") #Imprimirá: Prof. Diego tem 31 anos Professor,o que é essa função str( ) com o parâmetro idade? Muito observador você... nós vamos entender no próximo tópico :) Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 31 118 ==210444== Tipos de Dados INCIDÊNCIA EM PROVA: ALTA CATEGORIA TIPO PYTHON Exemplo BOOLEANO Booleano bool x = True x = False numérico Inteiro int x = 10 x = -5 Ponto Flutuante float x = 10.7 x = -2.8 Complexo complex x = 345j x = 2-9j textual Texto str x = 'texto' x = "texto" Coleção/sequência Lista list x = [4, 8] x = list() Tupla tuple x = (5, 10) x = tuple() Set set x = {2, 4} x = set( ) Dicionário dictionary x = {'nome': 'Diego', idade: 31} Nos próximos tópicos, vamos detalhar os tipos coleção e dicionário! Por enquanto, é importante mencionar alguns detalhes sobre os tipos booleano, numérico e textual. O tipo booleano não tem nada demais – ele só representa dois valores: True ou False. Isso é extremamente útil em programação para avaliar se alguma expressão é verdadeira ou falsa. Quando você compara dois valores, por exemplo, retorna-se um valor verdadeiro ou falso. É importante ressaltar que existe também uma função chamada bool(). Essa função retorna um valor True ou False dado um determinado parâmetro de entrada. Em regra, ela retornará sempre True, com algumas exceções: bool(), bool(0) e bool(False) – nesse caso, ela retornará False. Isso já foi tema de questão de prova da Polícia Federal (2021) com pegadinha ainda! Lembre-se que “False” é diferente de False – o primeiro é uma string e o segundo é um booleano. Já os números podem ser inteiros, ponto flutuante ou complexos. Inteiro é um número positivo ou negativo sem decimais (Ex: 2, -50, 137); Ponto Flutuante é um número positivo ou negativo com um ou mais decimais (Ex: -0.5, 3.1415, 137.0); e Complexo é um número escrito com a letra j para indicar a parte imaginária (Ex: 8j, -14j, 500j). Vocês se lembram quando estudaram números complexos na escola? Pois é, pode ignorar aqui também porque isso não cai. Por fim, variáveis textuais/literais são cadeias de caracteres chamadas de string. Trata-se de uma sequência de caracteres geralmente utilizada para representar caracteres, palavras, frases ou textos. Os valores podem vir dentro de aspas simples ou aspas duplas (Ex: ‘Diego’ ou “Diego”). Além disso, os caracteres que compõem uma string podem ser acessados individualmente. Para tal, basta utilizar colchetes. Vejamos... nome = "Diego" print(nome[0]) #Retornará o caractere de índice 0 = “D” Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 32 118 Nós falamos que uma string é uma cadeia de caracteres. Logo, no exemplo acima, é como se nome fosse uma variável que armazenasse [“D”,”i”,”e”,”g”,“o”]. Cada letra nessa cadeia está associada a um índice sequencial: nome[0] = “D”; nome[1] = “i”; nome[2] = “e”; nome[3] = “g”; nome[4] = “o”. E se você quisesse retornar apenas os caracteres do meio dessa string? Nesse caso, bastaria utilizar a instrução print(nome[1:4] = “ieg”). Vamos ver agora algumas funções textuais úteis: funções DESCRIÇÃO EXEMPLO capitalize() Converte o primeiro caractere em maiúscula. x = “olá, mundo!” print(x.capitalize()) #retorna “Olá, mundo!” find() Retorna a posição da primeira ocorrência de um valor em uma string ou -1 se não existir. x = “Uma vez Flamengo, sempre Flamengo!” print(x.find(“vez”)) #retorna 4 index() Semelhante ao find(), mas retorna uma exceção caso o valor não exista. x = “Uma vez Flamengo, sempre Flamengo!” print(x.index(“vasco”)) #retorna ValueError len() Retorna o tamanho da string. x = “Uma vez Flamengo, sempre Flamengo!” print(len(x)) #retorna 34 split() Divide substrings encontradas a partir de um separador especificado e retorna uma lista. x = “Olá, Mundo!” print(x.split(“,”)) #retorna ['Olá', ' Mundo!'] strip() Remove espaços em branco (ou caracteres dentro do parêntese) do início/fim da string. x = “ Olá, mundo! ” print(x.strip()) #retorna “Olá, Mundo!” (AL/TO – 2005) O método capitalize da classe String do Python é utilizado para: a) remover todos os espaços de uma string. b) verificar se todos os caracteres da string são numéricos. c) procurar uma substring em uma string retornando seu índice caso seja encontrada. d) retornar uma cópia de uma string somente com o primeiro caractere em maiúsculo. e) retornar uma cópia de uma string com todos os caracteres em minúsculo. _______________________ Comentários: esse método é responsável por retornar uma cópia da string original somente com o primeiro caractere em maiúsculo (Letra D). (Polícia Federal – 2018) Considere os seguintes comandos na programação em Python. a = " Hello, World! " print(a.strip()) Esses comandos, quando executados, apresentarão o resultado a seguir. a[0]=Hello, a[1]=World! _______________________ Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 33 118 Comentários: opa... nada a ver! A função strip() é responsável por remover espaços no início e no fim de uma string, portanto o resultado esperado será: “Hello, World!” – sem os espaços iniciais e finais (Errado). É importante falar rapidamente sobre casting! Esse é um recurso que permite definir ou converter o tipo de uma variável. Em geral, isso é feito por meio de três funções: FUNÇÃO DE CASTING DESCRIÇÃO int() Converte variáveis do tipo inteiro, ponto flutuante ou string em um inteiro. #Exemplos: x = int(100) #x será 100 y = int(4.8) #y será 4 z = int('5') #z será 5 float() Converte variáveis do tipo inteiro, ponto flutuante ou string em um ponto flutuante. #Exemplos: x = float(100) #x será 100.0 y = float(3.6) #y será 3.6 z = float('2') #z será 2.0 str() Converte variáveis do tipo inteiro, ponto flutuante ou string em uma string. #Exemplos: x = str('Diego') #x será ‘Diego’ y = str(1234567) #y será ‘1234567’ z = str(3.14159) #z será ‘3.14159’ (CRECI – 2016) Qual alternativa representa a declaração de uma variável do tipo texto, na linguagem de programação Python? a) var valor = 3; b) boolean inicio = falso; c) textp = “texto de exemplo”; d) int i = 1; _______________________ Comentários: (a) Errado, essa é a declaração de uma variável do tipo inteiro e não é necessário utilizar a palavra-chave var; (b) Errado, essa é a declaração de uma variável do tipo booleana e não é necessário definir o tipo como boolean; (c) Correto, não utiliza palavras-chave nem o tipo da variável e o valor está entre aspas; (d) Errado, essa é a declaração de uma variável do tipo inteiro e não é necessário definir o tipo como int (Letra C). Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 34 118 Estruturas de Dados Meus queridos, nós estudamos cinco tipos de dados no tópico anterior (booleano, inteiro, ponto flutuante, complexo e textual). Todos eles possuem uma característica em comum: são capazes dearmazenar um único dado. No entanto, para armazenar múltiplos itens dentro de uma única estrutura, utilizamos estruturas de dados. No caso do Python, essas estruturas de dados são chamadas de coleções (collections). Vamos entender isso melhor... Uma coleção é um contêiner utilizado para armazenar uma coleção de dados. Em outras palavras, trata-se de uma estrutura de dados utilizada para armazenar objetos. Galera, em algumas situações você precisa armazenar um conjunto de valores e – não apenas – um único valor. Para escolher qual coleção será utilizada, é importante entender as propriedades de cada tipo a fim de tirar o melhor possível de cada estrutura. Bem, existem quatro tipos de coleção... TIPO DE COLEÇÃO TRADUÇÃO DESCRIÇÃO LIST LISTA Trata-se de uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados. TUPLE TUPLA Trata-se de uma coleção de valores ordenados, imutáveis e indexáveis que pode conter valores duplicados (também podem ser chamadas de sequências). SET CONJUNTO Trata-se de uma coleção de valores desordenados, mutáveis e não indexáveis que não pode conter valores duplicados. DICTIONARY DICIONÁRIO Trata-se de uma coleção de valores desordenados, mutáveis e indexáveis que não pode conter valores duplicados. Calma! Nós vamos explicar tim-tim por tim-tim cada uma dessas características das coleções em tópicos específicos nas próximas páginas... Listas INCIDÊNCIA EM PROVA: Altíssima Uma lista é uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados e são delimitadas por colchetes. Vejamos um exemplo: ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas) #Retornará ['maçã', 'carambola', 'banana'] Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em uma única variável. Legal, mas e se eu quiser acessar uma fruta específica? Vejamos... ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas[1]) #Retornará carambola Galera, cada valor em uma lista é indexado por um número inteiro. O que isso significa? Significa que existe um número inteiro que referencia cada valor da lista com o intuito de facilitar seu Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 35 118 acesso. Professor, não deveria ter retornado maçã em vez de carambola, uma vez que foi utilizado o índice [1]? Não, porque – por convenção – adotou-se que o índice de lista começa sempre pelo [0] (zero). Vejam só o que aconteceria se o código fosse assim: ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas[0]) #retornará maçã print(ListaFrutas[1]) #retornará carambola print(ListaFrutas[2]) #retornará banana print(ListaFrutas[3]) #retornará IndexError: list index out range Note que se eu tentar acessar o índice [3], retornará Erro de Índice: índice da lista fora de alcance. Professor, e se eu quiser modificar algum valor dessa lista? É muito simples também... ListaFrutas[0] = "manga" ListaFrutas[2] = "carambola" print(ListaFrutas) #retornará ['manga', 'carambola', carambola] Percebam que eu mudei o valor armazenado no índice [0] e índice [1] da lista e o resultado correspondeu aos novos valores. Dito isso, vamos relembrar nossa definição inicial de lista? Uma lista é uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados. Uma lista é uma coleção de valores? Sim, nós vimos que ele é capaz de armazenar múltiplos dados. Os valores de uma lista são ordenados? Sim, ser ordenado significa que há uma ordem qualquer. Professor, é necessariamente uma ordem alfabética ou numérica? Não, pode ser qualquer ordem! Os valores de uma lista são mutáveis? Sim, nós vimos que é possível modificar seus valores no exemplo anterior. Os valores de uma lista podem ser duplicados? Sim, em nossa lista final, há duas ocorrências da fruta ‘carambola’. Bem, agora nós já conseguimos entender cada ponto da definição de lista, então chegou o momento de nos aprofundar mais... O que acontece se eu utilizar um índice negativo em uma lista? Galera, um índice negativo significa que a lista começa do fim para o início. Como é, Diego? É só ver a lista de modo invertido, olha só... ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas[-1]) #retornará banana print(ListaFrutas[-2]) #retornará carambola print(ListaFrutas[-3]) #retornará maçã print(ListaFrutas[-4]) #retornará IndexError: list index out range Note que há uma observação: “maçã” está no índice [0] e no índice [-3]. Além disso, é possível especificar uma extensão de índices também... ListaFrutas = ["maçã", "carambola", "banana", "pera", "laranja", "amora"] print(ListaFrutas[1:2]) #retornará [‘carambola’] print(ListaFrutas[1:3]) #retornará [‘carambola’, ‘banana’] print(ListaFrutas[1:4]) #retornará ['carambola', 'banana', 'pera'] Diego Carvalho, Renato da Costa, Equipe Informática e TI, Raphael Henrique Lacerda, Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos Aula 01 Receita Federal (Analista Tributário) Fluência em Dados - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 216378005013218101 - PAULO VICTOR DA CONCEICAO TAVARES 36 118 print(ListaFrutas[1:5]) #retornará ['carambola', 'banana', 'pera', 'laranja'] Note que o valor contido na posição do índice à esquerda dos dois-pontos é retornado, mas o valor contido na posição do índice à direita, não. Há também algumas variações: ListaFrutas = ["maçã", "carambola", "banana", "pera", "laranja", "amora"] print(ListaFrutas[:2]) #retornará ['maçã', 'carambola'] print(ListaFrutas[3:]) #retornará ['pera', 'laranja', 'amora'] Note que – se não inserirmos nenhum valor à esquerda – considera-se como [0] ; e – se não inserirmos nenhum valor à direita, considera-se até o final da lista. Galera, nós temos visto diversos exemplos em que todos os valores da lista são do tipo texto, mas eles poderiam ter outros tipos (inclusive tipos diferentes em uma mesma lista). Por essa razão, dizemos que uma lista é um tipo de coleção heterogênea. Galera, nós já vimos que é possível criar funções em Python, mas já existem diversas funções (ou métodos) prontos para serem utilizados. Vamos conhecê-los... FUNÇÃO DESCRIÇÃO EXEMPLO len( ) Função utilizada para retornar quantos itens uma lista possui. ListaQualquer = [2020, "Flamengo", True] print(len(ListaQualquer)) #Retornará 3 append( ) Função utilizada para adicionar um item ao final da lista. Pensando como uma pilha, de modo inverso a uma lista, ele adiciona um item no topo.1 ListaQualquer = [2020, "Flamengo", True] ListaQualquer.append(5) print(ListaQualquer) #Retornará [2020, "Flamengo", True, 5] insert( ) Função utilizada para adicionar um item a um índice especificado. ListaQualquer = [2020, "Flamengo", True, 5] ListaQualquer.insert(3,"Bola") print(ListaQualquer) #Retornará [2020, "Flamengo", True, 'Bola', 5] remove( ) Função utilizada para remover a primeira ocorrência de um item especificado em uma lista. ListaQualquer = [2020, "Flamengo", True, "Bola", 5] ListaQualquer.remove(2020) print(ListaQualquer) #Retornará ["Flamengo", True, "Bola", 5] pop( ) Função utilizada para remover item especificado (ou o último item se nenhum item for especificado). Pensando como uma pilha, de modo inverso a uma lista, essa função recupera o primeiro item quando não é espeficiado. ListaQualquer = ["Flamengo", True, "Bola", 5] ListaQualquer.pop() print(ListaQualquer) #Retornará ["Flamengo", True, "Bola"] ListaQualquer.pop(2) print(ListaQualquer) #Retornará ["Flamengo", True"] 1 Em programação,
Compartilhar