·
Engenharia Elétrica ·
Introdução à Lógica e Programação
Send your question to AI and receive an answer instantly
Recommended for you
6
Estruturas de Dados em Python - Tuplas, Listas e Dicionários
Introdução à Lógica e Programação
UMG
1
Codigo Python Calculo Desconto Produto - Loja Renan Portela Jorge
Introdução à Lógica e Programação
UMG
4
Atividade de Introdução a Programação em Portugol
Introdução à Lógica e Programação
UMG
22
Questões de Lógica de Programação e Algoritmos: Arquitetura de Von Neumann, Expressões Matemáticas e Nomes de Variáveis em Python
Introdução à Lógica e Programação
UMG
4
Código em Portugol
Introdução à Lógica e Programação
UMG
15
Programa Python Desconto Atacado - App de Vendas
Introdução à Lógica e Programação
UMG
1
Precalculo - Calculo de f(2) para f(x) = x^2 - Questao Resolvida
Introdução à Lógica e Programação
UNINTER
37
Linguagem C Ponteiros - Definição Declaração e Utilização
Introdução à Lógica e Programação
IFSC
1
Exemplo de Saída de Console com Mensagens de Pedido e Erro
Introdução à Lógica e Programação
UNINTER
17
TCC Engenharia Elétrica - Automação e Monitoramento Residencial com ESP32
Introdução à Lógica e Programação
IFTM
Preview text
LÓGICA DE PROGRAMAÇÃO E ALGORITMOS AULA 6 Prof Vinicius Pozzobon Borin CONVERSA INICIAL Ao longo desta aula você irá aprender a trabalhar com variáveis compostas em Python Iremos aprender os três principais tipos existentes na linguagem as tuplas as listas e os dicionários Iremos investigar em linguagem Python as características e diferenças de cada uma assim como criar e manipular todas elas No último tema desta aula iremos aprender mais alguns recursos de manipulação de strings para consolidar o seu conhecimento Assim anteriormente todos os exemplos apresentados neste material poderão ser praticados concomitantemente em um Jupyter Notebook como o Google Colab e não requer a instalação de nenhum software de interpretação para a linguagem Python em sua máquina Ao longo do material você encontrará alguns exercícios resolvidos Esses exercícios estão colocados em linguagem Python TEMAS 1 TUPLAS Vamos iniciar esta aula retomando um conceito apresentado anteriormente por meio de uma analogia que variáveis são como gavetas em uma estante em que cada gaveta contém um nome E dentro de cada gaveta iremos armazenar um único dado Porém imagine que agora você quer armazenar itens para uma mesma finalidade nas gavetas Para esta situação seria interessante que todas as gavetas pudessem atender pelo mesmo nome nome da variável Se todas as gavetas terão o mesmo nome como podemos identificar qual gaveta será aberta A resposta é por meio de uma numeração como um índice Deste modo podemos dizer abra a gaveta 3 ou abra a gaveta 5 Vejamos um segundo exemplo lúdico O nossa mascote o Lenhadorzinho estava com dificuldades de transportar seus itens ao sair em sua aventura Ele só conseguia transportar um item por vez em suas mãos Sendo assim ele resolveu comprar uma mochila para expandir seu espaço Agora dentro do seu inventário cabem quatro itens ele decide carregar seu machado uma camisa e comida bacon e abacate Portanto os itens dentro de sua mochila são Figura 1 Mochila do Lenhadorzinho Créditos deymos Shanvood Batshevs InspiringShutterstock Observe que antes da existência da mochila Somente um item podia ser transportado por vez Isso seria o equivalente a termos uma variável capaz de armazenar na memória um único dado por vez chamamos de variável simples A nossa mochila seria o que chamamos de variável composta Neste tipo de variável temos diversos espaços iguais na memória capazes de armazenar dados e todos eles atendem pelo mesmo nome Neste caso se quisermos acessar o machado escrevemos mochila0 O bacon Colocamos na mochila2 A variável apresentada no exemplo é uma estrutura de dados Uma estrutura de dados é um conjunto de dados organizados e uma maneira específica na memória do programa A maneira como os dados estão organizados na memória como podem ser buscados manipulados e acessados são o que definem e diferenciam as estruturas de dados Deste modo em linguagem Python temos majoritariamente três tipos de variáveis que armazenam diversos valores tuplas listas e dicionários Todas apresentam características organizacionais distintas e iremos investigar todas elas ao longo desta aula 11 CONSTRUINDO E MANIPULANDO TUPLAS Vamos agora de fato à primeira estrutura A tupla é o tipo de variável composta em Python mais simples Ela tem como característica primária ser imutável Nunca esqueça dessa informação pois uma tupla uma vez criada não pode mais ser alterada ao longo da execução do programa Repetindo a tupla é imutável A tupla é uma estrutura estática de dados isso significa que uma vez alocada na memória não pode mais ter seu endereçamento alterado Apesar de conter suas particularidades a tupla se assemelha um pouco às estruturas de vetorarray para quem já conhece linguagens de programação como C ou Java A representação de uma tupla em Python se dá da maneira a seguir Colocamos os dados que desejamos cadastrar na tupla separados por vírgula e dentro de parênteses Se mandarmos fazer o print da tupla todos os dados serão impressos junto dos parênteses Podemos manipular e fatiar a tupla da mesma maneira que aprendemos com strings anteriormente A seguir você encontra um resumo com algumas possibilidades de fatiamento e manipulação de índices em tuplas Lembrando que como uma tupla é imutável isso significa que não podemos realizar atribuições com tuplas Veja que se tentarmos substituir o valor bacon por ovos ocorre um erro tuple object does not support item assignment objeto tupla não suporta atribuição Podemos fazer uma varredura pelos elementos da tupla utilizando um laço de repetição Como a tupla contém um tamanho finito vamos trabalhar com o laço for Para tuplas o for é capaz de trabalhar mesmo sem a função range Podemos somente fazer o laço a seguir que imprimiremos todos os elementos da tupla na tela A variável item está funcionando como um iterador neste caso e irá passar por todos os elementos da tupla realizando um print de cada um Caso prefira podemos também criar a varredura na tupla da maneira convencional com range mas para isso precisaremos primeiro encontrar o tamanho da tupla usando a função len e em seguida fazer o laço para esse tamanho Veja a seguir Nesta segunda possibilidade precisamos explicitar o índice de cada item da mochila caso contrário o print não é realizado corretamente Agora imagine que vamos fazer um aprimoramento na mochila do Lenhadorzinho inserindo mais dois espaços para itens Se nossa variável da mochila contém quatro espaços e é uma tupla ela não pode ter seu tamanho alterado Porém podemos criar uma nova variável de tupla que irá conter a mochila antiga mais a atualização de tamanho Também podemos juntar ambas tuplas por meio de concatenação assim como já aprendemos com strings Veja Temos uma tupla agora de seis dados ou seja uma mochila com seis espaços Observe que como fizemos uma concatenação estamos juntando duas tuplas isso significa que a ordem como fazemos a junção faz toda a diferença Veja no exemplo a seguir 12 DESEMPACOTAMENTO DE PARÂMETROS EM FUNÇÕES Podemos empregar tuplas para realizar um procedimento bastante poderoso em Python o de desempacotar um parâmetro em uma função Suponha que você quer realizar o somatório de diversos valores porém você não sabe quantos valores serão somados Pode ser que sejam somente 2 ou então 10 ou mesmo 100 números Como criar uma função capaz de receber um número tão variável de parâmetros Vejamos no exemplo a seguir o recurso do desempacotamento No código apresentado note que criamos uma função soma com um parâmetro Porém colocamos um asterisco antes do nome da variável O símbolo de asterisco em Python indica que queremos desempacotar a variável num Observe que no programa principal realizamos duas chamadas distintas da função soma Uma com dois valores e outra com nove valores Todos esses valores serão armazenados em uma mesma variável dentro da função e uma tupla será criada com os dados recebidos Note que dentro da função foi realizado um print mostrando que os dados ali colocados são uma tupla os parênteses na saída indicam que é uma tupla Dentro da função fazemos um laço da maneira como apresenta nesta aula andando por todos os elementos da tupla e somandoos retornando o resultado final do somatório 13 EXERCÍCIOS Vamos praticar um pouco o conceito de tuplas e o de desempacotamento de funções 131 Exercício Visite o site que contém o ranking das linguagens de programação mais amadas no ano de 2020 httpsinsightsstackoverflowcomsurvey2020technologymostloveddreadedandwantedlang uagesloved Crie uma tupla com as 10 primeiras linguagens de programação mais amadas Em seguida faça Apresente na tela o ranking numerado com uma palavra em cada linha Apresente na tela somente o top 3 de linguagens Apresenta na tela as últimas 5 do ranking Em que posição está a linguagem Python Mostre na tela Python 132 Exercício Escreva uma função que contenha dois parâmetros Essa função recebe como parâmetro uma string com uma mensagem a ser impressa na tela e outro parâmetro como sendo uma quantidade arbitrária de números empacotados Dentro da função encontre o maior entre todos os números recebidos e escreva na tela dentro da função a mensagem e o maior valor Python TEMA 2 LISTAS Uma tupla é imutável certo Porém existe uma maneira de criarmos uma variável composta em Python que seja possível alterar seus dados a tupla Exemplificando imagine que o Lenhadorzinho em sua aventura comeu o bacon e encontrou no caminho uma laranja Ele deseja substituir a laranja pelo espaço que estava o bacon na sua mochila Podemos fazer isso com uma estrutura do tipo lista Escrevemos uma lista utilizando colchetes Observe a seguir a diferença de uma lista para tupla em Python Uma tupla sempre é escrita com parênteses já a lista sempre com colchetes Agora caso queira fazer a substituição de bacon por laranja a lista permitirá lembrese que na tupla isso resultava em um erro Veja 21 MANIPULANDO LISTAS As possibilidades de manipulação de listas em Python são bastante vastas Podemos realizar todas as manipulações já aprendidas com tuplas mas vamos além Começamos aprendendo a inserir um elemento no final da lista Nossa mochila atualmente contém quatro dados índices 0 até 3 Se tentarmos adicionar um quinto item fazendo mochila4 Ovos não irá funcionar pois não destinamos um espaço de memória para um quinto dado Não podemos adicionar elementos desta maneira na lista então precisamos utilizar um método chamado de append que irá se encarregar de alocar a memória no programa extra Veja como utilizar a seguir Desta maneira adicionamos mais um elemento no final da nossa lista totalizando cinco O append só funciona para inserção no final mas é também possível inserir um dado em qualquer posição da lista para isso é necessário utilizar o método insert passando como parâmetro o índice em que se deseja inserir Assim todo os elementos existentes serão deslocados para a direita e o novo elemento inserido no respectivo índice Vamos inserir um canivete no índice de valor um Veja que a camisa que estava no índice um agora está no dois e assim por diante Por fim podemos também remover um elemento qualquer da nossa lista Existem algumas maneiras distintas de fazer isso vejamos duas delas Na primeira indicamos o índice del do dado a ser removido e na outra indicamos o nome específico do dado remove O uso de cada uma dependerá da aplicação desejada Saiba mais Você observou que nos exemplos anteriores nos referimos ao append insert remove etc por método em vez de função Por que essa alteração de nomenclatura agora O que acontece é que uma lista em Python é na verdade um objeto de uma classe chamada de list dentro da linguagem Os conceitos de objetos e classe são outro paradigma de programação que chamamos de programação orientada a objetos POO em que programamos classes e objetos em vez de somente manipular funções É uma maneira distinta de se programar e que não será abordada nesta disciplina pois é um assunto extenso Se você estiver cursando um curso na área da computação certamente terá uma outra disciplina somente voltada para POO Para esta nossa disciplina cabe a você somente compreender como aplicar esses métodos que para nós serão simples funções No paradigma de POO acessamos uma funçãométodos invocando o nome da variável seguida de um ponto e após o ponto o nome da função Por exemplo como vimos MochilaappendOvos Variávelfunçãoparâmetro A quantidade de métodos disponíveis para manipularmos os objetos de listas e mesmo tuplas e dicionários é bastante grande e podem ser encontrados aqui httpsdocspythonorg ptbr3tutorialdatastructureshtml Acesso em 17 fev 2021 Nesta disciplina iremos trabalhar somente com alguns deles Fique à vontade para investigar os outros caso deseje tornarse um programador avançado em Python 22 CÓPIA DE LISTAS A linguagem Python apresenta uma característica bastante interessante quando falamos de cópia de listas Vamos observar o código a seguir Iniciamos o código criando uma lista na linha 2 Na linha 3 estamos fazendo com que uma nova variável y receba a mesma lista criada x Como já era de se esperar ao realizarmos o print de ambas o resultado impresso é idêntico Agora vamos alterar o valor do índice zero da lista y e realizar o print de ambas na tela Se alteramos somente a variável y por que o print das listas x e y saíram iguais Nós alteramos x também Como O que acontece aqui é que toda a lista é um objeto se fizermos algo como y x em um objeto somente estamos criando um segundo objeto com a mesma referência do primeiro e portanto caso alteremos um estamos alterando o outro também como se existisse uma conexão invisível entre eles É como se estivéssemos dando um apelido para a variável x que agora atende por y também Deste modo existe uma maneira de realmente criar uma cópia independe da lista x e da lista y Sim Existe Veja a seguir como fazemos isso Note a alteração na linha 3 Em vez de uma simples atribuição de uma variável na outra fazemos y x Isso garante que uma cópia de x é colocada em y O uso dos dois pontos dentro dos colchetes garante a cópia integral Caso queira copiar somente uma parte você pode realizar um fatiamento de x Assim qualquer manipulação feita com uma variável não afetará a outra conforme vemos no print a seguir em que agora temos resultados diferentes TEMA 3 STRINGS E LISTAS DENTRO DE LISTAS Vimos até então como acessar um dado individual dentro de uma variável composta por meio de seu índice Isso vale para tuplas e listas Porém existem dados que são compostos na sua essência como uma string Neste caso podemos ir além e acessar os índices individuais da string dentro um único índice de uma lista Ficou confuso Vamos esclarecer Voltamos ao nosso exemplo da mochila Se quisermos realizar o print de um dos dados da lista basta fazer como o indicado a seguir Nenhuma novidade até aí Também já aprendemos que podemos fatiar uma string e acessar seus índices individualmente e aqui não será diferente Neste caso temos uma dupla indexação Ou seja temos um índice referente a cada item da lista e um segundo índice referente a cada caractere da string Assim podemos acessar não só cada dado dentro da lista mas também cada caractere das strings de um índice da lista Na Figura 2 ilustramos a indexação dupla de listas com strings Note que foram colocados os índices de cada item da lista acima deles Porém dentro de um item temos uma string que também pode ser acessada individualmente Por exemplo no índice zero temos o Machado Ele contém sete caracteres os quais podemos acessar individualmente Figura 2 Strings com listas Fonte Borin 2021 A lógica por trás do acesso individual de cada caractere está no fato de que devemos abrir e fechar colchetes duas vezes em vez de somente uma A primeira vez representa o índice dentro da lista e a segunda o índice dentro da string Se quisermos acessar o primeiro caractere de Machado fazemos mochila00 Já mochila21 por exemplo nos dá o terceiro item bacon segundo caractere a Já aprendemos a realizar o print de uma variável composta empregando um laço de repetição seção 1 Porém existe uma maneira alternativa de realizar isso que é passando por ambos os índices Para fazermos uma varredura dupla de índices colocamos dois laços de repetição aninhados Veja a seguir O primeiro laço de repetição anda pelos itens da lista já o segundo ainda dentro do primeiro faz a varredura caractere por caractere daquele item Assim só avançamos ao próximo item quando terminado o atual O print da linha 4 contém o parâmetro end que impede que o print pule de linha a cada caractere impresso E o print da linha 5 está vazio propositalmente servindo apenas para dar uma quebra de linha após uma palavra e outra Outra maneira de realizar essa varredura dupla assim como aprendemos lá em tuplas é com o código a seguir Lembrando que a impressão da lista com dois laços resulta neste caso no mesmo resultado apresentado com um só laço de repetição que aprendemos lá nas tuplas e que valem também para listas Apesar disso esta maneira alternativa que você acabou de aprender não é desprovida de utilidade podendo ter alguma aplicação dependendo do algoritmo a ser resolvido Por exemplo imagine que você precisa verificar caractere por caractere das palavras da lista procurando um determinado padrão Essa varredura dupla poderá vir a ser bastante útil Agora imagine uma seguinte situação em que você deve realizar o cadastro de uma lista de compras em um sistema Cada produto comprado deverá ser registrado com seu nome quantidade e valor unitário Para resolver esse problema talvez a solução mais simples que venha na sua mente seja a de criar três listas simples distintas uma para cada tipo de dado Porém o Python permite irmos além pois podemos criar uma lista única em que dentro de cada índice da lista teremos outra uma lista contendo os campos de nome quantidade e valor Este é mais um caso de indexação dupla Vejamos a seguir como implementar isso em Python Vamos criar uma lista vazia e ir adicionando um produto por vez nela O laço de repetição de cadastro permite somente três itens para fins de simplificação do exercício Na linha 1 e na linha 2 criamos duas listas vazias A lista item é uma variável temporária que servirá para inserir a lista dentro da lista mercado Dentro do laço de repetição povoamos com leituras de dados via teclado a lista item usando append Colocamos nela o nome de um produto sua quantidade e o valor unitário Em seguida na linha 8 inserimos uma cópia dela dentro da lista mercado não esqueça do Na linha 9 limpamos a lista item para que na próxima leitura de dados ela não contenha as informações que já inserimos no loop anterior O print realizado nos mostra na tela que temos uma lista externa e dentro dela diversas pequenas listas separadas por vírgulas Cada lista menor conterá uma trinca de valores heterogêneos uma string um int e um float Uma maneira alternativa de solucionarmos o mesmo problema é em vez de criarmos duas listas uma temporária menor e outra principal criamos somente a principal e variáveis simples para cada campo da lista Veja a seguir como ficaria esse código A saída resultante é idêntica à anterior A diferença é que declaramos três variáveis nome qtd e valor e inserimos ela dentro da lista mercado no formato de uma lista nome qtd valor Podemos acessar individualmente um dado somente da lista mercado Certamente Vejamos o que os exemplos a seguir retornam Saiba mais Para pensar Podemos acessar somente um caractere dentro de uma lista com listas Por exemplo como você acessaria a letra C da palavra cebola Dica você terá uma string dentro de uma lista que está dentro de outra lista Portanto uma indexação tripla Finalizando o assunto de manipulação de listas de listas podemos pegar a lista de compras do mercado e realizar um print dela na tela informando em colunas cada um dos dados bem como o valor total do pedido O resultado em código é apresentado a seguir 31 EXERCÍCIOS Vamos praticar um pouco o conceito de listas Lembrando que manipulações vistas com tuplas continuam sendo válidas também 311 Exercício Escreva um algoritmo em Python que crie uma lista vazia e vá adicionando valores referentes às notas de um aluno nesta lista Quando o usuário desejar parar de digitar notas digitando um valor negativo por exemplo calcule a média das notas digitadas Além disso faça um tratamento para a exceção de divisão por zero ZeroDivisionError Essa exceção poderá ocorrer caso o usuário não digite nenhuma nota válida Python 312 Exercício O algoritmo mais simples de se buscar um dado em uma estrutura de dados é chamada de busca sequencial A busca sequencial é uma varredura simples do primeiro ao último elemento da estrutura verificando se o dado desejado se encontra presente Escreva uma função em Python que receba como parâmetro uma lista e um dado Verifique se o dado está presente na lista e retorne da função o seu índice caso ele esteja presente caso contrário retorne 1 Python 313 Exercício Escreva um algoritmo que leia o nome altura e peso de pessoas e armazene as informações em uma lista O programa deve ir cadastrando um número indeterminado de dados e armazenar dentro da lista também o IMC da pessoa Ao final do programa imprima a lista completa e também O total de cadastros A pessoa com o maior IMC A pessoa com o menor IMC O cálculo do IMC deve ser realizado empregando uma função lambda e é dado como IMC peso altura² Em que a massa é dada em quilograma e a altura em metros Python TEMA 4 DICIONÁRIOS Vejamos agora a última estrutura de dados o dicionário É válido iniciar este tema relembrando que todas as manipulações que você aprendeu em tupla e em lista continuam valendo em dicionário Iremos somente expandir o seu conhecimento com esta nova estrutura Nas tuplas indicávamos elas por meio de parênteses As listas com colchetes Já os dicionários serão criados com a abertura de chaves Um dicionário contém no seu cerne uma estrutura de dados chamada de hash Uma hash é um tipo de estrutura de dados que é capaz de inserir e buscar dados utilizando chaves também chamadas de palavraschaves e não os seus índices A estrutura de dicionário no Python funciona de maneira semelhante ao maphashmap presente em linguagens como C e Java Nos dicionários chaves são utilizadas para referenciar os dados em vez de índices Deste modo as palavraschaves dos dicionários irão funcionar como índices para acessarmos os dados Em vez de termos índices numéricos atrelados aos cadastros podemos ter palavras que melhor atendam às necessidades da nossa aplicação Vejamos um exemplo de criação de um dicionário em que temos três chaves nome de um jogo de videogame desenvolvedora do jogo e do ano de lançamento No dicionário cada dado inserido é composto de um par no formato chavedado Separamos a chave do seu respectivo valor por dois pontos Portanto em nomeSuper Mario a chave é a string nome E seu respectivo valor é Super Mario Assim como desenvolvedora e ano são chaves também Quando realizamos o print do dicionário estamos imprimindo sempre o par chave e valor associado Como todas as estruturas com variáveis compostas que já aprendemos nesta aula podemos imprimir somente o valor referenciando o índice que desejarmos Como o índice no dicionário é a chave e não um número colocamos Existem alguns métodos que auxiliam neste processo de obter as informações de um dicionário Se quisermos somente imprimir todos os valores do dicionário invocamos o métodofunção values Podemos realizar uma varredura pelos valores do dicionário com um laço assim como fizemos em listas e tuplas É possível realizarmos o acesso somente das chaves de todo o dicionário utilizando métodofunção keys que significa chave em inglês Note que foi impresso as três chaves nome desenvolvedora ano Assim como para os valores podemos andar por todas as chaves usando um laço de repetição Existe um terceiro métodofunção que acessa o par chave e valor que é o items Também podemos varrer o dicionário acessando sempre a dupla de chave e valor Para isso fazemos um laço de repetição com duas variáveis A primeira será para as chaves i e a segunda para os valores j 41 LISTAS COM DICIONÁRIOS Aprendemos a criar um dicionário Mas e se quisermos criar uma coleção de itens dentro do dicionário Em vez de somente um nome de jogo de videogame por exemplo inserirmos vários Podemos construir essa estrutura combinando uma lista com um dicionário em que cada índice da lista conterá um cadastro completo de um dicionário Vejamos o exemplo a seguir Nele criamos uma lista chamada games A lista inicia vazia Em seguida estamos criando três variáveis de dicionário game1 game2 e game3 Todos os dicionários contêm três chaves nome desenvolvedora e ano Na linha 11 juntamos todos os dicionários dentro da lista games criando uma coleção de jogos de videogame É claro que a maneira apresentada acima não é dinâmica o suficiente pois só permite três cadastros Podemos criar uma inserção via teclado dos dados empregando um laço de repetição Para isso criamos uma estrutura de lista e uma de dicionário vazias A lógica aqui é povoar o dicionário com dados do teclado e em seguida colocar o dicionário dentro da lista fazendo um append Veja a seguir o código Dentro do laço de repetição lemos os dados via teclado inserindoos nas respectivas chaves nome videogame e ano Na linha 7 fazemos o append para a inserção de um novo elemento na lista Neste momento precisamos utilizando uma funçãométodo chamado de copy pois devido às características da estrutura de dicionário não podemos fazer algo como gameappendgame isso não irá funcionar Nas linhas 8 até 11 fazemos o print de tudo que foi cadastrado utilizando dois laços de repetição O laço da linha 9 serve para andar pela lista e o laço interno da linha 10 serve para andar dentro de cada dicionário colocado em um índice da lista 42 DICIONÁRIOS COM LISTAS Podemos fazer o processo contrário do que você acabou de aprender Em vez de criar uma lista na qual em cada índice conterá um dicionário Podemos criar um único dicionário e para cada palavrachave teremos uma lista A seguir você encontra o código exemplo Compare bem a saída desse código com a saída dos exemplos de listas com dicionários Observe bem onde ficam os colchetes e as chaves Note que agora temos uma chave envolvendo toda a estrutura e dentro das chaves temos colchetes representando listas A palavrachave nome contém sua lista de nomes assim como videogame e ano Também podemos criar a inserção dos dados no dicionário com listas via teclado assim como víamos anteriormente Veja o código a seguir Na linha 1 criamos a estrutura base do dicionário já inserindo as palavraschave e criando para cada uma delas uma lista completamente vazia Em seguida dentro do laço de repetição fazemos a inserção dos dados em variáveis simples e em seguida fazemos um append na respectiva lista do dicionário 43 EXERCÍCIOS Vamos praticar um pouco o conceito de dicionários e suas relações com listas 431 Exercício Escreva um programa em Python que leia o nome de um aluno e três notas Armazene em um dicionário o nome e a média aritmética da nota Ainda armazene no dicionário a situação do aluno Média 7 aprovado Média 7 e 5 em exame Média 5 reprovado Apresente tudo na tela ao final do programa em um formato organizado Python 432 Exercício Crie um programa em Python para controle de estoque de produtos de um estabelecimento que vende produtos de hortifruti Para o estoque armazene tudo dentro de um dicionário contendo listas A chave deverá ser o nome de cada produto e dentro de cada lista teremos o preço e a quantidade disponível no estoque O estoque pode estar précadastrado no sistema com quantos itens desejar Simule uma compra Peça ao usuário para digitar o nome do produto e a quantidade que deseja até que ele decida encerrar a compra Ao final apresente tudo na tela em um formato organizado mostrando o total a ser pago por produto e o total final do pedido Ainda dê baixa no sistema descontado o que foi comprado do total Imprima na tela o estoque restante Python TEMA 5 TRABALHANDO COM MÉTODOS EM STRINGS Você aprendeu anteriormente a manipular strings Aprendeu a fatiar concatenar encontrar o tamanho etc Porém strings é um assunto bastante vasto e que apresenta muitas funcionalidades Agora que você aprendeu nesta aula o que são métodos e como usálos e também aprendeu o conceito de listas podemos praticar um pouco mais com strings Vamos encerrar nossa disciplina aprendendo mais algumas funcionalidades com strings para que você fique com um conhecimento sólido neste assunto O primeiro assunto que é importante comentar é que uma string uma vez criada é imutável assim como uma tupla Portanto alterar um dado dentro dela é impossível Veja a seguir o erro Apesar disso agora que você aprendeu listas podemos transformar uma string em uma lista utilizando a função list conforme a seguir Se fizermos o print convencional veremos que cada caractere será impresso separado por vírgula caracterizando uma lista Podemos fazer o print em um formato de texto caso fizermos como apresentado na linha 3 51 VERIFICANDO CARACTERES Podemos verificar se uma string qualquer é iniciada com um ou mais caracteres Para fazermos essa verificação utilizamos o método startswith início com em tradução livre Fazemos No exemplo estamos verificando se a palavra lógica está contida na string s1 Caso exista o resultado aparece como True Podemos testar o final da string com endswith termina com em tradução livre Veja a seguir Um detalhe interessante é que os métodos startswith e endswith diferenciam caracteres maiúsculos de minúsculos Ou seja verificar se a palavra algoritmos está presente é diferente de verificar se essa palavra existe Veja o que acontece a seguir Veja que agora a palavra procurada não existe devido ao caractere minúsculo retornando False E se quisermos que o teste ignore se os caracteres são maiúsculos ou minúsculos é possível Sim Podemos contornar isso convertendo todos os caracteres da string s1 para minúsculo antes de realizar a procura fazemos isso com o método lower Veja a seguir Agora como toda a string está minúscula procurar por algoritmos irá retornar verdadeiro Se o método lower converte toda a string para minúsculo o método upper converte tudo para maiúsculo Veja a seguir como fica s1 com ambos os métodos 52 CONTANDO CARACTERES Podemos contar a ocorrência de um caractere ou vários dentro de uma string com o método count Vamos buscar pela letra a dentro da string s1 veja o resultado a seguir Note que novamente se estamos buscando pela letra a em minúsculo a maiúscula não será contabilizada Mas se realizarmos um lower no string s1 antes de fazer a busca iremos considerar todos os caracteres do texto Veja a diferença no resultado Podemos buscar por um conjunto específico dentro de uma string como uma palavra por exemplo Veja o exemplo a seguir 53 QUEBRANDO STRINGS É possível empregarmos um método que divida uma string em substrings baseandose em um caractere como divisor O método responsável por isso é o split o qual recebe como parâmetro qual caractere será usado para dividir A string foi quebrada sempre onde apareceu um espaço criando uma lista em que cada dado dela é uma palavra 54 SUBSTITUINDO STRINGS É possível substituir um caractere ou mesmo uma palavra dentro de uma string com o método replace O método recebe sempre dois parâmetros obrigatórios o primeiro é a palavra a ser substituída e o segundo a nova palavra Veja a seguir Podemos adicionar um terceiro parâmetro opcional que nos diz quantas vezes a substituição deve acontecer Se indicar o valor um somente uma vez a troca é feita 55 VALIDANDO TIPOS DE DADOS A linguagem Python contém inúmeras funções capazes de validar se os dados dentro de uma string atendem a um determinado critério Por exemplo o método isalnum testa se a string contém caracteres e números dentro dela somente Caso ela esteja vazia ou contenha caracteres especiais retornará False Veja a seguir duas strings A primeira contém letra e espaços A segunda somente números Ao fazermos isalnum nelas a primeira irá retornar False pois contém espaços Já a segunda retorna verdadeiro devido à existência somente de números Existe também o método isalpha que é mais restritivo que isalnum retornando verdadeiro somente se na string existir somente caracteres regulares e com acentuação Qualquer outra situação é False Veja Ambas retornaram falso pois na primeira string temos espaços e na segunda string números Caso removêssemos os espaços da primeira irá resultar em verdadeiro veja A quantidade de funçõesmétodos de validação de strings é bastante vasta bem como a sua aplicabilidade Qualquer programa desenvolvido com um caráter mais profissional deve se preocupar com a validação dos dados portanto nunca esqueça da existência dessas funções Deixo a seguir uma tabela contendo todas as principais possibilidades e seu respectivo objetivo Tabela 1 Relação de métodos para validação de dados em strings Funçãométodo Retorna true para uma string com isalnum Letras e números somente Acentos são aceitos isalpha Letras somente Acentos são aceitos isdigit Números somente isnumeric Números somente Aceita também caracteres matemáticos como frações isupper Caracteres maiúsculos somente islower Caracteres minúsculos somente isspace Espaços somente Inclui TAB quebra de linha retorno etc isprintable Caracteres possíveis de serem impressos na tela somente Fonte Borin 2021 56 RESUMO A linguagem Python é vasta quando se trata de funçõesmétodos para uso em strings A seguir você encontra um resumo dos principais métodos mostrados neste Tema 5 bem como mais alguns que poderão vir a ser úteis para você Tabela 2 Relação de métodos para uso com strings Funçãométodo Objetivo startswith Verifica se caracteres existem no início da string endswith Verifica se caracteres existem no final da string lower Converte string para minúscula upper Converte string para maiúscula find Busca a primeira ocorrência de um padrão de caracteres em uma string rfind Idêntico ao find mas inicia a busca da direita para a esquerda center Centraliza uma string ljust rjust Ajusta uma string com alinhamentos à esquerda ou à direita respectivamente split Divide uma string replace Substitui caracteres em uma string lstrip rstrip Remove espaços em branco à esquerda ou à direta respectivamente strip Remove espaços em branco das extremidades Fonte Borin 2021 FINALIZANDO Nesta aula aprendemos a manipular as três principais estruturas de dados da linguagem Python tuplas listas e dicionários As tuplas são as mais simples e são imutáveis As listas e os dicionários apresentam características mais dinâmicas e portanto são mais empregadas O que diferencia listas de dicionários é que as primeiras são indexadas por valores inteiros numéricos ao passo que os dicionários são indexados por chaves palavraschave Na representação em Python cada uma delas é indicada por Tuplas Listas Dicionários Para finalizar a seguir você encontra um quadro comparativo entre as três estruturas com diferenças e aplicações Tabela 3 Resumo das estruturas de dados estudadas Tuplas Listas Dicionários Ordem dos elementos Fixa Fixa Mantida a partir do Python 37 Tamanho Fixo Variável Variável Elementos repetidos Sim Sim Pode repetir valores mas as chaves devem ser únicas Pesquisa Sequencial índice numérico Sequencial índice numérico Direta por chave Alterações Não Sim Sim Uso primário Sequências constantes Sequências Dados indexados por chave Fonte Elaborado com base em Nilo p 137 Aprendemos também que podemos realizar diferentes manipulações com essas estruturas invocando métodos que são semelhantes a funções que aprendemos anteriormente Esta aula contém os conceitos mais avançados da disciplina portanto pratique e resolva todos os exercícios do seu material com bastante calma REFERÊNCIAS FORBELLONE A L V et alLógica de programação a construção de algoritmos e estruturas de dados 3 ed São Paulo Pearson 2005 MATTHES E Curso intensivo de Python uma introdução prática baseada em projetos à programação 1 ed São Paulo Novatec 2015 MENEZES N N C Introdução à programação Python algoritmos e lógica de programação para iniciantes 3 ed São Paulo Novatec 2019 PERKOVIC L Introdução à computação usando Python um foco no desenvolvimento de aplicações Rio de Janeiro LTC 2016 PUGA S RISSETI G Lógica de programação e estrutura de dados 3 ed São Paulo Pearson 2016
Send your question to AI and receive an answer instantly
Recommended for you
6
Estruturas de Dados em Python - Tuplas, Listas e Dicionários
Introdução à Lógica e Programação
UMG
1
Codigo Python Calculo Desconto Produto - Loja Renan Portela Jorge
Introdução à Lógica e Programação
UMG
4
Atividade de Introdução a Programação em Portugol
Introdução à Lógica e Programação
UMG
22
Questões de Lógica de Programação e Algoritmos: Arquitetura de Von Neumann, Expressões Matemáticas e Nomes de Variáveis em Python
Introdução à Lógica e Programação
UMG
4
Código em Portugol
Introdução à Lógica e Programação
UMG
15
Programa Python Desconto Atacado - App de Vendas
Introdução à Lógica e Programação
UMG
1
Precalculo - Calculo de f(2) para f(x) = x^2 - Questao Resolvida
Introdução à Lógica e Programação
UNINTER
37
Linguagem C Ponteiros - Definição Declaração e Utilização
Introdução à Lógica e Programação
IFSC
1
Exemplo de Saída de Console com Mensagens de Pedido e Erro
Introdução à Lógica e Programação
UNINTER
17
TCC Engenharia Elétrica - Automação e Monitoramento Residencial com ESP32
Introdução à Lógica e Programação
IFTM
Preview text
LÓGICA DE PROGRAMAÇÃO E ALGORITMOS AULA 6 Prof Vinicius Pozzobon Borin CONVERSA INICIAL Ao longo desta aula você irá aprender a trabalhar com variáveis compostas em Python Iremos aprender os três principais tipos existentes na linguagem as tuplas as listas e os dicionários Iremos investigar em linguagem Python as características e diferenças de cada uma assim como criar e manipular todas elas No último tema desta aula iremos aprender mais alguns recursos de manipulação de strings para consolidar o seu conhecimento Assim anteriormente todos os exemplos apresentados neste material poderão ser praticados concomitantemente em um Jupyter Notebook como o Google Colab e não requer a instalação de nenhum software de interpretação para a linguagem Python em sua máquina Ao longo do material você encontrará alguns exercícios resolvidos Esses exercícios estão colocados em linguagem Python TEMAS 1 TUPLAS Vamos iniciar esta aula retomando um conceito apresentado anteriormente por meio de uma analogia que variáveis são como gavetas em uma estante em que cada gaveta contém um nome E dentro de cada gaveta iremos armazenar um único dado Porém imagine que agora você quer armazenar itens para uma mesma finalidade nas gavetas Para esta situação seria interessante que todas as gavetas pudessem atender pelo mesmo nome nome da variável Se todas as gavetas terão o mesmo nome como podemos identificar qual gaveta será aberta A resposta é por meio de uma numeração como um índice Deste modo podemos dizer abra a gaveta 3 ou abra a gaveta 5 Vejamos um segundo exemplo lúdico O nossa mascote o Lenhadorzinho estava com dificuldades de transportar seus itens ao sair em sua aventura Ele só conseguia transportar um item por vez em suas mãos Sendo assim ele resolveu comprar uma mochila para expandir seu espaço Agora dentro do seu inventário cabem quatro itens ele decide carregar seu machado uma camisa e comida bacon e abacate Portanto os itens dentro de sua mochila são Figura 1 Mochila do Lenhadorzinho Créditos deymos Shanvood Batshevs InspiringShutterstock Observe que antes da existência da mochila Somente um item podia ser transportado por vez Isso seria o equivalente a termos uma variável capaz de armazenar na memória um único dado por vez chamamos de variável simples A nossa mochila seria o que chamamos de variável composta Neste tipo de variável temos diversos espaços iguais na memória capazes de armazenar dados e todos eles atendem pelo mesmo nome Neste caso se quisermos acessar o machado escrevemos mochila0 O bacon Colocamos na mochila2 A variável apresentada no exemplo é uma estrutura de dados Uma estrutura de dados é um conjunto de dados organizados e uma maneira específica na memória do programa A maneira como os dados estão organizados na memória como podem ser buscados manipulados e acessados são o que definem e diferenciam as estruturas de dados Deste modo em linguagem Python temos majoritariamente três tipos de variáveis que armazenam diversos valores tuplas listas e dicionários Todas apresentam características organizacionais distintas e iremos investigar todas elas ao longo desta aula 11 CONSTRUINDO E MANIPULANDO TUPLAS Vamos agora de fato à primeira estrutura A tupla é o tipo de variável composta em Python mais simples Ela tem como característica primária ser imutável Nunca esqueça dessa informação pois uma tupla uma vez criada não pode mais ser alterada ao longo da execução do programa Repetindo a tupla é imutável A tupla é uma estrutura estática de dados isso significa que uma vez alocada na memória não pode mais ter seu endereçamento alterado Apesar de conter suas particularidades a tupla se assemelha um pouco às estruturas de vetorarray para quem já conhece linguagens de programação como C ou Java A representação de uma tupla em Python se dá da maneira a seguir Colocamos os dados que desejamos cadastrar na tupla separados por vírgula e dentro de parênteses Se mandarmos fazer o print da tupla todos os dados serão impressos junto dos parênteses Podemos manipular e fatiar a tupla da mesma maneira que aprendemos com strings anteriormente A seguir você encontra um resumo com algumas possibilidades de fatiamento e manipulação de índices em tuplas Lembrando que como uma tupla é imutável isso significa que não podemos realizar atribuições com tuplas Veja que se tentarmos substituir o valor bacon por ovos ocorre um erro tuple object does not support item assignment objeto tupla não suporta atribuição Podemos fazer uma varredura pelos elementos da tupla utilizando um laço de repetição Como a tupla contém um tamanho finito vamos trabalhar com o laço for Para tuplas o for é capaz de trabalhar mesmo sem a função range Podemos somente fazer o laço a seguir que imprimiremos todos os elementos da tupla na tela A variável item está funcionando como um iterador neste caso e irá passar por todos os elementos da tupla realizando um print de cada um Caso prefira podemos também criar a varredura na tupla da maneira convencional com range mas para isso precisaremos primeiro encontrar o tamanho da tupla usando a função len e em seguida fazer o laço para esse tamanho Veja a seguir Nesta segunda possibilidade precisamos explicitar o índice de cada item da mochila caso contrário o print não é realizado corretamente Agora imagine que vamos fazer um aprimoramento na mochila do Lenhadorzinho inserindo mais dois espaços para itens Se nossa variável da mochila contém quatro espaços e é uma tupla ela não pode ter seu tamanho alterado Porém podemos criar uma nova variável de tupla que irá conter a mochila antiga mais a atualização de tamanho Também podemos juntar ambas tuplas por meio de concatenação assim como já aprendemos com strings Veja Temos uma tupla agora de seis dados ou seja uma mochila com seis espaços Observe que como fizemos uma concatenação estamos juntando duas tuplas isso significa que a ordem como fazemos a junção faz toda a diferença Veja no exemplo a seguir 12 DESEMPACOTAMENTO DE PARÂMETROS EM FUNÇÕES Podemos empregar tuplas para realizar um procedimento bastante poderoso em Python o de desempacotar um parâmetro em uma função Suponha que você quer realizar o somatório de diversos valores porém você não sabe quantos valores serão somados Pode ser que sejam somente 2 ou então 10 ou mesmo 100 números Como criar uma função capaz de receber um número tão variável de parâmetros Vejamos no exemplo a seguir o recurso do desempacotamento No código apresentado note que criamos uma função soma com um parâmetro Porém colocamos um asterisco antes do nome da variável O símbolo de asterisco em Python indica que queremos desempacotar a variável num Observe que no programa principal realizamos duas chamadas distintas da função soma Uma com dois valores e outra com nove valores Todos esses valores serão armazenados em uma mesma variável dentro da função e uma tupla será criada com os dados recebidos Note que dentro da função foi realizado um print mostrando que os dados ali colocados são uma tupla os parênteses na saída indicam que é uma tupla Dentro da função fazemos um laço da maneira como apresenta nesta aula andando por todos os elementos da tupla e somandoos retornando o resultado final do somatório 13 EXERCÍCIOS Vamos praticar um pouco o conceito de tuplas e o de desempacotamento de funções 131 Exercício Visite o site que contém o ranking das linguagens de programação mais amadas no ano de 2020 httpsinsightsstackoverflowcomsurvey2020technologymostloveddreadedandwantedlang uagesloved Crie uma tupla com as 10 primeiras linguagens de programação mais amadas Em seguida faça Apresente na tela o ranking numerado com uma palavra em cada linha Apresente na tela somente o top 3 de linguagens Apresenta na tela as últimas 5 do ranking Em que posição está a linguagem Python Mostre na tela Python 132 Exercício Escreva uma função que contenha dois parâmetros Essa função recebe como parâmetro uma string com uma mensagem a ser impressa na tela e outro parâmetro como sendo uma quantidade arbitrária de números empacotados Dentro da função encontre o maior entre todos os números recebidos e escreva na tela dentro da função a mensagem e o maior valor Python TEMA 2 LISTAS Uma tupla é imutável certo Porém existe uma maneira de criarmos uma variável composta em Python que seja possível alterar seus dados a tupla Exemplificando imagine que o Lenhadorzinho em sua aventura comeu o bacon e encontrou no caminho uma laranja Ele deseja substituir a laranja pelo espaço que estava o bacon na sua mochila Podemos fazer isso com uma estrutura do tipo lista Escrevemos uma lista utilizando colchetes Observe a seguir a diferença de uma lista para tupla em Python Uma tupla sempre é escrita com parênteses já a lista sempre com colchetes Agora caso queira fazer a substituição de bacon por laranja a lista permitirá lembrese que na tupla isso resultava em um erro Veja 21 MANIPULANDO LISTAS As possibilidades de manipulação de listas em Python são bastante vastas Podemos realizar todas as manipulações já aprendidas com tuplas mas vamos além Começamos aprendendo a inserir um elemento no final da lista Nossa mochila atualmente contém quatro dados índices 0 até 3 Se tentarmos adicionar um quinto item fazendo mochila4 Ovos não irá funcionar pois não destinamos um espaço de memória para um quinto dado Não podemos adicionar elementos desta maneira na lista então precisamos utilizar um método chamado de append que irá se encarregar de alocar a memória no programa extra Veja como utilizar a seguir Desta maneira adicionamos mais um elemento no final da nossa lista totalizando cinco O append só funciona para inserção no final mas é também possível inserir um dado em qualquer posição da lista para isso é necessário utilizar o método insert passando como parâmetro o índice em que se deseja inserir Assim todo os elementos existentes serão deslocados para a direita e o novo elemento inserido no respectivo índice Vamos inserir um canivete no índice de valor um Veja que a camisa que estava no índice um agora está no dois e assim por diante Por fim podemos também remover um elemento qualquer da nossa lista Existem algumas maneiras distintas de fazer isso vejamos duas delas Na primeira indicamos o índice del do dado a ser removido e na outra indicamos o nome específico do dado remove O uso de cada uma dependerá da aplicação desejada Saiba mais Você observou que nos exemplos anteriores nos referimos ao append insert remove etc por método em vez de função Por que essa alteração de nomenclatura agora O que acontece é que uma lista em Python é na verdade um objeto de uma classe chamada de list dentro da linguagem Os conceitos de objetos e classe são outro paradigma de programação que chamamos de programação orientada a objetos POO em que programamos classes e objetos em vez de somente manipular funções É uma maneira distinta de se programar e que não será abordada nesta disciplina pois é um assunto extenso Se você estiver cursando um curso na área da computação certamente terá uma outra disciplina somente voltada para POO Para esta nossa disciplina cabe a você somente compreender como aplicar esses métodos que para nós serão simples funções No paradigma de POO acessamos uma funçãométodos invocando o nome da variável seguida de um ponto e após o ponto o nome da função Por exemplo como vimos MochilaappendOvos Variávelfunçãoparâmetro A quantidade de métodos disponíveis para manipularmos os objetos de listas e mesmo tuplas e dicionários é bastante grande e podem ser encontrados aqui httpsdocspythonorg ptbr3tutorialdatastructureshtml Acesso em 17 fev 2021 Nesta disciplina iremos trabalhar somente com alguns deles Fique à vontade para investigar os outros caso deseje tornarse um programador avançado em Python 22 CÓPIA DE LISTAS A linguagem Python apresenta uma característica bastante interessante quando falamos de cópia de listas Vamos observar o código a seguir Iniciamos o código criando uma lista na linha 2 Na linha 3 estamos fazendo com que uma nova variável y receba a mesma lista criada x Como já era de se esperar ao realizarmos o print de ambas o resultado impresso é idêntico Agora vamos alterar o valor do índice zero da lista y e realizar o print de ambas na tela Se alteramos somente a variável y por que o print das listas x e y saíram iguais Nós alteramos x também Como O que acontece aqui é que toda a lista é um objeto se fizermos algo como y x em um objeto somente estamos criando um segundo objeto com a mesma referência do primeiro e portanto caso alteremos um estamos alterando o outro também como se existisse uma conexão invisível entre eles É como se estivéssemos dando um apelido para a variável x que agora atende por y também Deste modo existe uma maneira de realmente criar uma cópia independe da lista x e da lista y Sim Existe Veja a seguir como fazemos isso Note a alteração na linha 3 Em vez de uma simples atribuição de uma variável na outra fazemos y x Isso garante que uma cópia de x é colocada em y O uso dos dois pontos dentro dos colchetes garante a cópia integral Caso queira copiar somente uma parte você pode realizar um fatiamento de x Assim qualquer manipulação feita com uma variável não afetará a outra conforme vemos no print a seguir em que agora temos resultados diferentes TEMA 3 STRINGS E LISTAS DENTRO DE LISTAS Vimos até então como acessar um dado individual dentro de uma variável composta por meio de seu índice Isso vale para tuplas e listas Porém existem dados que são compostos na sua essência como uma string Neste caso podemos ir além e acessar os índices individuais da string dentro um único índice de uma lista Ficou confuso Vamos esclarecer Voltamos ao nosso exemplo da mochila Se quisermos realizar o print de um dos dados da lista basta fazer como o indicado a seguir Nenhuma novidade até aí Também já aprendemos que podemos fatiar uma string e acessar seus índices individualmente e aqui não será diferente Neste caso temos uma dupla indexação Ou seja temos um índice referente a cada item da lista e um segundo índice referente a cada caractere da string Assim podemos acessar não só cada dado dentro da lista mas também cada caractere das strings de um índice da lista Na Figura 2 ilustramos a indexação dupla de listas com strings Note que foram colocados os índices de cada item da lista acima deles Porém dentro de um item temos uma string que também pode ser acessada individualmente Por exemplo no índice zero temos o Machado Ele contém sete caracteres os quais podemos acessar individualmente Figura 2 Strings com listas Fonte Borin 2021 A lógica por trás do acesso individual de cada caractere está no fato de que devemos abrir e fechar colchetes duas vezes em vez de somente uma A primeira vez representa o índice dentro da lista e a segunda o índice dentro da string Se quisermos acessar o primeiro caractere de Machado fazemos mochila00 Já mochila21 por exemplo nos dá o terceiro item bacon segundo caractere a Já aprendemos a realizar o print de uma variável composta empregando um laço de repetição seção 1 Porém existe uma maneira alternativa de realizar isso que é passando por ambos os índices Para fazermos uma varredura dupla de índices colocamos dois laços de repetição aninhados Veja a seguir O primeiro laço de repetição anda pelos itens da lista já o segundo ainda dentro do primeiro faz a varredura caractere por caractere daquele item Assim só avançamos ao próximo item quando terminado o atual O print da linha 4 contém o parâmetro end que impede que o print pule de linha a cada caractere impresso E o print da linha 5 está vazio propositalmente servindo apenas para dar uma quebra de linha após uma palavra e outra Outra maneira de realizar essa varredura dupla assim como aprendemos lá em tuplas é com o código a seguir Lembrando que a impressão da lista com dois laços resulta neste caso no mesmo resultado apresentado com um só laço de repetição que aprendemos lá nas tuplas e que valem também para listas Apesar disso esta maneira alternativa que você acabou de aprender não é desprovida de utilidade podendo ter alguma aplicação dependendo do algoritmo a ser resolvido Por exemplo imagine que você precisa verificar caractere por caractere das palavras da lista procurando um determinado padrão Essa varredura dupla poderá vir a ser bastante útil Agora imagine uma seguinte situação em que você deve realizar o cadastro de uma lista de compras em um sistema Cada produto comprado deverá ser registrado com seu nome quantidade e valor unitário Para resolver esse problema talvez a solução mais simples que venha na sua mente seja a de criar três listas simples distintas uma para cada tipo de dado Porém o Python permite irmos além pois podemos criar uma lista única em que dentro de cada índice da lista teremos outra uma lista contendo os campos de nome quantidade e valor Este é mais um caso de indexação dupla Vejamos a seguir como implementar isso em Python Vamos criar uma lista vazia e ir adicionando um produto por vez nela O laço de repetição de cadastro permite somente três itens para fins de simplificação do exercício Na linha 1 e na linha 2 criamos duas listas vazias A lista item é uma variável temporária que servirá para inserir a lista dentro da lista mercado Dentro do laço de repetição povoamos com leituras de dados via teclado a lista item usando append Colocamos nela o nome de um produto sua quantidade e o valor unitário Em seguida na linha 8 inserimos uma cópia dela dentro da lista mercado não esqueça do Na linha 9 limpamos a lista item para que na próxima leitura de dados ela não contenha as informações que já inserimos no loop anterior O print realizado nos mostra na tela que temos uma lista externa e dentro dela diversas pequenas listas separadas por vírgulas Cada lista menor conterá uma trinca de valores heterogêneos uma string um int e um float Uma maneira alternativa de solucionarmos o mesmo problema é em vez de criarmos duas listas uma temporária menor e outra principal criamos somente a principal e variáveis simples para cada campo da lista Veja a seguir como ficaria esse código A saída resultante é idêntica à anterior A diferença é que declaramos três variáveis nome qtd e valor e inserimos ela dentro da lista mercado no formato de uma lista nome qtd valor Podemos acessar individualmente um dado somente da lista mercado Certamente Vejamos o que os exemplos a seguir retornam Saiba mais Para pensar Podemos acessar somente um caractere dentro de uma lista com listas Por exemplo como você acessaria a letra C da palavra cebola Dica você terá uma string dentro de uma lista que está dentro de outra lista Portanto uma indexação tripla Finalizando o assunto de manipulação de listas de listas podemos pegar a lista de compras do mercado e realizar um print dela na tela informando em colunas cada um dos dados bem como o valor total do pedido O resultado em código é apresentado a seguir 31 EXERCÍCIOS Vamos praticar um pouco o conceito de listas Lembrando que manipulações vistas com tuplas continuam sendo válidas também 311 Exercício Escreva um algoritmo em Python que crie uma lista vazia e vá adicionando valores referentes às notas de um aluno nesta lista Quando o usuário desejar parar de digitar notas digitando um valor negativo por exemplo calcule a média das notas digitadas Além disso faça um tratamento para a exceção de divisão por zero ZeroDivisionError Essa exceção poderá ocorrer caso o usuário não digite nenhuma nota válida Python 312 Exercício O algoritmo mais simples de se buscar um dado em uma estrutura de dados é chamada de busca sequencial A busca sequencial é uma varredura simples do primeiro ao último elemento da estrutura verificando se o dado desejado se encontra presente Escreva uma função em Python que receba como parâmetro uma lista e um dado Verifique se o dado está presente na lista e retorne da função o seu índice caso ele esteja presente caso contrário retorne 1 Python 313 Exercício Escreva um algoritmo que leia o nome altura e peso de pessoas e armazene as informações em uma lista O programa deve ir cadastrando um número indeterminado de dados e armazenar dentro da lista também o IMC da pessoa Ao final do programa imprima a lista completa e também O total de cadastros A pessoa com o maior IMC A pessoa com o menor IMC O cálculo do IMC deve ser realizado empregando uma função lambda e é dado como IMC peso altura² Em que a massa é dada em quilograma e a altura em metros Python TEMA 4 DICIONÁRIOS Vejamos agora a última estrutura de dados o dicionário É válido iniciar este tema relembrando que todas as manipulações que você aprendeu em tupla e em lista continuam valendo em dicionário Iremos somente expandir o seu conhecimento com esta nova estrutura Nas tuplas indicávamos elas por meio de parênteses As listas com colchetes Já os dicionários serão criados com a abertura de chaves Um dicionário contém no seu cerne uma estrutura de dados chamada de hash Uma hash é um tipo de estrutura de dados que é capaz de inserir e buscar dados utilizando chaves também chamadas de palavraschaves e não os seus índices A estrutura de dicionário no Python funciona de maneira semelhante ao maphashmap presente em linguagens como C e Java Nos dicionários chaves são utilizadas para referenciar os dados em vez de índices Deste modo as palavraschaves dos dicionários irão funcionar como índices para acessarmos os dados Em vez de termos índices numéricos atrelados aos cadastros podemos ter palavras que melhor atendam às necessidades da nossa aplicação Vejamos um exemplo de criação de um dicionário em que temos três chaves nome de um jogo de videogame desenvolvedora do jogo e do ano de lançamento No dicionário cada dado inserido é composto de um par no formato chavedado Separamos a chave do seu respectivo valor por dois pontos Portanto em nomeSuper Mario a chave é a string nome E seu respectivo valor é Super Mario Assim como desenvolvedora e ano são chaves também Quando realizamos o print do dicionário estamos imprimindo sempre o par chave e valor associado Como todas as estruturas com variáveis compostas que já aprendemos nesta aula podemos imprimir somente o valor referenciando o índice que desejarmos Como o índice no dicionário é a chave e não um número colocamos Existem alguns métodos que auxiliam neste processo de obter as informações de um dicionário Se quisermos somente imprimir todos os valores do dicionário invocamos o métodofunção values Podemos realizar uma varredura pelos valores do dicionário com um laço assim como fizemos em listas e tuplas É possível realizarmos o acesso somente das chaves de todo o dicionário utilizando métodofunção keys que significa chave em inglês Note que foi impresso as três chaves nome desenvolvedora ano Assim como para os valores podemos andar por todas as chaves usando um laço de repetição Existe um terceiro métodofunção que acessa o par chave e valor que é o items Também podemos varrer o dicionário acessando sempre a dupla de chave e valor Para isso fazemos um laço de repetição com duas variáveis A primeira será para as chaves i e a segunda para os valores j 41 LISTAS COM DICIONÁRIOS Aprendemos a criar um dicionário Mas e se quisermos criar uma coleção de itens dentro do dicionário Em vez de somente um nome de jogo de videogame por exemplo inserirmos vários Podemos construir essa estrutura combinando uma lista com um dicionário em que cada índice da lista conterá um cadastro completo de um dicionário Vejamos o exemplo a seguir Nele criamos uma lista chamada games A lista inicia vazia Em seguida estamos criando três variáveis de dicionário game1 game2 e game3 Todos os dicionários contêm três chaves nome desenvolvedora e ano Na linha 11 juntamos todos os dicionários dentro da lista games criando uma coleção de jogos de videogame É claro que a maneira apresentada acima não é dinâmica o suficiente pois só permite três cadastros Podemos criar uma inserção via teclado dos dados empregando um laço de repetição Para isso criamos uma estrutura de lista e uma de dicionário vazias A lógica aqui é povoar o dicionário com dados do teclado e em seguida colocar o dicionário dentro da lista fazendo um append Veja a seguir o código Dentro do laço de repetição lemos os dados via teclado inserindoos nas respectivas chaves nome videogame e ano Na linha 7 fazemos o append para a inserção de um novo elemento na lista Neste momento precisamos utilizando uma funçãométodo chamado de copy pois devido às características da estrutura de dicionário não podemos fazer algo como gameappendgame isso não irá funcionar Nas linhas 8 até 11 fazemos o print de tudo que foi cadastrado utilizando dois laços de repetição O laço da linha 9 serve para andar pela lista e o laço interno da linha 10 serve para andar dentro de cada dicionário colocado em um índice da lista 42 DICIONÁRIOS COM LISTAS Podemos fazer o processo contrário do que você acabou de aprender Em vez de criar uma lista na qual em cada índice conterá um dicionário Podemos criar um único dicionário e para cada palavrachave teremos uma lista A seguir você encontra o código exemplo Compare bem a saída desse código com a saída dos exemplos de listas com dicionários Observe bem onde ficam os colchetes e as chaves Note que agora temos uma chave envolvendo toda a estrutura e dentro das chaves temos colchetes representando listas A palavrachave nome contém sua lista de nomes assim como videogame e ano Também podemos criar a inserção dos dados no dicionário com listas via teclado assim como víamos anteriormente Veja o código a seguir Na linha 1 criamos a estrutura base do dicionário já inserindo as palavraschave e criando para cada uma delas uma lista completamente vazia Em seguida dentro do laço de repetição fazemos a inserção dos dados em variáveis simples e em seguida fazemos um append na respectiva lista do dicionário 43 EXERCÍCIOS Vamos praticar um pouco o conceito de dicionários e suas relações com listas 431 Exercício Escreva um programa em Python que leia o nome de um aluno e três notas Armazene em um dicionário o nome e a média aritmética da nota Ainda armazene no dicionário a situação do aluno Média 7 aprovado Média 7 e 5 em exame Média 5 reprovado Apresente tudo na tela ao final do programa em um formato organizado Python 432 Exercício Crie um programa em Python para controle de estoque de produtos de um estabelecimento que vende produtos de hortifruti Para o estoque armazene tudo dentro de um dicionário contendo listas A chave deverá ser o nome de cada produto e dentro de cada lista teremos o preço e a quantidade disponível no estoque O estoque pode estar précadastrado no sistema com quantos itens desejar Simule uma compra Peça ao usuário para digitar o nome do produto e a quantidade que deseja até que ele decida encerrar a compra Ao final apresente tudo na tela em um formato organizado mostrando o total a ser pago por produto e o total final do pedido Ainda dê baixa no sistema descontado o que foi comprado do total Imprima na tela o estoque restante Python TEMA 5 TRABALHANDO COM MÉTODOS EM STRINGS Você aprendeu anteriormente a manipular strings Aprendeu a fatiar concatenar encontrar o tamanho etc Porém strings é um assunto bastante vasto e que apresenta muitas funcionalidades Agora que você aprendeu nesta aula o que são métodos e como usálos e também aprendeu o conceito de listas podemos praticar um pouco mais com strings Vamos encerrar nossa disciplina aprendendo mais algumas funcionalidades com strings para que você fique com um conhecimento sólido neste assunto O primeiro assunto que é importante comentar é que uma string uma vez criada é imutável assim como uma tupla Portanto alterar um dado dentro dela é impossível Veja a seguir o erro Apesar disso agora que você aprendeu listas podemos transformar uma string em uma lista utilizando a função list conforme a seguir Se fizermos o print convencional veremos que cada caractere será impresso separado por vírgula caracterizando uma lista Podemos fazer o print em um formato de texto caso fizermos como apresentado na linha 3 51 VERIFICANDO CARACTERES Podemos verificar se uma string qualquer é iniciada com um ou mais caracteres Para fazermos essa verificação utilizamos o método startswith início com em tradução livre Fazemos No exemplo estamos verificando se a palavra lógica está contida na string s1 Caso exista o resultado aparece como True Podemos testar o final da string com endswith termina com em tradução livre Veja a seguir Um detalhe interessante é que os métodos startswith e endswith diferenciam caracteres maiúsculos de minúsculos Ou seja verificar se a palavra algoritmos está presente é diferente de verificar se essa palavra existe Veja o que acontece a seguir Veja que agora a palavra procurada não existe devido ao caractere minúsculo retornando False E se quisermos que o teste ignore se os caracteres são maiúsculos ou minúsculos é possível Sim Podemos contornar isso convertendo todos os caracteres da string s1 para minúsculo antes de realizar a procura fazemos isso com o método lower Veja a seguir Agora como toda a string está minúscula procurar por algoritmos irá retornar verdadeiro Se o método lower converte toda a string para minúsculo o método upper converte tudo para maiúsculo Veja a seguir como fica s1 com ambos os métodos 52 CONTANDO CARACTERES Podemos contar a ocorrência de um caractere ou vários dentro de uma string com o método count Vamos buscar pela letra a dentro da string s1 veja o resultado a seguir Note que novamente se estamos buscando pela letra a em minúsculo a maiúscula não será contabilizada Mas se realizarmos um lower no string s1 antes de fazer a busca iremos considerar todos os caracteres do texto Veja a diferença no resultado Podemos buscar por um conjunto específico dentro de uma string como uma palavra por exemplo Veja o exemplo a seguir 53 QUEBRANDO STRINGS É possível empregarmos um método que divida uma string em substrings baseandose em um caractere como divisor O método responsável por isso é o split o qual recebe como parâmetro qual caractere será usado para dividir A string foi quebrada sempre onde apareceu um espaço criando uma lista em que cada dado dela é uma palavra 54 SUBSTITUINDO STRINGS É possível substituir um caractere ou mesmo uma palavra dentro de uma string com o método replace O método recebe sempre dois parâmetros obrigatórios o primeiro é a palavra a ser substituída e o segundo a nova palavra Veja a seguir Podemos adicionar um terceiro parâmetro opcional que nos diz quantas vezes a substituição deve acontecer Se indicar o valor um somente uma vez a troca é feita 55 VALIDANDO TIPOS DE DADOS A linguagem Python contém inúmeras funções capazes de validar se os dados dentro de uma string atendem a um determinado critério Por exemplo o método isalnum testa se a string contém caracteres e números dentro dela somente Caso ela esteja vazia ou contenha caracteres especiais retornará False Veja a seguir duas strings A primeira contém letra e espaços A segunda somente números Ao fazermos isalnum nelas a primeira irá retornar False pois contém espaços Já a segunda retorna verdadeiro devido à existência somente de números Existe também o método isalpha que é mais restritivo que isalnum retornando verdadeiro somente se na string existir somente caracteres regulares e com acentuação Qualquer outra situação é False Veja Ambas retornaram falso pois na primeira string temos espaços e na segunda string números Caso removêssemos os espaços da primeira irá resultar em verdadeiro veja A quantidade de funçõesmétodos de validação de strings é bastante vasta bem como a sua aplicabilidade Qualquer programa desenvolvido com um caráter mais profissional deve se preocupar com a validação dos dados portanto nunca esqueça da existência dessas funções Deixo a seguir uma tabela contendo todas as principais possibilidades e seu respectivo objetivo Tabela 1 Relação de métodos para validação de dados em strings Funçãométodo Retorna true para uma string com isalnum Letras e números somente Acentos são aceitos isalpha Letras somente Acentos são aceitos isdigit Números somente isnumeric Números somente Aceita também caracteres matemáticos como frações isupper Caracteres maiúsculos somente islower Caracteres minúsculos somente isspace Espaços somente Inclui TAB quebra de linha retorno etc isprintable Caracteres possíveis de serem impressos na tela somente Fonte Borin 2021 56 RESUMO A linguagem Python é vasta quando se trata de funçõesmétodos para uso em strings A seguir você encontra um resumo dos principais métodos mostrados neste Tema 5 bem como mais alguns que poderão vir a ser úteis para você Tabela 2 Relação de métodos para uso com strings Funçãométodo Objetivo startswith Verifica se caracteres existem no início da string endswith Verifica se caracteres existem no final da string lower Converte string para minúscula upper Converte string para maiúscula find Busca a primeira ocorrência de um padrão de caracteres em uma string rfind Idêntico ao find mas inicia a busca da direita para a esquerda center Centraliza uma string ljust rjust Ajusta uma string com alinhamentos à esquerda ou à direita respectivamente split Divide uma string replace Substitui caracteres em uma string lstrip rstrip Remove espaços em branco à esquerda ou à direta respectivamente strip Remove espaços em branco das extremidades Fonte Borin 2021 FINALIZANDO Nesta aula aprendemos a manipular as três principais estruturas de dados da linguagem Python tuplas listas e dicionários As tuplas são as mais simples e são imutáveis As listas e os dicionários apresentam características mais dinâmicas e portanto são mais empregadas O que diferencia listas de dicionários é que as primeiras são indexadas por valores inteiros numéricos ao passo que os dicionários são indexados por chaves palavraschave Na representação em Python cada uma delas é indicada por Tuplas Listas Dicionários Para finalizar a seguir você encontra um quadro comparativo entre as três estruturas com diferenças e aplicações Tabela 3 Resumo das estruturas de dados estudadas Tuplas Listas Dicionários Ordem dos elementos Fixa Fixa Mantida a partir do Python 37 Tamanho Fixo Variável Variável Elementos repetidos Sim Sim Pode repetir valores mas as chaves devem ser únicas Pesquisa Sequencial índice numérico Sequencial índice numérico Direta por chave Alterações Não Sim Sim Uso primário Sequências constantes Sequências Dados indexados por chave Fonte Elaborado com base em Nilo p 137 Aprendemos também que podemos realizar diferentes manipulações com essas estruturas invocando métodos que são semelhantes a funções que aprendemos anteriormente Esta aula contém os conceitos mais avançados da disciplina portanto pratique e resolva todos os exercícios do seu material com bastante calma REFERÊNCIAS FORBELLONE A L V et alLógica de programação a construção de algoritmos e estruturas de dados 3 ed São Paulo Pearson 2005 MATTHES E Curso intensivo de Python uma introdução prática baseada em projetos à programação 1 ed São Paulo Novatec 2015 MENEZES N N C Introdução à programação Python algoritmos e lógica de programação para iniciantes 3 ed São Paulo Novatec 2019 PERKOVIC L Introdução à computação usando Python um foco no desenvolvimento de aplicações Rio de Janeiro LTC 2016 PUGA S RISSETI G Lógica de programação e estrutura de dados 3 ed São Paulo Pearson 2016