{"cells":[{"cell_type":"markdown","metadata":{"id":"_ns7mAL7Sqmm"},"source":["# **Aula 2 - 14/08 - Condicionais e Loops**"]},{"cell_type":"markdown","metadata":{"id":"WbPvhjqETV7N"},"source":["Condicionais e Loops são estruturas que servem para o controle de fluxo, também conhecido como \"control flow\", que é um conceito fundamental em linguagens de programação que permite direcionar a execução lógica do código. Ele dá aos programadores o poder de criar caminhos distintos e adaptativos para que um programa siga, dependendo das condições ou iterações necessárias.\n","\n","\n","Imagine um roteiro em que diferentes cenas são escolhidas com base nas decisões dos personagens. Da mesma forma, o controle de fluxo permite que um programa tome decisões em tempo de execução. Ele envolve a utilização de estruturas como condicionais e loops para definir seções de código que só serão executadas sob certas condições ou repetidas até que uma condição seja atendida.\n","\n","\n","As condicionais, como \"if\", \"else\" e \"elif\", permitem que o programa tome decisões entre alternativas exclusivas. Por exemplo, o programa pode escolher executar um bloco de código se uma determinada condição for verdadeira e executar outro bloco de código se a condição for falsa.\n","\n","\n","\n","Os loops, como \"for\" e \"while\", permitem que uma sequência de instruções seja repetida várias vezes. Isso é valioso para automatizar tarefas repetitivas ou para processar uma série de elementos.\n","\n","\n","Em resumo, o controle de fluxo é essencial para criar programas dinâmicos e funcionais. Ele capacita os desenvolvedores a criar lógica inteligente e adaptável, permitindo que o software reaja a diferentes situações e realize tarefas complexas de forma eficiente.\n"]},{"cell_type":"markdown","metadata":{"id":"D0rD_ajPUnll"},"source":["### 1. Aprofundando Estruturas de Dados\n","\n","Antes de partimos para o assunto da aula de hoje, cabe aprofundarmos um pouco as principais operações em estruturas de dados, especialmente as listas."]},{"cell_type":"markdown","metadata":{"id":"QpdqXzYW4FYW"},"source":["#### *Listas*\n","\n","Como visto na última aula, uma lista é uma coleção ordenada e mutável de elementos. Os elementos de uma lista podem ser de diferentes tipos, como strings, inteiros, booleanos e até outras listas. As listas são representadas entre colchetes e os elementos são separados por vírgulas.\n","\n","Exemplo: minha_lista = [1, 2, 'três', True]."]},{"cell_type":"markdown","metadata":{"id":"sw2sE3Gw6Umh"},"source":["O que não vimos é que existem várias operações possíveis com as listas, permitindo as copiar, cortar em fatias de interesse, adicionar novos valores, etc. Essas operações são importantes para que possamos manusear os dados e os adequar da forma que precisamos, seja para fazer o pré-processamento deles, para ajeitar o banco de dados ou gerar visualizações mais interessantes."]},{"cell_type":"markdown","metadata":{"id":"4N0fcsyt3amT"},"source":["**Para mais informações sobre as operações em listas, acesse a [documentação](https://docs.python.org/3/tutorial/datastructures.html) do Python**"]},{"cell_type":"markdown","metadata":{"id":"UHXgCfbd5TjZ"},"source":["##### Adicionando elementos"]},{"cell_type":"markdown","metadata":{"id":"-GH1Gq8z9PiT"},"source":["Uma das operações fundamentais é a adição de elementos, que permite que novos itens sejam inseridos no final da lista usando o método \"append()\". Isso é particularmente útil quando precisamos expandir nossas listas dinamicamente à medida que mais dados são coletados."]},{"cell_type":"markdown","metadata":{"id":"alSi3RSz5h42"},"source":["Imagine uma simples lista de feira:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"hYUmRAmU5ay5"},"outputs":[],"source":["# Lista com itens da feira\n","\n","feira = [\"bananas\", \"maçãs\", \"manga\", \"pastel\"]\n","\n","\n","# Você se esqueceu da fruta favorita da sua mãe, adicione-a na lista com o método append\n","\n","feira.append('maracujá')\n","\n","\n","# Verificando se está tudo certo\n","\n","\n","feira\n","\n"]},{"cell_type":"markdown","metadata":{"id":"o_U7KmyI8Yhq"},"source":["Outro modo de adicionar itens em uma lista é utilizando o \"insert()\", que adiciona um item em determinado índice:"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5,"status":"ok","timestamp":1691882291714,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"iCxpol9G8dNM","outputId":"75f112c5-3cde-469a-ac09-c5760d23144c"},"outputs":[{"data":{"text/plain":["['maracujá', 'bananas', 'maçãs', 'manga', 'pastel']"]},"execution_count":1,"metadata":{},"output_type":"execute_result"}],"source":["feira = [\"bananas\", \"maçãs\", \"manga\", \"pastel\"]\n","\n","# Adicionando o maracujá na primeira posição\n","\n","feira.insert(0, 'maracujá') # O índice começa em 0 no Python.\n","\n","feira"]},{"cell_type":"markdown","metadata":{"id":"4r40yEf_9uRj"},"source":["Um terceiro modo é o \"extend()\", que permite adicionar elementos iteráveis (como outras listas) dentro de uma lista."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"2g6b7ng893wP"},"outputs":[],"source":["\n","# Lista inicial\n","\n","feira = [\"bananas\", \"maçãs\", \"manga\", \"pastel\"]\n","\n","# Lembrei de mais frutas\n","outros = ['maracujá', 'kiwi']\n","\n","\n","feira.extend(outros)\n","\n","feira"]},{"cell_type":"markdown","metadata":{"id":"-8nu634Z-JYD"},"source":["Por fim, você pode utilizar o operador matemático de soma (\"+\") para concatenar duas listas"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"uHZIckGA-QRv"},"outputs":[],"source":["\n","# O que comi no café?\n","cafe = [\"pão\", \"ovos\", \"banana\", 'café']\n","\n","# O que comi no almoço?\n","almoço = ['arroz','feijão','bife','salada']\n","\n","# Somando as listas\n","alimentos = cafe + almoço\n","\n","# Imprimindo para checar\n","alimentos\n","\n"]},{"cell_type":"markdown","metadata":{"id":"6OT3tYPb9H4I"},"source":["##### Remoção de Elementos"]},{"cell_type":"markdown","metadata":{"id":"1gyaNoCX7-qS"},"source":["A remoção de elementos também é essencial, e podemos usar métodos como \"remove()\" ou \"pop()\" para eliminar itens específicos da lista. O método \"remove()\" busca um valor específico e o retira, enquanto \"pop()\" remove um item pelo seu índice na lista. Utilizando o mesmo exemplo, poderiamos mudar de ideia sobre algum dos itens da feira."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"SJqd0FeC8FIb"},"outputs":[],"source":["# Lista inicial\n","\n","feira = [\"bananas\", \"maçãs\", \"manga\", \"pastel\"]\n","\n","# Melhor almoçar o que tem em casa\n","\n","feira.remove('pastel')\n","\n","\n","feira"]},{"cell_type":"markdown","metadata":{"id":"0frSKGMy8J9O"},"source":["O remove permite remover o item diretamente utilizando seu nome, no entanto, se quisessemos deletar o pastel por sua posição na lista, utilizariamos o pop()."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":285,"status":"ok","timestamp":1691882350838,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"TmR3kApv8Qsq","outputId":"cbdfa84e-a7c6-47b2-fb64-eaeb88c8c640"},"outputs":[{"name":"stdout","output_type":"stream","text":["['bananas', 'maçãs', 'manga', 'pastel']\n","['bananas', 'maçãs', 'manga']\n"]}],"source":["\n","# Olhe para a lista, você consegue identificar qual o índice do pastel?\n","\n","feira = [\"bananas\", \"maçãs\", \"manga\", \"pastel\"]\n","\n","# verificando a nova posição do pastel na lista\n","\n","print(feira)\n","\n","# Removendo o pastel\n","\n","feira.pop(3)\n","\n","# Imprimindo para checar\n","\n","print(feira)"]},{"cell_type":"markdown","metadata":{"id":"jM7imGAKBlA8"},"source":["Por fim, pode-se usar o del, que também remove os elementos pelo índice."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":291,"status":"ok","timestamp":1691882374985,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"spXO66h7Bo2b","outputId":"8eab6006-ac94-45f3-a3b2-c1d53064058c"},"outputs":[{"name":"stdout","output_type":"stream","text":["['maçãs', 'manga', 'pastel']\n"]}],"source":["feira = [\"bananas\", \"maçãs\", \"manga\", \"pastel\"]\n","\n","del feira[0]\n","\n","\n","print(feira)\n","\n"]},{"cell_type":"markdown","metadata":{"id":"Ehf8KQv0B2F8"},"source":["##### Ordenando listas"]},{"cell_type":"markdown","metadata":{"id":"F0_RqBk_CXQh"},"source":["A ordenação é uma técnica essencial no mundo da programação, que nos permite organizar conjuntos de dados de maneira sistemática e lógica. Ao colocar elementos em uma sequência específica, a ordenação facilita a busca, a análise e a compreensão dos dados, tornando-os mais acessíveis e utilizáveis.\n","\n","Em Python, a ordenação pode ser realizada de várias maneiras, mas uma das abordagens mais comuns é o uso do método \"sort()\". Este método reorganiza os elementos de uma lista em ordem crescente, e você também pode fornecer um argumento para a ordenação em ordem decrescente. A ordenação não se limita apenas a números e também pode ser aplicada a uma ampla gama de tipos de dados, incluindo strings e objetos personalizados."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":432,"status":"ok","timestamp":1691882414530,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"2ZAwVxS3HAyk","outputId":"aeb8bf46-72ec-400b-82f2-53394b2b95b5"},"outputs":[{"data":{"text/plain":["[1, 2, 3, 4, 5, 5, 5, 6, 6, 7, 7, 8, 9, 43, 123, 5451, 6536465]"]},"execution_count":4,"metadata":{},"output_type":"execute_result"}],"source":["# Ordenando uma lista de números\n","\n","lista = [7,5,43,1,5451,6536465,123,2,3,4,5,9,8,7,6,6,5]\n","\n","\n","lista.sort()\n","\n","lista"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":276,"status":"ok","timestamp":1691882432180,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"pbXrzSjDH0P6","outputId":"aa8c905e-1fd5-47c7-bb69-73aa0f0b7f62"},"outputs":[{"data":{"text/plain":["[1, 1.25, 1.3, 2.354, 2.4, 3.234, 4, 5, 5.2, 8, 9]"]},"execution_count":5,"metadata":{},"output_type":"execute_result"}],"source":["# O mesmo funciona para floats e mistura de floats e int\n","\n","lista = [1.3,2.4,5.2,1.25,2.354,3.234,4,5,9,8,1]\n","\n","lista.sort()\n","\n","lista"]},{"cell_type":"markdown","metadata":{"id":"fkx_Zv7eG8aU"},"source":["Para ordernar uma lista de strings, ainda pode se usar o sort para ordená-las com base no tamanho do texto"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":271,"status":"ok","timestamp":1691882440720,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"E8smZ4GyJVGC","outputId":"5a336503-811f-49c0-bab2-68739f7e155c"},"outputs":[{"data":{"text/plain":["['pão',\n"," 'queijo',\n"," 'jabuticaba',\n"," 'ornitorrinco',\n"," 'paralelepípedo',\n"," 'otorrinolaringologista']"]},"execution_count":6,"metadata":{},"output_type":"execute_result"}],"source":["lista = ['jabuticaba', 'ornitorrinco','queijo', 'paralelepípedo', 'otorrinolaringologista', 'pão']\n","\n","\n","lista.sort(key=len)\n","\n","lista"]},{"cell_type":"markdown","metadata":{"id":"eQXo4sTwOf8N"},"source":["##### Fatiando Listas"]},{"cell_type":"markdown","metadata":{"id":"Pe4ftOs6Nm25"},"source":["Por fim, também podemos cortar as listas, selecionando parte delas de acordo com nossa vontade. O *slicing* de listas em Python permite extrair subconjuntos de elementos de uma lista. Ele é realizado usando colchetes e índices, como lista[início:fim]. O índice de início é inclusivo, enquanto o índice de fim é exclusivo, ou seja, o elemento no índice de fim não é incluído. Se omitido, o início assume o valor 0 e o fim assume o comprimento da lista. O slicing é útil para acessar partes específicas de uma lista de forma concisa, como selecionar um intervalo de elementos ou copiar a lista original."]},{"cell_type":"markdown","metadata":{"id":"VR9Wl2B1OPVn"},"source":["Para pegar o primeiro valor de uma lista, se usa lista[0], já que a indexação em Python começa no 0."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":280,"status":"ok","timestamp":1691882472164,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"DeBvUs0ANz5H","outputId":"e8446383-3cd7-47b1-8550-76f046608117"},"outputs":[{"data":{"text/plain":["2"]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["# Pegando só o primeiro valor\n","num = [2,35,5,6345,1231,12,15]\n","\n","x = num[0]\n","\n","x"]},{"cell_type":"markdown","metadata":{"id":"wvZ3lEYxOUPg"},"source":["Para pegar um intervalo de valores, utiliza-se[a:b], onde a é o primeiro valor que deseja e b o último. Se quisermos pegar os 3 primeiros valores, podemos fazer da seguinte maneira:"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":300,"status":"ok","timestamp":1691882479182,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"BHKoJ2tIN-ij","outputId":"e0a7a724-f9e6-41db-bc96-050a5d641472"},"outputs":[{"data":{"text/plain":["[2, 35, 5]"]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["# Pegando os 3 primeiros valores\n","\n","num = [2,35,5,6345,1231,12,15]\n","\n","x = num[0:3]\n","\n","x"]},{"cell_type":"markdown","metadata":{"id":"Dszd6LREOdjo"},"source":["Uma outra possibilidade é a de pegar os últimos valores de uma lista. Neste caso, se utiliza números negativos no índice. Se quiser extrair só o último valor de uma lista, pode utilizar \"lista[-1]\""]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":356,"status":"ok","timestamp":1691882489657,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"OxYGhBc8OHMS","outputId":"f7f0dad2-3544-49f1-fd66-3d858809fdfe"},"outputs":[{"data":{"text/plain":["15"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["# Pegando o último valor\n","\n","num = [2,35,5,6345,1231,12,15]\n","\n","x = num[-1]\n","\n","x"]},{"cell_type":"markdown","metadata":{"id":"RDrds7L7O7WR"},"source":["Para pegar os 3 últimos números, pode-se utilizar também o seguinte código"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":289,"status":"ok","timestamp":1691882496343,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"PkmDw2l6O6hg","outputId":"8c830341-a9d3-4ba7-fad3-e1b9c8b311d8"},"outputs":[{"data":{"text/plain":["[1231, 12, 15]"]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["num = [2,35,5,6345,1231,12,15]\n","\n","x = num[-3:]\n","\n","x"]},{"cell_type":"markdown","metadata":{"id":"iVC3_jzLNzaV"},"source":["Como não existe -0, o jeito mais adequado de extrair os valores finais incluindo o último valor é com \"lista[-a:]\", onde **a** é a quantidade de números no final da lista que deseja. Veja o que acontece se você tentar algo como \"lista[-a:-1]\"."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"V81NmTcCPXU4"},"outputs":[],"source":["num = [2,35,5,6345,1231,12,15]\n","\n","x = num[-3:-1]\n","\n","x"]},{"cell_type":"markdown","metadata":{"id":"0QJkP3zzQUWO"},"source":["#### Operador *in*"]},{"cell_type":"markdown","metadata":{"id":"p7tJgYgmQWS5"},"source":["O operador \"in\" em Python é uma ferramenta eficaz para verificar a existência de um valor dentro de uma sequência de elementos, como uma lista, tupla, string ou conjunto. Ele permite que os programadores verifiquem de forma rápida e conveniente se um determinado valor está presente na sequência, evitando a necessidade de percorrer manualmente todos os elementos.\n","\n","O operador \"in\" é utilizado em uma expressão como \"valor in sequência\", onde \"valor\" é o elemento que você deseja verificar e \"sequência\" é a coleção de elementos na qual você deseja realizar a verificação. O resultado é uma avaliação booleana: \"True\" se o valor estiver presente na sequência e \"False\" se não estiver."]},{"cell_type":"markdown","metadata":{"id":"UIUutIo8QbW6"},"source":["Voltando ao exemplo da feira, imagine que você deseja verificar se você incluiu de fato a fruta preferida da sua mãe na lista de compras (maracujá):"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":838,"status":"ok","timestamp":1691882695606,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"abjNZKLtRMMU","outputId":"970fb52c-0cb1-41d5-d28d-e2f3da31d1e0"},"outputs":[{"name":"stdout","output_type":"stream","text":["False\n"]}],"source":["feira = ['uva', 'mexerica','laranja','banana']\n","\n","print('maracujá' in feira)\n"]},{"cell_type":"markdown","metadata":{"id":"n1xCV6m9R25O"},"source":["Ops, parece que você se esqueceu. Agora, para ter certeza que incluiu, poderia rodar outro tipo de teste"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":266,"status":"ok","timestamp":1691882703797,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"omnfVVFtSA7y","outputId":"eaae2ea2-4e08-4e09-dafc-2ea050cdc970"},"outputs":[{"name":"stdout","output_type":"stream","text":["False\n"]}],"source":["feira = ['uva', 'mexerica','laranja','banana', 'maracujá']\n","\n","print('maracujá' not in feira)\n"]},{"cell_type":"markdown","metadata":{"id":"qLKpM3e_SFTR"},"source":["adicionar o \"not\" antes do \"in\" muda o teste lógico. Agora você está testando se algo \"não está\" dentro de sua lista. Se fosse no primeiro exemplo, o resultado seria Verdadeiro."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"DaBOhco-SRcK"},"outputs":[],"source":["feira = ['uva', 'mexerica','laranja','banana']\n","\n","print('maracujá' not in feira)"]},{"cell_type":"markdown","metadata":{"id":"udePokgHSemO"},"source":["O operador \"in\" é amplamente utilizado em estruturas condicionais para verificar a presença de um determinado valor em uma sequência antes de tomar decisões ou executar blocos de código específicos. Sua utilidade geral reside na capacidade de criar lógica adaptativa com base nos dados presentes nas estruturas de dados.\n","\n","Ao incorporar o operador \"in\" em condicionais, você pode fazer com que seu código tome decisões informadas com base em condições específicas. Isso é especialmente útil ao lidar com diferentes cenários e variações nos dados.\n","\n","Abaixo estão alguns exemplos de como utilizar este operador com outros tipos de variáveis e estruturas de dados:"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":284,"status":"ok","timestamp":1691882805514,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"xIxXgyjnSo80","outputId":"5fc8f10e-11d2-4a8c-d9e9-652a8d1ec17e"},"outputs":[{"name":"stdout","output_type":"stream","text":["True\n","False\n"]}],"source":["# Strings\n","\n","texto = 'Olá, como você está?'\n","print('como' in texto) # Saída: True\n","print('bem' in texto) # Saída: False\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"J0BaatM2SzDO"},"outputs":[],"source":["# Tuplas\n","\n","pontos = (10, 20, 30, 40, 50)\n","print(20 in pontos) # Saída: True\n","print(60 in pontos) # Saída: False\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"XYSTd6_PS1J7"},"outputs":[],"source":["# Conjuntos (Sets)\n","\n","numeros_pares = {2, 4, 6, 8, 10}\n","print(6 in numeros_pares) # Saída: True\n","print(7 in numeros_pares) # Saída: False"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"-0ip6Yf_S4MT"},"outputs":[],"source":["# Dicionários (Chaves)\n","\n","contato = {'nome': 'João', 'idade': 25, 'email': 'joao@example.com'}\n","print('idade' in contato) # Saída: True\n","print('telefone' in contato) # Saída: False\n"]},{"cell_type":"markdown","metadata":{"id":"xS640Eo_B_A_"},"source":["#### Exercícios"]},{"cell_type":"markdown","metadata":{"id":"TIwStOxHUTai"},"source":["1 - Lista de Compras\n","\n","Crie uma lista vazia chamada \"lista_de_compras\". Adicione à lista pelo menos 5 itens que você normalmente encontraria em uma lista de compras usando o método \"append()\". Após adicionar os itens, imprima a lista completa."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":322,"status":"ok","timestamp":1692111995838,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"},"user_tz":180},"id":"6UVus0k3TOLV","outputId":"314c5732-47a9-409d-aea7-9e02c698f348"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['feijão', 'arroz', 'pão integral', 'banana', 'iogurte']"]},"metadata":{},"execution_count":4}],"source":["lista_de_compras = []\n","\n","lista_de_compras.append(\"feijão\")\n","lista_de_compras.append(\"arroz\")\n","lista_de_compras.append(\"pão integral\")\n","lista_de_compras.append(\"banana\")\n","lista_de_compras.append(\"iogurte\")\n","\n","lista_de_compras"]},{"cell_type":"markdown","metadata":{"id":"8MNj4OSyU8Us"},"source":["2 - Com a lista do exercício anterior, adicione dois novos itens: um exatamente na terceira posição e outro na última. Imprima esta lista."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":387,"status":"ok","timestamp":1692111999533,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"},"user_tz":180},"id":"y_fLjaLvTOEy","outputId":"8738ea74-22bd-4bb0-aece-29403d0ad0f4"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['feijão', 'arroz', 'maçã', 'pão integral', 'banana', 'iogurte', 'chocolate']"]},"metadata":{},"execution_count":5}],"source":["lista_de_compras.insert(2, \"maçã\")\n","lista_de_compras.insert(6, \"chocolate\")\n","\n","lista_de_compras"]},{"cell_type":"markdown","metadata":{"id":"YCLW__joVLop"},"source":["3 - Crie uma lista vazia chamada \"palavras_aleatorias\". Adicione três palavras aleatórias. Em seguida, use o método \"extend()\" para adicionar mais três palavras à lista. Por fim, imprima a lista completa."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"TWbms9g7TN-I","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692112072514,"user_tz":180,"elapsed":360,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"30fe3ec6-3145-4673-8843-aa82c21b9f63"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['caneta', 'professor', 'caderno', 'lápis', 'borracha', 'aluno']"]},"metadata":{},"execution_count":6}],"source":["palavras_aleatorias = [\"caneta\", \"professor\", \"caderno\"]\n","\n","outras_palavras = [\"lápis\", \"borracha\", \"aluno\"]\n","\n","palavras_aleatorias.extend(outras_palavras)\n","\n","palavras_aleatorias"]},{"cell_type":"markdown","metadata":{"id":"EVFVGeJ7Vfza"},"source":["4 - Aqui está uma lista com os países com o maior número de copas do mundo. Remova a Argentina e imprima a lista completa."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"NO3cS6etWG5V","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692112106940,"user_tz":180,"elapsed":470,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"c2760958-acba-458c-d49f-eded5f0da71b"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['Brasil', 'Alemanha', 'Itália', 'França']"]},"metadata":{},"execution_count":7}],"source":["ganhadores_copa = [\"Brasil\", \"Alemanha\", \"Itália\", \"Argentina\", \"França\"]\n","\n","ganhadores_copa.remove(\"Argentina\")\n","\n","ganhadores_copa"]},{"cell_type":"markdown","metadata":{"id":"KeELXjCYWZpy"},"source":["5 - Ah, sim, bem melhor! Agora, com essa nova lista, remova a Alemanha através do seu índice e imprima a lista resultante."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Sr0mYe09TN3y","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692112242872,"user_tz":180,"elapsed":358,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"f9862d3d-7584-4cea-a4c2-5e5c670542ee"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['Brasil', 'Itália', 'França']"]},"metadata":{},"execution_count":8}],"source":["# Exemplo 01\n","\n","ganhadores_copa.pop(1)\n","\n","ganhadores_copa"]},{"cell_type":"code","source":["# Exemplo 02\n","\n","ganhadores_copa = [\"Brasil\", \"Alemanha\", \"Itália\", \"França\"]\n","\n","del ganhadores_copa[1]\n","\n","ganhadores_copa"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nYjZYRRFv0Pp","executionInfo":{"status":"ok","timestamp":1692112299292,"user_tz":180,"elapsed":443,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"04167965-3056-40c1-aaa1-b31dd464d893"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['Brasil', 'Itália', 'França']"]},"metadata":{},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"2Nw4AaC3WviX"},"source":["6 - Só para ter certeza, faça um teste lógico para se certificar de que a Argentina *não* está na lista resultante do exercício 5. Imprima o resultado."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"IHVI6n3EWZIb","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692112331544,"user_tz":180,"elapsed":538,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"7e13e458-b5db-4680-ca5a-ca2af7521d80"},"outputs":[{"output_type":"stream","name":"stdout","text":["True\n"]}],"source":["print(\"Argentina\" not in ganhadores_copa)"]},{"cell_type":"markdown","metadata":{"id":"HxJOAL4AW89V"},"source":["7 - Também cheque se a Alemanha *está* na lista do exercício 5. Imprima o resultado do teste lógico."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"QBSkyI_sTNxZ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692112358394,"user_tz":180,"elapsed":23,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"e82b86b0-9134-4b75-98a5-4271481e5904"},"outputs":[{"output_type":"stream","name":"stdout","text":["False\n"]}],"source":["print(\"Alemanha\" in ganhadores_copa)"]},{"cell_type":"markdown","metadata":{"id":"QR1RvOV7XFV0"},"source":["8 - Muito bom, mas ficaria melhor se só tivéssemos o Brasil. Extraia o Brasil em uma nova variável e a imprima."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"_AsSs1RITNrZ","colab":{"base_uri":"https://localhost:8080/","height":35},"executionInfo":{"status":"ok","timestamp":1692112431786,"user_tz":180,"elapsed":55,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"0ab082cf-7b03-4f28-c8b8-ba0108a51cea"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["'Brasil'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":16}],"source":["unico_penta = ganhadores_copa[0]\n","\n","unico_penta"]},{"cell_type":"markdown","metadata":{"id":"oqNfl47SYDDi"},"source":["9 - Ordene a seguinte lista e extraia os três maiores valores."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"JldafzPmTNgU","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692112507298,"user_tz":180,"elapsed":370,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"0bd279b9-3bec-43ba-8f78-c12c3c4f832c"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["[8, 10, 15]"]},"metadata":{},"execution_count":17}],"source":["# Exemplo 01\n","\n","lista = [15, 3, 8, 1, 10]\n","\n","lista.sort()\n","\n","maiores_valores = lista[-3:]\n","\n","maiores_valores"]},{"cell_type":"code","source":["# Exemplo 02\n","\n","lista = [15, 3, 8, 1, 10]\n","\n","lista.sort()\n","\n","lista = lista[0:2]\n","\n","lista"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"iMPn2DvVxA1O","executionInfo":{"status":"ok","timestamp":1692112712869,"user_tz":180,"elapsed":311,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"0553d364-6a60-44aa-c77a-a6d38c201790"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[1, 3]"]},"metadata":{},"execution_count":23}]},{"cell_type":"markdown","metadata":{"id":"MmqQpH85YJu1"},"source":["### 2. Operadores Lógicos"]},{"cell_type":"markdown","metadata":{"id":"gftnkoAKY3yG"},"source":["Antes de partimos de vez para o assunto principal da aula de hoje, cabe introduzir os operadores lógicos, que serão essenciais para entender e aplicar as estruturas condicionais em Python.\n","\n","Os operadores lógicos em Python são ferramentas poderosas que permitem aos programadores realizar avaliações complexas sobre a verdade ou falsidade de expressões booleanas. Compostos pelos operadores \"*and*\", \"*or*\" e \"*not*\", esses elementos são fundamentais para criar decisões adaptativas em programas.\n","\n","1. O operador \"*and*\" retorna verdadeiro somente quando todas as expressões envolvidas são verdadeiras.\n","2. O operador \"*or*\" retorna verdadeiro se pelo menos uma das expressões for verdadeira.\n","3. Por sua vez, o operador \"*not*\" inverte o valor de uma expressão, transformando verdadeiro em falso e vice-versa.\n","\n","Ao combinar esses operadores com condicionais e loops, os desenvolvedores podem criar fluxos de execução dinâmicos e inteligentes que respondem a uma variedade de cenários."]},{"cell_type":"markdown","metadata":{"id":"Lp8NtohMbICl"},"source":["Por exemplo, digamos que eu queira determinar se certa pessoa pode ou não dirigir um carro. Para isso, ela precisa ser maior de idade *e* ter uma carteira de motorista"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":276,"status":"ok","timestamp":1691883372311,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"p1wLyffnbCvA","outputId":"799cc18c-dfc1-46d3-9324-4b1e37485dca"},"outputs":[{"name":"stdout","output_type":"stream","text":["O teste deu \"False\". Essa pessoa não pode dirigir ainda\n"]}],"source":["idade = 18\n","carteira = False\n","\n","teste = (idade >= 18 and carteira) # O uso do parênteses em testes é opcional,\n"," # mas pode ser útil na clareza do código\n","\n","print(f'O teste deu \"{teste}\". Essa pessoa não pode dirigir ainda')"]},{"cell_type":"markdown","metadata":{"id":"otJAtgGZcpu2"},"source":["Digamos que você queira contratar alguém e deseja que ela tenho, ao menos, *ou* experiência ou referências de alguém."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":283,"status":"ok","timestamp":1691883448115,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"sjaUBnkXbFVe","outputId":"b377f28f-584c-4844-9caa-ffe3ffa987dc"},"outputs":[{"name":"stdout","output_type":"stream","text":["Podemos contratar, o teste deu True\n"]}],"source":["tem_experiencia = True\n","tem_referencias = False\n","\n","teste = (tem_experiencia or tem_referencias)\n","\n","print(f'Podemos contratar, o teste deu {teste}')"]},{"cell_type":"markdown","metadata":{"id":"eqUEwxMMdHJE"},"source":["O 'not' já foi introduzido acima com o operador 'in', mas ele não é obrigatoriamente vinculado a este. Se você quer saber se hojé é um dia bom para praia, poderia executar o seguinte teste:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"cVQjjWXIdYxe"},"outputs":[],"source":["esta_chovendo = False\n","inverno = False\n","\n","teste = (not esta_chovendo and not inverno)\n","\n","print(f'Eba, é dia de praia, pois o teste deu {teste}')"]},{"cell_type":"markdown","metadata":{"id":"x2fjtVndd6HX"},"source":["Esses operadores fazem mais sentido dentro de loops (estruturas de repetição) ou estruturas condicionais. Nas próximas seções aprofundaremos isso."]},{"cell_type":"markdown","metadata":{"id":"24pXNhnFtyF0"},"source":["### Nota sobre recuo (*Identation*) em Python\n","\n","Até o momento, não nos preocupamos em explicar o recuo em Python. No entanto, chegada as estruturas condicionais e de repetição, torna-se necessário explicá-lo. O recuo, também conhecido como indentação, é um conceito fundamental em Python que define a estrutura do código e agrupa blocos de instruções. Em vez de usar chaves ou palavras-chave especiais para delimitar blocos de código, o Python usa a indentação consistente para determinar a estrutura hierárquica do programa. O recuo é a maneira como você alinha suas linhas de código verticalmente para mostrar a aninhamento das instruções.\n","\n","Por exemplo, em um loop \"for\" ou uma estrutura condicional \"if\", você deve recuar o bloco de código que está dentro dessas estruturas para indicar que faz parte delas. Aqui está um exemplo de um loop \"for\" em Python:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"q5akE3vCuPXm"},"outputs":[],"source":["for i in range(5):\n"," print(i)\n"," print(\"Este código está dentro do loop\")\n","print(\"Este código está fora do loop\")\n"]},{"cell_type":"markdown","metadata":{"id":"fxu-bTN-uPxY"},"source":["Neste exemplo, o recuo determina qual parte do código está dentro do loop \"for\". Todas as linhas de código recuadas sob o \"for\" fazem parte do loop, enquanto a linha sem recuo está fora do loop.\n","\n","A convenção padrão é usar espaços em branco para criar o recuo. Geralmente, um recuo consiste em quatro espaços (ou um tab equivalente). A consistência no recuo é crucial, pois o Python depende disso para entender a estrutura do código.\n","\n","Além de melhorar a legibilidade do código, a abordagem baseada em recuo ajuda a evitar a necessidade de caracteres extras, como chaves ou palavras-chave de finalização, presentes em outras linguagens de programação. Isso torna o código Python mais limpo e fácil de entender."]},{"cell_type":"markdown","metadata":{"id":"NCt8aZFDZite"},"source":["### 3. Estruturas Condicionais"]},{"cell_type":"markdown","metadata":{"id":"FBl5zegefgxO"},"source":["Estruturas condicionais são blocos de código que permitem que um programa tome decisões com base em condições específicas. Elas permitem que o fluxo de execução do programa siga diferentes caminhos, dependendo se certas condições são verdadeiras ou falsas. Em Python, as estruturas condicionais são implementadas principalmente usando a instrução \"if\", seguida por uma ou mais cláusulas \"elif\" (opcional) e uma cláusula \"else\" (opcional).\n","\n","Aqui está a estrutura básica de uma instrução \"if\" em Python:"]},{"cell_type":"markdown","metadata":{"id":"qoKJhVB4ZsmB"},"source":["![conditionalstatements.webp](data:image/webp;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"LRI5NuB6flSz"},"source":["Como mostra a figura, se a condição (\"expr\") for verdadeira, o Python seguirá o que está identando em seguida (parte verde). Caso a condição seja falsa, ele pulará este bloco identado (seta vermelha). As cláusulas \"elif\" permitem que você especifique condições adicionais a serem verificadas, caso a primeira condição do \"if\" seja falsa. A cláusula \"else\" é usada para definir um bloco de código a ser executado quando nenhuma das condições anteriores é verdadeira.\n","\n"," Um exemplo simples se encontra a seguir:"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":288,"status":"ok","timestamp":1691884742329,"user":{"displayName":"Lorena Barberia","userId":"04624378740027856519"},"user_tz":180},"id":"ItjAbClsgH4s","outputId":"0a7d08b9-03c3-49d5-d327-5b1ce8964818"},"outputs":[{"name":"stdout","output_type":"stream","text":["Você tem 18 anos.\n"]}],"source":["idade = 18\n","\n","if idade < 18: # 1° Condição -> Menor que 18 anos\n"," print(\"Você é menor de idade.\")\n","elif idade == 18: # 2° Condição -> Tem 18 anos\n"," print(\"Você tem 18 anos.\")\n","else: # 3° Condição -> Outros valores\n"," print(\"Você é maior de idade.\")"]},{"cell_type":"markdown","metadata":{"id":"GxjM_LPag9AO"},"source":["Nesse exemplo, a estrutura condicional verifica a idade da pessoa e imprime mensagens diferentes com base na faixa etária. As condições são avaliadas sequencialmente e o bloco de código associado à primeira condição verdadeira é executado.\n","\n","As estruturas condicionais são fundamentais para criar lógica adaptativa e tomar decisões informadas em programas Python, permitindo que os programas se ajustem às circunstâncias e interajam com o usuário ou com os dados de maneira eficaz.\n","\n","Como dito anteriormente, você pode utilizar estruturas condicionais com os operadores lógicos. Voltando ao exemplo da carteira de motorista:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"jGR-su66hIQK"},"outputs":[],"source":["idade = 27\n","carteira = True\n","\n","\n","if idade < 18:\n"," print(\"Você é menor de idade, não pode dirigir!\")\n","elif idade >= 18 and not carteira:\n"," print(\"Você é maior de idade, mas não possui carteira de motorista!\")\n","elif idade >= 18 and carteira:\n"," print(\"Parabéns, você pode dirigir!\")\n"]},{"cell_type":"markdown","metadata":{"id":"i1iWduCxhkG0"},"source":["Perceba que, como a idade é um número maior que 18 e a variável carteira tem valor \"true\", a estrutura condicional fez com que o Python pulasse os dois primeiros blocos e fosse direto para o último, imprimindo a mensagem \"Parabéns, você pode dirigir!\"."]},{"cell_type":"markdown","metadata":{"id":"2BtGCo8hi0bU"},"source":["*Condicionais aninhados*"]},{"cell_type":"markdown","metadata":{"id":"oOtMc0ogi3pv"},"source":["Condicionais aninhados, também conhecidos como condicionais encadeados, são estruturas em que uma instrução condicional (como \"if\", \"elif\" ou \"else\") está contida dentro de outra instrução condicional. Isso permite que você crie decisões complexas e múltiplos caminhos de execução com base em várias condições.\n","\n","Continuando com o exemplo da carteira de motorista, poderíamos refazê-lo do seguinte modo:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"QikrBouhi-HM"},"outputs":[],"source":["idade = 20\n","possui_carteira = True\n","\n","if idade >= 18:\n"," if possui_carteira:\n"," print(\"Você pode dirigir legalmente.\")\n"," else:\n"," print(\"Você é maior de idade, mas precisa tirar a carteira.\")\n","else:\n"," print(\"Você não é maior de idade e não tem permissão para dirigir.\")"]},{"cell_type":"markdown","metadata":{"id":"LO6P633ujE7R"},"source":["Neste exemplo, há um \"if\" externo que verifica se a idade é maior ou igual a 18. Se essa condição for verdadeira, ele entra em outro bloco de código \"if\" aninhado, que verifica se a pessoa possui uma carteira de motorista. Dependendo das condições, diferentes mensagens são impressas.\n","\n","Os condicionais aninhados permitem que você construa uma lógica mais complexa, levando em consideração várias situações e cenários. No entanto, é importante manter o código organizado e legível, identando corretamente os blocos aninhados para evitar confusões.\n","\n","Lembre-se de que, embora os condicionais aninhados sejam úteis, em alguns casos, a reorganização do código usando operadores lógicos pode resultar em estruturas mais claras e fáceis de entender."]},{"cell_type":"markdown","metadata":{"id":"68VgJDq54F8a"},"source":["**Para saber mais acesse o seguinte [link](https://docs.python.org/3/tutorial/controlflow.html?highlight=logical%20operators)**"]},{"cell_type":"markdown","metadata":{"id":"iD8Rad2ziBTD"},"source":["#### Exercícios"]},{"cell_type":"markdown","metadata":{"id":"ssgotM59iEBp"},"source":["1 - Solicite ao usuário sua média final e sua presença. Com base nessas informações, exiba uma mensagem indicando se ele foi aprovado ou reprovado, e por qual motivo."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"-yk6cVcXlkzj","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692113059253,"user_tz":180,"elapsed":4250,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"419bddc9-be40-44a5-86b9-adb741399e19"},"outputs":[{"output_type":"stream","name":"stdout","text":["Digite sua média final: 5\n","Digite sua presença: 75\n","Parabéns, você foi aprovado!\n"]}],"source":["# Exemplo 01\n","\n","media_final = int(input(\"Digite sua média final: \"))\n","\n","presenca = int(input(\"Digite sua presença: \"))\n","\n","if media_final >= 5 and presenca >= 75:\n"," print(\"Parabéns, você foi aprovado!\")\n","else:\n"," print(\"Sinto muito, você foi reprovado!\")"]},{"cell_type":"code","source":["# Exemplo 02\n","\n","media_final = int(input(\"Digite sua média final: \"))\n","\n","presenca = int(input(\"Digite sua presença: \"))\n","\n","if media_final < 5 or presenca < 75:\n"," print(\"Sinto muito, você foi reprovado!\")\n","else:\n"," print(\"Parabéns, você foi aprovado!\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"JDCbf5M9ycXY","executionInfo":{"status":"ok","timestamp":1692113073430,"user_tz":180,"elapsed":3722,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"8074c395-3126-439d-9b2d-b7365b834aed"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Digite sua média final: 5\n","Digite sua presença: 75\n","Parabéns, você foi aprovado!\n"]}]},{"cell_type":"markdown","metadata":{"id":"zPbheCY9llEI"},"source":["2 - Decisão de Compra de Produto: Peça ao usuário para inserir o preço de um produto e o valor em dinheiro que ele possui. Verifique se o usuário pode comprar o produto, considerando o valor inserido."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Psvyld6Cm4JG","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692113203504,"user_tz":180,"elapsed":6753,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"4d31c0ee-67f6-4512-82fb-e1d8d80ad817"},"outputs":[{"output_type":"stream","name":"stdout","text":["Insira o preço do produto: 3.80\n","Insira o saldo que você tem disponível: 3.79\n","Desculpe, seu saldo é insuficiente!\n"]}],"source":["# Exemplo 01\n","\n","preco_produto = float(input(\"Insira o preço do produto: \"))\n","\n","saldo = float(input(\"Insira o saldo que você tem disponível: \"))\n","\n","if preco_produto <= saldo:\n"," print(\"Ok, você pode proceder com a compra!\")\n","else:\n"," print(\"Desculpe, seu saldo é insuficiente!\")"]},{"cell_type":"code","source":["# Exemplo 02\n","\n","preco_produto = float(input(\"Insira o preço do produto: \"))\n","\n","saldo = float(input(\"Insira o saldo que você tem disponível: \"))\n","\n","if saldo >= preco_produto:\n"," print(\"Ok, você pode proceder com a compra!\")\n","else:\n"," print(\"Desculpe, seu saldo é insuficiente!\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gnZk4iBKzq8g","executionInfo":{"status":"ok","timestamp":1692113286182,"user_tz":180,"elapsed":5853,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"7ff6f2d9-3963-4d6e-de8c-dfac583f8c6d"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Insira o preço do produto: 5\n","Insira o saldo que você tem disponível: 4.99\n","Desculpe, seu saldo é insuficiente!\n"]}]},{"cell_type":"markdown","metadata":{"id":"it8cvO0rm4UK"},"source":["3 - Você possui a seguinte lista de usuários. Agora, peça para um usuário digitar seu nome e verifique se ele se encontra no banco de usuários. Imprima uma mensagem o avisando do resultado."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"0YlR1Gmqm_ys","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692113389652,"user_tz":180,"elapsed":4311,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"e19ecc4f-1c02-4197-e7cc-bc92d6125831"},"outputs":[{"output_type":"stream","name":"stdout","text":["Digite seu nome: João\n","Ok, você tem autorização para prosseguir.\n"]}],"source":["usuarios = ['José', 'Maria', \"João\", \"Guilherme I\", \"Guilherme II\"]\n","\n","nome_usuario = str(input(\"Digite seu nome: \"))\n","\n","if nome_usuario in usuarios:\n"," print(\"Ok, você tem autorização para prosseguir.\")\n","else:\n"," print(\"Opa, parece que você não está cadastrado no nosso sistema. Por favor, realize o cadastro na página inicial.\")\n","\n"]},{"cell_type":"markdown","metadata":{"id":"CJshMdX1neUK"},"source":["4 - Peça ao usuário para inserir uma letra. Verifique se a letra é uma vogal ou uma consoante e exiba uma mensagem correspondente."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"YXiQeJ2InfvT","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692113568941,"user_tz":180,"elapsed":2844,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"ef9af81a-6908-4916-df0a-febbca2957dd"},"outputs":[{"output_type":"stream","name":"stdout","text":["Insira uma letra do alfabeto: b\n","Maravilha, você digitou uma consoante.\n"]}],"source":["# Exemplo 01\n","\n","vogais = [\"a\", \"e\", \"i\", \"o\", \"u\"]\n","\n","letra = str(input(\"Insira uma letra do alfabeto: \"))\n","\n","if letra in vogais:\n"," print(\"Legal, você digitou uma vogal.\")\n","else:\n"," print(\"Maravilha, você digitou uma consoante.\")"]},{"cell_type":"markdown","metadata":{"id":"TG9_D-Z5o1f2"},"source":["5 - Um Palíndromo é uma frase ou palavra que se pode ler, indiferentemente, da esquerda para a direita ou vice-versa. Peça ao usuário uma palavra e verifique se ela é ou não um palíndromo, imprimindo o resultado final. (Dica: Para inverter uma string, pode utilizar \"string[::-1]\")."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"eVFa30WFo16z","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692120437482,"user_tz":180,"elapsed":5875,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"a443241c-b55b-4298-8a90-0f2acc5f4ab8"},"outputs":[{"output_type":"stream","name":"stdout","text":["Insira uma palavra ou expressão: teste\n","Ah, que pena! Não é um palíndromo.\n"]}],"source":["# Exemplo 01\n","\n","# Pacotes\n","\n","import re\n","import unicodedata\n","\n","# Input\n","\n","palavra = str(input(\"Insira uma palavra ou expressão: \"))\n","\n","# Remove espaços em branco e converte para letras minúsculas\n","\n","palavra = palavra.replace(\" \", \"\").lower()\n","\n","# Remove caracteres especiais\n","\n","palavra = re.sub('\\W+', '', palavra)\n","\n","# Remove acentos\n","\n","palavra = unicodedata.normalize(\"NFKD\", palavra).encode('ascii','ignore').decode('utf8')\n","\n","# Palíndromos\n","\n","# 1 - Socorram-me, subi no ônibus em Marrocos\n","# 2 - Anotaram a data da maratona\n","# 3 - Ótimo, só eu, que os omito\n","\n","if palavra == palavra[::-1]:\n"," print(\"Uau, você achou um palíndromo.\")\n","else:\n"," print(\"Ah, que pena! Não é um palíndromo.\")"]},{"cell_type":"markdown","metadata":{"id":"FpvzYRmGtMfz"},"source":["### 4. Estruturas de Repetição"]},{"cell_type":"markdown","metadata":{"id":"9hNLrbJTllgz"},"source":["As estruturas de repetição são fundamentais na programação, permitindo a automação de tarefas repetitivas e a execução de um conjunto de instruções várias vezes. Elas são essenciais para criar programas eficientes, pois evitam a necessidade de repetir o mesmo código manualmente e permitem que o computador execute tarefas monótonas de maneira rápida e precisa.\n","\n","Existem dois tipos principais de estruturas de repetição: loops \"for\" e loops \"while\". Cada tipo tem suas próprias características e situações em que são mais adequados."]},{"cell_type":"markdown","metadata":{"id":"hmuK3pAzuxqy"},"source":["#### While Loops"]},{"cell_type":"markdown","metadata":{"id":"hYzOhFZImWP8"},"source":["Por exemplo, se quísessemos imprimir três números na tela, uma maneira possível de fazer isso seria a seguinte:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"_9YPnozpmdHF"},"outputs":[],"source":["print(1)\n","\n","print(2)\n","\n","print(3)"]},{"cell_type":"markdown","metadata":{"id":"pGWf05pymkdc"},"source":["No entanto, isso é maçante e, com dados extensos, quase impossível. Um modo alternativo de fazer isso é utilizando o \"*while*\""]},{"cell_type":"code","execution_count":null,"metadata":{"id":"H3lu43ozmxIh"},"outputs":[],"source":["x = 1\n","\n","while x <= 3:\n"," print(x)\n","\n"," x = x + 1"]},{"cell_type":"markdown","metadata":{"id":"7Wr93v0Qm7CR"},"source":["O loop \"*while*\" é uma estrutura de repetição que executa um bloco de código enquanto a condição especificada for verdadeira. Ele permite que você repita uma ação indefinidamente ou até que uma determinada condição seja satisfeita. A sintaxe básica do loop \"*while*\" é a seguinte:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"uONEVY4lnDiF"},"outputs":[],"source":["while condição:\n"," # Bloco de código a ser repetido"]},{"cell_type":"markdown","metadata":{"id":"IXtGKjopnFG8"},"source":["No exemplo dos números acima, definimos um valor inicial para **x**. Então, estabelecemos uma condição para o while de que ele só deve operar enquanto **x** fosse menor ou igual a 3. No entanto, se só rodassemos o código até aqui, ele seria um loop infinito. Portanto, adicionamos dentro do bloco do while uma atualização do valor de **x**, acrescentado +1 toda vez que o loop se repete, até a condição ser alcançada. O \"**x**\" nesse caso é chamado de \"contador\", e nossa condição é o valor máximo. Se quísessemos imprimir os valores de 1 a 10 multiplicados por 2 (por algum motivo), poderíamos fazer da seguinte maneira:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"oDAssn5MneTs"},"outputs":[],"source":["contador = 0\n","\n","while contador <= 10:\n"," print(contador * 2)\n"," contador += 1 # Pode utilizar isso ao invés de escrever contador = contador + 1"]},{"cell_type":"markdown","metadata":{"id":"ByB0McBesQ_f"},"source":["Adicionalmente, se você quiser imprimir os valores de uma lista, pode fazê-lo do seguinte modo:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fmRtcDQKsVJa"},"outputs":[],"source":["lista = [10,20,30,40,50,60]\n","i = 0 # Contador\n","tamanho_lista = len(lista)\n","\n","while i < tamanho_lista:\n"," print(lista[i])\n"," i += 1"]},{"cell_type":"markdown","metadata":{"id":"fdvwpd7AvlTT"},"source":["##### Exercícios"]},{"cell_type":"markdown","metadata":{"id":"leaLDwwHp1lA"},"source":["1 - Peça ao usuário para inserir um número. Use um loop \"*while*\" para imprimir todos os números de 1 até o número inserido."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"zRAbyoOmp1T8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692120601722,"user_tz":180,"elapsed":2660,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"5d0c83b2-6264-4f98-9e85-9c84e67a0b34"},"outputs":[{"output_type":"stream","name":"stdout","text":["Insira um número inteiro: 20\n","1\n","2\n","3\n","4\n","5\n","6\n","7\n","8\n","9\n","10\n","11\n","12\n","13\n","14\n","15\n","16\n","17\n","18\n","19\n","20\n"]}],"source":["# Exemplo 01\n","\n","numero = int(input(\"Insira um número inteiro: \"))\n","\n","contador = 1\n","\n","while contador <= numero:\n"," print(contador)\n","\n"," contador = contador + 1\n","\n"]},{"cell_type":"markdown","metadata":{"id":"n8RrP0ZVp16G"},"source":["2 - Tabuada: Peça para o usuário um número inteiro e mostre para ele a tabuada desse número de 1 a 10."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Z8IT-c9jp2T3","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692120755483,"user_tz":180,"elapsed":2995,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"174f7ad6-7504-4f8b-9afe-fd21bc49684f"},"outputs":[{"output_type":"stream","name":"stdout","text":["Insira um número inteiro: 5\n","5\n","10\n","15\n","20\n","25\n","30\n","35\n","40\n","45\n","50\n"]}],"source":["# Exemplo 01\n","\n","numero = int(input(\"Insira um número inteiro: \"))\n","\n","contador = 1\n","\n","while contador <= 10:\n"," print(numero * contador)\n"," contador = contador + 1"]},{"cell_type":"markdown","metadata":{"id":"E7ZLVfdZrKyj"},"source":["3 - Com a seguinte frase, crie uma nova string substituindo o 'r' minúsculo por 'R' maiúsculo. Depois, imprima a nova string."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"FJegLxCbp2qc"},"outputs":[],"source":["# Exemplo 01\n","\n","# Frase de referência\n","\n","frase = \"o rato roeu a roupa do rei de roma\"\n","\n","# Número de caracteres na frase\n","\n","tamanho_frase = len(frase)\n","\n","# Contador\n","\n","contador = 0\n","\n","# String vazia onde a nova frase será armazenada\n","\n","nova_frase = \"\"\n","\n","# Substituindo r por R\n","\n","while contador < tamanho_frase:\n"," letra = frase[contador]\n"," if letra == 'r':\n"," letra = letra.upper()\n"," else:\n"," letra\n"," nova_frase = nova_frase + letra\n"," print(nova_frase)\n"," contador = contador + 1\n"]},{"cell_type":"code","source":["# Exemplo 02\n","\n","# Frase de referência\n","\n","frase = \"o rato roeu a roupa do rei de roma\"\n","\n","# String vazia onde a nova frase será armazenada\n","\n","nova_frase = frase\n","\n","# Substituindo r por R\n","\n","while \"r\" in nova_frase:\n"," nova_frase = nova_frase.replace(\"r\", \"R\", 1)\n"," print(nova_frase)\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Ixxvncj1QiAb","executionInfo":{"status":"ok","timestamp":1692125137318,"user_tz":180,"elapsed":305,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"4ba9d05f-c949-4945-ddcd-5c107b9068fb"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["o Rato roeu a roupa do rei de roma\n","o Rato Roeu a roupa do rei de roma\n","o Rato Roeu a Roupa do rei de roma\n","o Rato Roeu a Roupa do Rei de roma\n","o Rato Roeu a Roupa do Rei de Roma\n"]}]},{"cell_type":"markdown","metadata":{"id":"fIqHOXYMtEP9"},"source":["4 - Por que o seguinte código gera um erro?"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"F_SABdJEp2hC"},"outputs":[],"source":["lista = [10,20,30,40,50,60]\n","i = 0 # Contador\n","tamanho_lista = len(lista)\n","\n","while i <= tamanho_lista:\n"," print(lista[i])\n"," i += 1\n","\n","# O índice está fora do tamanho da lista"]},{"cell_type":"code","source":["# Exemplo correto"],"metadata":{"id":"SsumnozihhVK"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["lista = [10,20,30,40,50,60]\n","i = 0 # Contador\n","tamanho_lista = len(lista)\n","\n","while i < tamanho_lista:\n"," print(lista[i])\n"," i += 1"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2EhFaBlvhhQH","executionInfo":{"status":"ok","timestamp":1692125264935,"user_tz":180,"elapsed":317,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"41a3362c-9312-443e-86d9-df20509c9c21"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["10\n","20\n","30\n","40\n","50\n","60\n"]}]},{"cell_type":"markdown","metadata":{"id":"ptnGI1LCtKTM"},"source":["5 - Imprima a média dos seguintes cinco números utilizando um *while loop*."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"4lwY3XEtp3DI"},"outputs":[],"source":["nums = [5,10,15,20,25]\n","tamanho_lista = len(nums)\n","contador = 0\n","numero = 0\n","media = 0\n","\n","while contador < tamanho_lista:\n"," numero = numero + nums[contador]\n"," media = numero/(contador + 1)\n"," contador = contador + 1\n"," print(media)\n"]},{"cell_type":"markdown","metadata":{"id":"Y28InRwdu2ns"},"source":["# #### For Loops"]},{"cell_type":"markdown","metadata":{"id":"4lUB7qDCuy29"},"source":["O loop \"*for*\" é uma estrutura de repetição em Python que permite percorrer sequências (como listas, strings, ranges, etc.) e executar um bloco de código para cada elemento na sequência. O loop \"*for*\" é especialmente útil quando você sabe quantas vezes deseja executar um bloco de código, com base no comprimento da sequência.\n","\n","A sintaxe básica do loop \"*for*\" em Python é a seguinte:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"AoM5OAlmvmYE"},"outputs":[],"source":["for elemento in sequencia:\n"," # Bloco de código a ser executado para cada elemento\n"]},{"cell_type":"markdown","metadata":{"id":"JaXrbKqWu1J8"},"source":["Aqui está como o loop \"*for*\" funciona:\n","\n","1. O loop começa com a palavra-chave \"*for*\".\n","2. A variável \"elemento\" assume o valor de cada item na sequência, um por um.\n","3. O bloco de código dentro do loop é executado para cada valor de \"elemento\".\n","4. O loop continua até que todos os elementos da sequência tenham sido percorridos.\n","\n","\n","Aqui está um exemplo de um loop \"*for*\" que percorre uma lista de números e imprime cada número:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Xc9i3Q_su9dN"},"outputs":[],"source":["numeros = [1, 2, 3, 4, 5]\n","for numero in numeros:\n"," print(numero)"]},{"cell_type":"markdown","metadata":{"id":"gZprEhv1vA8s"},"source":["Neste exemplo, o bloco de código dentro do loop \"*for*\" é executado cinco vezes (uma vez para cada número na lista). A variável \"numero\" assume o valor de cada número na sequência \"numeros\".\n","\n","O loop \"*for*\" em Python é uma ferramenta poderosa para percorrer e processar elementos em sequências. Ele é frequentemente usado para iterar sobre listas, strings, dicionários e outras estruturas de dados iteráveis. Se você quer somar os números de uma lista, é muito mais fácil e direto utilizar o *for* loop:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"xEIuNRnOvkne"},"outputs":[],"source":["numeros = [1,2,3,4,5]\n","soma = 0\n","\n","for numero in numeros:\n"," soma += numero\n"," print(soma)\n"]},{"cell_type":"markdown","metadata":{"id":"e7jW1pwPvx1_"},"source":["O print dentro do bloco do for mostra o processo de soma um a um. No entanto, se desejasse, poderia só obter o valor final da soma:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"PI-fIg7ov4QG"},"outputs":[],"source":["numeros = [1,2,3,4,5]\n","soma = 0\n","\n","for numero in numeros:\n"," soma += numero\n","\n","\n","print(soma)"]},{"cell_type":"markdown","metadata":{"id":"KFedh1Z9v7UW"},"source":["Novamente, é necessário ressaltar a importância do recuo em Python. Veja que obtemos resultados muito diferentes só com base na indentação do \"print(soma)\""]},{"cell_type":"markdown","metadata":{"id":"XhsY2tkVwRAn"},"source":["Apesar do \"*for*\" facilitar nosso trabalho, ele não substitui completamente o *while*. Nas palavras de Menezes (2019): \"Dependendo do problema, utilizaremos *for* ou *while*. Normalmente utilizaremos *for* quando quisermos processar os elementos de uma lista, um a um. *While* é indicado para repetições nas quais não sabemos ainda quantas vezes vamos repetir ou onde manipulamos os índices de forma não sequencial.\" (p.114)."]},{"cell_type":"markdown","metadata":{"id":"fmX01VUZz-Gc"},"source":["#### Extra - Range e Enumerate"]},{"cell_type":"markdown","metadata":{"id":"2gUdaS960J3K"},"source":["A função range() é usada para criar uma sequência de números. Ela é frequentemente usada como argumento em loops \"for\" para controlar a repetição de um bloco de código um número específico de vezes. A sintaxe básica da função range() é:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"X9gjInTD0LS2"},"outputs":[],"source":["range(início, fim, passo)"]},{"cell_type":"markdown","metadata":{"id":"7tznZvW40MVQ"},"source":["1. início: O valor inicial da sequência. O valor padrão é 0.\n","2. fim: O valor final da sequência. O valor gerado não inclui esse valor.\n","3. passo: O incremento entre os valores da sequência. O valor padrão é 1."]},{"cell_type":"markdown","metadata":{"id":"NBbSHeC-0Ral"},"source":["Aqui está um exemplo de uso do range() com um loop \"for\":"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"lYmTG5Mp0SyS"},"outputs":[],"source":["for i in range(1, 6):\n"," print(i)\n"]},{"cell_type":"markdown","metadata":{"id":"wmkxOHsE0Vq2"},"source":["Neste exemplo, o loop \"*for*\" irá imprimir os números de 1 a 5.\n","\n","**enumerate():**\n","\n","A função enumerate() é usada para iterar sobre uma sequência (como uma lista) e ao mesmo tempo acompanhar a posição (índice) de cada elemento. Ela retorna um objeto enumerado que contém pares de índices e valores. A sintaxe básica da função enumerate() é:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"AadYRxoq0ZbI"},"outputs":[],"source":["enumerate(sequencia)\n"]},{"cell_type":"markdown","metadata":{"id":"MchlV7dF0ZyR"},"source":["Aqui está um exemplo de uso do enumerate() com um loop \"*for*\":"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"EYcgUUjC0bLl"},"outputs":[],"source":["frutas = [\"maçã\", \"banana\", \"laranja\"]\n","for indice, fruta in enumerate(frutas):\n"," print(f\"Índice {indice}: {fruta}\")\n"]},{"cell_type":"markdown","metadata":{"id":"TQK-PpvA0eca"},"source":["Neste exemplo, o loop \"*for*\" percorre a lista de frutas e o enumerate() fornece tanto o índice como o valor de cada fruta. Isso permite que você acesse ambos os valores enquanto itera.\n","\n","Tanto range() quanto enumerate() são ferramentas úteis para controlar e otimizar loops \"*for*\", tornando-os mais flexíveis e eficientes."]},{"cell_type":"markdown","metadata":{"id":"PSrkCp5ivoHM"},"source":["##### Exercícios"]},{"cell_type":"markdown","metadata":{"id":"nKus__JjyQu2"},"source":["1 - Da seguinte lista, *só* imprima os valores pares utilizando um *for loop*."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"sI3tysQbvCY4","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692126098800,"user_tz":180,"elapsed":320,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"60d8b610-fa0b-4c24-cc32-7e041298ee9a"},"outputs":[{"output_type":"stream","name":"stdout","text":["2\n","4\n","6\n","8\n","10\n"]}],"source":["lista = [1,2,3,4,5,6,7,8,9,10]\n","\n","for i, valor in enumerate(lista):\n"," if lista[i] % 2 == 0:\n"," print(lista[i])\n"]},{"cell_type":"markdown","metadata":{"id":"m6rHIlm3yaDn"},"source":["2 - Usando um loop \"*for*\", exiba todos os números de 1 a 10."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"NhEkjEYIvCR7","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692126132309,"user_tz":180,"elapsed":11,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"4bee3da3-f6af-45f7-a235-cd5bdb7a5049"},"outputs":[{"output_type":"stream","name":"stdout","text":["1\n","2\n","3\n","4\n","5\n","6\n","7\n","8\n","9\n","10\n"]}],"source":["for i, valor in enumerate(lista):\n"," print(lista[i])"]},{"cell_type":"markdown","metadata":{"id":"jPiEn5G6yaXR"},"source":["3 - Imprima todos os caracteres da seguinte string, um por linha."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"kMbLvcYKvCKB","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692126165112,"user_tz":180,"elapsed":284,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"81931d14-b9b0-47bb-e863-f682ea40925a"},"outputs":[{"output_type":"stream","name":"stdout","text":["P\n","a\n","i\n"," \n","e\n"," \n","m\n","ã\n","e\n",",\n"," \n","o\n","u\n","r\n","o\n"," \n","d\n","e\n"," \n","m\n","i\n","n\n","a\n",".\n"," \n","C\n","o\n","r\n","a\n","ç\n","ã\n","o\n",",\n"," \n","d\n","e\n","s\n","e\n","j\n","o\n"," \n","e\n"," \n","s\n","i\n","n\n","a\n"]}],"source":[" texto = \"Pai e mãe, ouro de mina. Coração, desejo e sina\"\n","\n","for i in texto:\n"," print(i)\n","\n"]},{"cell_type":"markdown","metadata":{"id":"pfFgS2RXyapf"},"source":["4 - Gere uma sequência e imprima só valores ímpares."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"caNBCEnxvCDG","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692126312990,"user_tz":180,"elapsed":282,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"ca1d32d1-76f5-46a0-f7e8-2622a120ba84"},"outputs":[{"output_type":"stream","name":"stdout","text":["1\n","3\n","5\n","7\n","9\n","11\n","13\n","15\n","17\n","19\n","21\n","23\n","25\n"]}],"source":["sequencia = range(0,26,1)\n","\n","for i in sequencia:\n"," if i % 2 != 0:\n"," print(i)\n"]},{"cell_type":"markdown","metadata":{"id":"IsIAuhoZya8D"},"source":["5 - Percorra a lista1 com um *for* *loop*, pegando somente os valores positivos e os anexando na lista2.\n","\n","\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"5DgzvR2UvB6r","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692126567219,"user_tz":180,"elapsed":303,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"47e490a3-beb0-4b68-b76f-3bdc8dc2f270"},"outputs":[{"output_type":"stream","name":"stdout","text":["[111]\n","[111, 32]\n","[111, 32, 9]\n","[111, 32, 9, 85]\n"]}],"source":["lista1 = [111, 32, -9, -45, -17, 9, 85, -10]\n","lista2 = []\n","\n","for i, valor in enumerate(lista1):\n"," if lista1[i] > 0:\n"," lista2.append(lista1[i])\n"," print(lista2)"]},{"cell_type":"markdown","metadata":{"id":"_r3WbMPaRuXt"},"source":["## Desafio - Construa o *Corpus* de uma Pesquisa em PLN"]},{"cell_type":"markdown","metadata":{"id":"-w-DPCVS68Bl"},"source":["

O exercício proposto nesta seção tem uma abordagem mais prática do que foi discutido em aula, o que o torna mais desafiador. Caso surjam dúvidas, não deixem de participar das monitorias semanais, pois é crucial que vocês possam aplicar esse conteúdo em situações do mundo real.\n","\n","

O tópico que se segue está diretamente ligado à pesquisa que orienta nossa disciplina e servirá como base para as próximas aulas, quando mergulharemos com mais profundidade no tema do desenho de pesquisa."]},{"cell_type":"markdown","metadata":{"id":"fu8QOf5s5Yb_"},"source":["#### O que é um *corpus*?"]},{"cell_type":"markdown","metadata":{"id":"SXShhH36TXja"},"source":["

No campo do Processamento de Linguagem Natural (PLN), um corpus pode ser definido como uma extensa coleção de textos ou transcrições de áudios, organizados de forma estruturada, que serve como base para o treinamento de IAs e outros sistemas de aprendizado de máquina. Esse corpus pode abranger uma diversidade de fontes, tais como notícias veiculadas em jornais, obras literárias, transmissões de rádio, podcasts, programas de TV, filmes e até mesmo postagens em redes sociais, como tweets. Cada corpus é único, sendo meticulosamente construído para atender a questões e objetivos específicos."]},{"cell_type":"markdown","metadata":{"id":"vZUhxXRe5y2t"},"source":["#### Contexto da Pesquisa"]},{"cell_type":"markdown","metadata":{"id":"tSHE3cIS54XR"},"source":["

No âmbito desta disciplina, o corpus utilizado fundamentou-se nos tweets publicados por candidatos à prefeito nas capitais brasileiras nas eleições de 2020. Em especial, nos tweets referentes às vacinas de Covid-19, assunto de extrema relevância no momento em que os pleitos municipais ocorreram naquele ano.\n","\n","

E por qual motivo este foi o corpus escolhido? Bom, vamos voltar um pouco.\n","\n","

Em 2020, o mundo enfrentava uma pandemia causada pelo novo coronavírus SARS-CoV-2. Apesar dos esforços empregados pela Organização Mundial da Saúde (OMS) e por outras entidades de saúde para lidar com a doença de forma unificada e coletiva, era inevitável que cada país fosse enfrentar o problema a seu modo, em acordo com o contexto local e recursos disponíveis. No Brasil, isso não foi diferente. \n","\n","

Com a transmissão comunitária do novo coranavírus declarada em 20 de março de 2020, cerca de 01 mês após o primeiro caso brasileiro confirmado, o Ministério da Saúde assumiu uma postura de coordenação diante dos gestores nacionais e determinou a adoção de medidas sanitárias que promovessem distanciamento social e o controle de aglomerações.\n","\n","

O então presidente da República, Jair Messias Bolsonaro (PL), na contramão do defendido por cientistas de todo o globo, pronunciou-se dias depois em rede nacional e defendeu que o novo coronavírus nada mais era do que uma \"gripezinha ou resfriadinho\". Com uma postura recorrentemente leviana, esta não seria a última vez em que o ex-presidente se manifestaria de forma imprudente diante da gravidade da emergência de saúde enfrentada.\n","\n","

Não demorou muito para que seus ataques se estendessem as vacinas contra a Covid-19, ainda em desenvolvimento naquela época. Determinado a fazer coro ao movimento antivacina e a agradar uma ala mais radical de seus apoiadores, as declarações polêmicas de Bolsonaro ajudaram a criar um ambiente polarizado, no qual as respostas a crise sanitária deixariam de se pautar na ciência e adotariam um tom de teor mais ideológico.\n","\n","

Governadores e prefeitos assumiram um papel de destaque em meio a omissão do Governo Federal. Os prefeitos, especificamente, estariam no centro dos holofotes no segundo semestre, em meio a realização das eleições municipais. Tal como se deu nas eleições de 2018, mais do que apenas escolher seus representantes locais, a população se viu dividida em meio a disputa entre diferentes alas ideológicas no que se referia as estratégias de enfrentamento do novo coronavírus.\n","\n","

É justamente o comportamento assumido pelas elites políticas locais nesse contexto o objeto de nosso interesse. Naquele momento, defender as vacinas e as campanhas de vacinação contra a Covid-19 não eram apenas uma questão de saúde pública, mas de posicionamento político-ideológico, especialmente em relação à Jair Bolsonaro. O consequente posicionamento assumido pelos candidatos durante a campanha, sobretudo, nas mídias sociais, bem como a própria escolha feita pelos eleitores no pleito é reveladora do quanto a maior autoridade do país contribuiu de diferentes maneiras para com a exacerbação do desastre humanitário nacional que, até o momento, ceifou 704 mil vidas. "]},{"cell_type":"markdown","metadata":{"id":"NGa9vy307-GP"},"source":["#### A Tarefa"]},{"cell_type":"markdown","metadata":{"id":"stlfm6RC8JLx"},"source":["

A partir do que foi apresentado nas seções acima e baseando-se nos conhecimentos adquiridos acerca de estruturas condicionais e de repetição, sua tarefa é acessar o Vaccine Codebook of Political Elites 2023 e, com base nas informações disponibilizadas, criar um classificador que diferencie os tweets que entrarão ou não no corpus da pesquisa.\n","\n","

Lembre-se que o processo de construção de uma base de dados não é imediato e, portanto, dificilmente isso se dará em apenas uma rodada. Dê especial atenção as etapas descritas no documento e simule como seria o código de classificação SE você já tivesse todos os dados consolidados em uma única base.\n","\n","

Seja criativo e tenha em mente que o código desenvolvido aqui será utilizado e aprimorado nas próximas aulas até que, por fim, testaremos seu funcionamento em uma base de dados real."]},{"cell_type":"markdown","metadata":{"id":"nTJbwXqeW4yo"},"source":["[**Link do Codebook**](https://github.com/PedroSchmalz/covid19-tweets-brazilian-mayoral-candidates/blob/main/Codebook.pdf)"]},{"cell_type":"code","execution_count":17,"metadata":{"id":"NGY-SQ62ASwU","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1692726682449,"user_tz":180,"elapsed":9509,"user":{"displayName":"Rebeca Carvalho","userId":"01975075342439777451"}},"outputId":"c8bd0099-e645-40ee-864d-645664e3970d"},"outputs":[{"output_type":"stream","name":"stdout","text":["Informe se o candidato foi 'Deferido' ou 'Indeferido': Deferido\n","\n","O candidato foi deferido pelo TSE.\n","\n","Digite 1 se o candidato possui conta no Twitter, 0 caso contrário: 1\n","\n","O candidato possui conta no Twitter.\n","\n","Digite 1 se o candidato publicou no Twitter em 2020, 0 caso contrário: 1\n","\n","O candidato publicou no Twitter em 2020.\n","\n","Digite 1 se o candidato publicou algum tweet contendo termos relacionados à vacina de Covid-19, 0 caso contrário: 1\n","\n","O candidato publicou tweets com termos relacionados à vacina de Covid-19.\n","Os tweets com esses termos entrarão no corpus da pesquisa!\n"]}],"source":["## Exemplo 01\n","\n","candidato_deferido = str(input(\"Informe se o candidato foi 'Deferido' ou 'Indeferido': \"))\n","\n","### Classificador\n","\n","if candidato_deferido == \"Deferido\":\n","\n"," print(\"\\nO candidato foi deferido pelo TSE.\")\n","\n"," possui_twitter = int(input(\"\\nDigite 1 se o candidato possui conta no Twitter, 0 caso contrário: \"))\n","\n"," if possui_twitter == 1:\n","\n"," print(\"\\nO candidato possui conta no Twitter.\")\n","\n"," publicou_2020 = int(input(\"\\nDigite 1 se o candidato publicou no Twitter em 2020, 0 caso contrário: \"))\n","\n"," if publicou_2020 == 1:\n","\n"," print(\"\\nO candidato publicou no Twitter em 2020.\")\n","\n"," relacionado_vacina = int(input(\"\\nDigite 1 se o candidato publicou algum tweet contendo termos relacionados à vacina de Covid-19, 0 caso contrário: \"))\n","\n"," if relacionado_vacina == 1:\n","\n"," print(\"\\nO candidato publicou tweets com termos relacionados à vacina de Covid-19.\")\n"," print(\"Os tweets com esses termos entrarão no corpus da pesquisa!\")\n","\n"," else:\n","\n"," print(\"\\nO candidato não publicou nenhum tweet com termos relacionados à vacina de Covid-19.\")\n"," print(\"Os tweets desse candidato não entrarão no corpus da pesquisa.\")\n","\n"," else:\n","\n"," print(\"\\nO candidato não publicou no Twitter em 2020.\")\n","\n"," else:\n","\n"," print(\"\\nO candidato não possui conta no Twitter.\")\n","\n","else:\n","\n"," print(\"\\nO candidato foi indeferido pelo TSE.\")"]},{"cell_type":"markdown","metadata":{"id":"qBTzXIRZ_skq"},"source":["# Conclusão"]},{"cell_type":"markdown","metadata":{"id":"Yf9RRB5rqMnN"},"source":["Nesta aula, exploramos uma variedade de conceitos essenciais em programação usando Python. Aprendemos sobre as operações em listas, uma das estruturas de dados mais fundamentais, que nos permite armazenar e manipular conjuntos de elementos de maneira eficiente. Descobrimos como adicionar, remover, acessar e modificar elementos em listas, permitindo-nos criar programas mais dinâmicos e interativos.\n","\n","Além disso, mergulhamos nas estruturas de repetição, como loops \"for\" e \"while\", que nos permitem automatizar tarefas repetitivas. Vimos como usar esses loops para percorrer sequências, realizar cálculos iterativos e executar blocos de código várias vezes. A combinação de loops com condicionais nos possibilita criar lógica complexa e tomar decisões com base em diferentes cenários, tornando nossos programas mais flexíveis e responsivos.\n","\n","Através dos exercícios práticos, tivemos a oportunidade de aplicar esses conceitos de maneira concreta. Manipulamos listas, criamos estruturas condicionais para tomar decisões e usamos loops para automatizar tarefas. Essas habilidades são essenciais para a construção de programas eficientes, legíveis e funcionais.\n","\n","Conforme continuamos nossa jornada na programação, lembramos que esses fundamentos formam a base para o desenvolvimento de projetos mais avançados e complexos. À medida que exploramos mais conceitos e técnicas, essas habilidades nos capacitarão a enfrentar desafios maiores e a criar soluções mais sofisticadas.\n","\n","Na próxima aula, discutiremos como criar nossas próprias funções em Python, os principais módulos e pacotes e teremos uma introdução ao numpy. O NumPy (Numerical Python) é uma biblioteca fundamental em Python para computação científica e análise de dados. Ele fornece suporte eficiente para arrays multidimensionais (matrizes) e funções matemáticas avançadas para realizar cálculos complexos de maneira eficiente. O NumPy é amplamente utilizado em áreas como análise de dados, aprendizado de máquina, simulações numéricas e processamento de imagens, devido à sua capacidade de realizar operações numéricas rápidas e otimizadas.\n"]}],"metadata":{"colab":{"toc_visible":true,"provenance":[]},"gpuClass":"standard","kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"}},"nbformat":4,"nbformat_minor":0}