fala pessoal aqui é o Fábio da bson Treinamentos e dou as boas-vindas a vocês ao curso completo de Python do zero ao avançado neste curso totalmente reformulado aqui na boson treinamentos nós vamos estudar Python desde as estruturas mais básicas desde o que é o Python O que são variáveis ou tipos de dados até estruturas mais avançadas e recursos como criação de classes manipulação de arquivos funções lambda e muito mais são em torno de 9 horas de curso que é bastante coisa e durante todo esse tempo a gente vai basicamente estudar Python mão na massa o
curso é inteiramente programação muitos exemplos resolvidos muito código pra gente criar estudar e digitar e portanto eu espero que esse curso seja bastante útil para vocês então sem mais espera Vamos lá gente vamos estudar Python começo me apresentando Então quem sou eu Fábio dos Reis trabalho na área de tecnologia já H 32 anos na da de gravação deste curso tanto com eletrônica quanto com Computação em geral e Ministro cursos de Tecnologia Desde janeiro de 2001 minha formação sou técnico em eletrônica também sou graduado em análise e desenvolvimento de sistemas e pós-graduado em análise de dados
e Big Data e atualmente curso uma pós em ciência de dados também tem várias certificações na área de tecnologia comptia Microsoft Apple cwp e outras tantas atualmente eu mantenho o blog da boson treinamento em tecnologia e também um outro blog mais pessoal que é o diário do naturalista e os canais do YouTube boson treinamentos em tecnologia e boson ciências e cultura trabalho também eventualmente como consultor fazendo desenvolvimento de sistemas principalmente sistemas para web trabalho com análise de dados e também com sistemas embarcados e ten os meus Hobbes diversos gosto muito de colecionar livros e gosto
de outras coisas mais agora que vocês já sabem quem sou eu vamos falar sobre o que é o Python bom o Paio tem uma linguagem de programação bastante fácil de aprender e bastante poderosa ela foi desenvolvida por guid Van rosson esse rapaz que aparece a do lado direito na tela quando ele trabalhava lá no centro de matemática e Ciência da Computação em Amsterdam lá na Holanda Países Baixos essa linguagem foi desenvolvida no final dos anos 80 Então não é uma linguagem nova Não surgiu ontem exatamente o pyon é derivado de outras linguagens como o módula
3 linguagem ccia mais mais a gool small Talk e outras tantas assim como linguagens de script como por exemplo linguagens do shelo e Unix bom Por que que o Python foi criado de acordo com o próprio Guido Van rosson a motivação original dele era a necessidade de ter uma linguagem de nível superior para um projeto chamado ameba que era um sistema operacional que estava sendo desenvolvido lá na Holanda e ele percebeu que o desenvolvimento de utilitários para administrar o sistema na linguagem C que era linguagem padrão demorava muito e tentar fazer esses utilitários utilizando na
linguagem do Shell o BN Shell não funcionava por vários motivos o ameba que é uma linguagem derivada do iix então havia necessidade de criar uma linguagem que estivesse entre o c e o Shell ou seja uma linguagem tão poderosa quanto a linguagem C ou próxima pelo menos mas que fosse um script de fácil escrita como as linguagens de Shell a linguagem Python foi portanto desenvolvida Originalmente para essa plataforma ameba o sistema operacional distribuído desenvolvido nos anos 90 por Andrew na universidade livre de Amsterdam bom e para que aprender Python Python tem uma série de características
que tornam interessante o seu aprendizado primeiramente ele é fácil de codificar e fácil de ler ele tem uma sintasse limpa desde que o programador escreva de acordo com as regras e as normas ele é software livre é código aberto você pode usar tranquilamente nos seus projetos inclusive projetos comerciais e tem uma biblioteca padrão bastante extenso ou seja ele tem um monte de recursos extras que você pode agregar a linguagem é uma linguagem interpretada ou seja não é compilada mas é portável portanto você consegue fazer o desenvolvimento em plataforma cruzado mesmo script em Python vai rodar
em qualquer tipo de máquina trata-se de uma linguagem multiparadigma Então ela pode ser programada como como código procedural orientado a objetos funcional ou tudo isso misturado isso É bem interessante e ela é extensível a gente consegue acrescentar extensões feitas em outras linguagens como linguagem C para aumentar a performance do Python que nem sempre é das melhores Python não é uma linguagem perfeita ela é uma linguagem muito boa mas tem os seus probleminhas ela é dinamicamente tipada usa indentação por padrão para delimitar os blocos e você vai ver isso ao longo do curso todo e tem
uma documentação muito abundante então é muito fácil encontrar informações sobre o Python ou sobre as bibliotecas do Python Quando você quiser aprender algum recurso novo e onde que a gente vai usar o Python ele tem um monte de aplicações aqui eu tenho uma pequena lista com algumas das principais aplicações do Python pode ser usado para desenvolvimento web mas não não é o uso primário dele é usado em machine learning Inteligência Artificial amplamente usado nessa nessas áreas e ciência de dados e análise de dados extremamente usado para essas áreas também visualização de dados que tá associado
dá para criar aplicações desktop com interface gráfica inclusive fazer web scraping eh automação de redes e outros processos dentro de um sistema operacional por exemplo pode ser usado para aplicações embarcadas e internet das coisas daí com técnicas específicas eh o Python acessa a banco de dados Então você consegue criar aplicações do tipo crude que vão acessar dados em bancos de dados dá para desenvolver jogos simples em Python existem bibliotecas para isso como por exemplo a biblioteca P game e a biblioteca arcade e muitas Outras aplicações nem sempre você vai querer usar o Python por exemplo
aplicações de tempo real aplicações de Missão crítica contoles de maquinários que que podem colocar vidas humanas em risco por exemplo a gente vai pensar duas vezes se uso o Python ou não porque o Python não é exatamente a linguagem mais rápida que existe mas é uma linguagem excelente E como eu disse ela pode ser estendida com com módulos de outras linguagens e quem usa o Python hoje que tem uma pequena lista também de empresas que usam Python em algum processo não significa que as empresas só usem Python mas ali dentro daquela empresa Existe algum tipo
de programa uma API algum software que usa a linguagem Python Google YouTube Netflix aasa Spotify enfim muitas Empresas Grandes usam Python aqui eu cit as empresas grandes Vou ser sincera é para causar Impacto mas claro qualquer empresa pode usar o Python empresa de médio PTE pequeno porte programadores individuais o Python é uma linguagem bastante democrática disponível para todo mundo Será que o py tem uma linguagem muito usada vamos ver aqui tem um ranking popular da internet que é o ranking tiob que é um índice que mostra popularidade das linguagens ou seja quais linguagens são mais
populares atualmente é um ranking que é iado mês a mês esse aqui é o mais recente novembro de 2023 esse ranking mostra as linguagens em porcentagem de uso e veja Python é a linguagem mais popular atualmente n e também era em novembro do ano passado então em um ano Python se Manteve na primeira posição seguida mais ou menos de perto pela linguagem C que é uma linguagem bastante antiga desenvolvida em 1969 e ainda em uso Caiu um pouquinho a porcentagem de uso do Python mas continua sendo a linguagem preferida de de acordo com este ranking
outras linguagens que aparecem também no ranking c+ mais Java csharp JavaScript pega P as linguagens mais comuns e que a gente espera que apareçam nesse tipo de ranking então o Python é bastante Popular por isso vale muito a pena você aprender essa linguagem o Python possui um Zen que é uma filosofia da linguagem tá publicada no site oficial do Python inclusive que traz as principais ideias por trás do desenvolvimento de software usando essa linguagem eu não vou ler tudo isso aqui evidentemente eu vou deixar o link para você acessar e você fazer a leitura tá
em português também o Zem Mas algumas coisas interessantes são do tipo bonito é melhor que feio ou seja um código elegante é melhor que um código mal feito explícito é melhor que implícito ou seja o código ele tem que dizer exatamente o que ele faz você bate o olho e sabe o que que tá acontecendo naquele módulo tentar adivinhar pensar o que aquele código faz outra coisa interessante se a implementação é difícil de explicar é uma má ideia ou seja você codificou algo e não consegue explicar direito como que foi codificado então provavelmente tá mal
feito agora se ela for fácil de explicar deve ser uma boa ideia porque ela é simples e fácil de entender esse é o zendo Python é legal você ler isso é legal porque você vai absorvendo essas ideias essa mentalidade que você realmente vai usar na hora de escrever os códigos o Zin no Python pode ser acessado neste endereço peps.org bar p0020 e lá você vai encontrar esse Zen em português também você você vai aprender a linguagem Python nesse curso e depois de aprender o Python você vai querer aprender bibliotecas e frameworks que são conjuntos de
software módulos de software que usam o Python exten a sua funcionalidade para nichos específicos da tecnologia então aqui eu tenho algumas bibliotecas como cpai pendas e numpy utilizadas para computação científica computação numérica e ciência de dados e também bibliotecas como por exemplo tensor Flow e queras muito usadas em inteligência artificial flask jangle para você criar AP ações web por exemplo ou P cute utilizada para você trabalhar com interfaces gráficas entre outras então a grande força do Python tá aqui além de você aprender a linguagem e fazer tudo que pode ser feito na linguagem você tem
as bibliotecas frameworks e muitos outros disponíveis que vão expandir a linguagem para que você possa trabalhar de forma adequada em determinados nichos de aplicação agora nenhuma dessas bibliotecas e frameworks tem valor algum Se você não souber o básico que é a linguagem Python em si que é o tema do nosso curso como é que a gente vai usar o Python Python pode ser usado de duas formas por meio de um Shell interativo no qual você digita comandos e o Python vai respondendo ali na hora como se fosse um prompt de comandos é um prompt de
comandos ou via script no qual vocês insere uma sequência de instruções num arquivo usando editor de textos e aí executa esses comandos todos basicamente você escreve um programa e executa esse programa na máquina nesse curso a gente vai trabalhar com ambos mas 95% do tempo é script a gente vai usar o Shell só para demonstrar alguns recursos específicos e os scripts eles são então códigos fonte escritos em Python com toda a codificação de uma aplicação geralmente um script por aplicação mas uma aplicação pode usar mais de um script e são arquivos que t a extensão
ppy indicando que eles têm código em Python e vão ser executados por um interpretador Python e pra gente poder interpretar Esses códigos escrever esses Esses códigos rodar esses programas O que que a gente precisa a gente precisa instalar a linguagem Python na máquina e instalar uma aplicação pra gente escrever o código um ide ou um editor de textos e é justamente isso que a gente vai fazer a partir da próxima aula essa aqui é a única parte do curso que tem slides a partir então do próximo vídeo a gente vai apenas e tão somente escrever
código é Hands Zone mão na massa e a gente vai começar a trabalhar com o Python no próximo vídeo como eu citei e instalando todas as ferramentas que serão necessárias pro aprendizado desta linguagem Então vamos lá gente para que a gente possa estudar a linguagem Python a gente precisa baixar e instalar o Python na nossa máquina e também baixar e instalar um editor de código um ide ou algum outro editor qualquer é o que a gente vai fazer nesta lição para baixar a linguagem Python é muito fácil você vai entrar no site python.org e aqui
logo de cara no menu de downloads você tem um botão para fazer o download da versão mais atual do Python pro seu sistema no caso eu vou instalar pro Windows e a versão mais atual na data de gravação desse vídeo é a 3.12.0 se você precisar baixar em outra plataforma aqui do lado você tem Windows macos ou other platforms no caso Linux e outras não importa a plataforma ou sistema operacional que você vai usar o curso vai ser o mesmo então instale baixe e instale no teu sistema eu já baixei esse Python eh baixar é
bem simples é só você dar um clique aqui e ele já vai fazer o download para você se você quiser ver outras opções de download também existe esse link para você ver a lista de downloads completa que vai te mostrar aqui embaixo um monte de opções certo mas a a opção que é mostrada direto aqui já vai ser suficiente para nós então esse aqui eu já baixei já vou mostrar como é que é a instalação aproveitando que eu tô com o navegador aberto eu também vou mostrar onde você baixa o editor de códigos que a
gente a gente vai usar que é o visual Studio code um editor bastante Popular bastante Fácil de usar o site para download do visualstudio Code é code.visualstudio.com e de novo já tem o botão logo de cara para você fazer o download da versão mais estável no caso para windows para outras plataformas é só clicar nesse linkzinho e você vai ter acesso também para as versões macos ou Linux clicando aqui na setinha você também tem acesso a essas versões para macos ou para Linux 64 bits tanto pacotes Deb quanto RPM é baixar e fazer a instalação
então eu já baixei também a versão para Windows pra gente não perder tempo aqui no vídeo e agora eu vou mostrar a instalação tanto do Python quanto do visual Studio code e a configuração do vs code para você usar o Python na minha pasta de downloads eu tenho os dois arquivos baixados e a gente vai instalar primeiro o Python depois a gente instala o vs code Primeiro vamos ter a linguagem na máquina então clique duplo na instalação do Python no arquivo que a gente acabou de baixar será aberto o instalador do Python bom o que
que eu vou fazer aqui eu vou marcar essa opção aqui embaixo Python PX to path para adicionar o arquivo executável do Python a variável de ambiente path assim a gente pode executar o Python de qualquer parte do sistema então só marcar essa caixinha E aí você pode opcionalmente usar privilégios de admin ao instalar se você tiver esses privilégios recomendo que você marque também essa caixinha para poder fazer a instalação e aí você vê que ativou o botãozinho install Now aqui em cima Então é só clicar em install Now agora aguardar enquanto o setup é inicializado
ele vai perguntar se você quer permitir que o aplicativo faça alterações no dispositivo Você vai clicar em sim e vai aguardar enquanto a instalação ocorre a instalação rolando vamos aguardar alguns instantes é rápido isso aqui não tem muito segredo ele vai instalar o Python vai instalar um vai instalar um editor Zinho chamado Idol que é bastante simplesinho a gente não vai usar esse editor durante o curso porque ele é muito simplório e o vs code tem muito mais ferramentas interessantes pra gente poder trabalhar com mais facilidade com a linguagem beleza setup foi finalizado com sucesso
a gente também tem essa opção aqui embaixo disable pa l limit para desabilitar eh o limite de comprimento do da variável path eh recomendo que você dê um clique aqui também clique em sim para fazer as alterações no dispositivo e beleza agora a gente finalizou a instalação do Python em si você pode clicar em Close e tá instalado o Python se a gente clicar no menu iniciar aqui do sistema já vai aparecer o Python aqui em cima no adicionados recentemente o Idol que é o editor que eu falei já tá aqui disponível eh os módulos
de documentação do Python e o Python em si que roda na linha de comandos beleza tá instalado vamos instalar agora o editor de textos o nosso editor de código que é o vs code então clique duplo para abrir o instalador Beleza abr o instalador primeira tela é o acordo de licença você vai clicar em eu aceito o acordo para ele ativar o botão próximo vai dar um clique no botão próximo na tela seguinte ele vai te mostrar onde o vs code vai ser instalado você pode dar uma olhada esse caminho aqui vai usar uns 357.mag
do programa vai chamar vs code clique em próximo e aqui a gente tem algumas opções para criar atalhos adicionais para esse nosso curso elas são desnecessárias não é não é tão importante que você as realize mas criar o atalho na área de trabalho pode facilitar para você abrir mais rapidinho a aplicação então eu vou marcar criar um atalho na área de trabalho O resto você deixa Como está E aí clica em próximo e depois em instalar e agora é só aguardar enquanto a instalação do visual Studio code ocorre a instalação do vs code também é
relativamente rápida Então a gente vai aguardar um pouquinho enquanto os arquivos são extraídos e a instalação é realizada logo após a instalação do vs code a gente vai abrir o editor e fazer algumas pequenas configurações instalar umas extensões pra gente poder começar aí efetivamente a programar e utilizar o Python pros nossos estudos beleza finalizou a instalação do vs code então o que que eu vou fazer agora eu vou desmarcar essa caixinha eu não vou iniciar ele agora nesse exato instante vou clicar em concluir vou fechar o Windows Explorer e vou fechar também o navegador que
eu não vou mais usar já tá instalado o que eu precisava isso tudo para mostrar que o que o atalho do vscode foi criado aqui na área de trabalho tá então agora quando eu quiser inicializar o vs code para começar a programar em Python é só clique duplo aqui que é o que eu vou fazer agora então clique duplo Vamos abrir o vs code Beleza o vs code abriu ele tá abrindo algumas Abas aqui ele pergunta sobre o tema aqui embaixo se eu quero manter esse tema Dark eu vou clicar em keep New theme para
manter esse tema Dark porque é mais agradável pros meus olhos você pode usar o tema que você quiser eu vou fechar essa aba release Notes que eu não preciso e tem essa aba de boas-vindas que aparece quando você abre o vs code o que eu vou fazer é desmarcar essa caixinha aqui embaixo show Welcome page on Startup para não ficar mostrando essa tela toda vez que você abri o vs code certo e aí eu vou fechar essa telinha de boas vindas aqui a gente tem opções para criar um novo arquivo abrir arquivo Abrir pasta etc
mas tudo isso a gente vai fazer por outros caminhos então fecho a tela de boas-vindas aqui a gente tem alguns atalhos também disponíveis a gente vai usar muito atalhos para trabalhar com essa aplicação bom o que eu vou fazer agora eu seguinte aqui do lado esquerdo a gente tem essa barra lateral na vertical com algumas opções Explorer search search control Run and debug e a última opção é extensions extensões eu vou clicar em extensions e a gente vai instalar algumas extensões que vão facilitar a programação com o Python as extensões são como plugins que adicionam
funcionalidades extras à aplicação e pro Python Existem algumas que são bem interessantes essa primeira que aparece aqui ó Python Intel sense Pens Microsoft essa a gente vai instalar Então você vai dar um clique nela ele vai mostrar aqui que é da Microsoft eh Intel sense Linkin debug etc só clicar em Install e aguardar um pouquinho Enquanto essa extensão é utilizada scia vai permitir que o código em Python ele seja identificado quando você tiver criando novos arquivos e aí que você tem Realce de sintasse por exemplo autocomplete esse tipo de coisa que Vai facilitar bastante a
nossa programação na linguagem Então vamos aguardar enquanto ele faz a instalação eh vou instalar depois mais algumas extensões instalar três extensões tá que vão ser bastante úteis para nós essa aqui obviamente é mais importante porque é extensão da para para o uso da própria linguagem que a extensão em si não é a linguagem se você não tiver instalado o Python antes não adianta instalar a extensão e achar que vai conseguir programar na linguagem porque não vai beleza a extensão foi instalada com sucesso já tá instalad aqui vamos instalar mais uma agora eu vou clicar aqui
em search extensions a gente vai escrever icons vamos aguardar um pouquinho aí eu quero essa daqui ó vs code tracinho icons então D um clique nela ícones para o vs code isso aqui é para adicionar iconeinstagram posso fechar essa aba de boas-vindas de novo e vamos instalar mais uma para finalizar a gente vai escrever code Runner a primeira aqui ó code Runner essa extensão aqui é legal porque ela ajuda você a executar os programas para poder testá-los posteriormente n ela funciona na verdade para várias linguagens de programação Python é uma delas então só clicar em
Install e aguardar enquanto a instalação da extensão ocorre Beleza já tá instalada foi bem rapidinha aqui a instalação dessa extensão ok que que a gente vai fazer aqui Thanks for installing vs code icons Ok pode fechar ativar vou clicar aqui embaixo em ativar e vou fechar essa extensão code Runner bom que a gente vai fazer agora vamos testar a gente pode fazer configurações nessas extensões tá é possível fazer configurações a gente vai fazer conforme a necessidade o que eu vou fazer para começar é aqui em cima clicar no Explorer e a gente vai abrir uma
pasta pros nossos projetos eu vou clicar em Open folder Abrir pasta você pode também eh ter instalado aí na sua máquina o vscode em português se for o caso tanto faz tá os atalhos são os mesmos aqui eu vou clicar em este computador disco local C e aqui eu vou criar uma pasta nova pasta que eu vou chamar de Python tracinho projetos Beleza então essa aqui vai ser a pasta dos nossos projetos clico em selecionar pasta você pode dar o nome que você quiser para essa pasta Tá mas é importante você ter uma pasta para
deixar os arquivos todos organizados quando você tiver trabalhando e criando suas aplicações então ele vai criar essa pastinha de projetos deve aparecer para você essa caixa de diálogo perguntando se você confia nos autores dos arquivos desta pasta Então você vai e clicar em yes sim com fio nos autores tá você Vai facilitar para executar os programas que a gente criar ali dentro e tá lá pastinha de projeto está criada mas tá vazia por enquanto então o que a gente vai fazer aqui é clicar neste ícone New file ou você vem aqui em cima em arquivo
e clica em new file ou control alt Windows n tem várias opções para você fazer isso tá vai criar um novo arquivo arquivo aqui a gente vai dar um nome pro arquivo Eu Vou Chamar esse arquivo de test ppy aqui é importante a gente colocar a extensão pon py porque essa é a extensão dos arquivos que o Python vai usar então teste.py dou enter ele vai perguntar onde eu quero salvar e já vem na pasta atual certo então teste.py não precisa mexer em mais nada aqui o tipo deixa como All files ele vai usar o
ponto py só clicar em Create file E aí ele cria o arquivo veja que ele já vem com o logotipo do Python do lado para isso que a gente instalou aquela extensão dos ícones code icons Beleza agora a gente pode começar a fazer os nossos testes que eu vou fazer aqui é o seguinte eu vou clicar de novo nesse Explorer aí ele fecha nessa aba lateral eu vou com o control mais aqui no teclado aumentar o tamanho da fonte vou minha janela também beleza e aqui a gente vai escrever um comandinho em Python pra gente
testar a instalação vamos ver se ela tá funcionando mesmo bem simples A gente vai escrever o seguinte print abre parêntese veja que ele já fecha para você o parêntese automaticamente e o print tá com uma cor aqui específica tá que o editor traz para nós deixando o cursor aqui dentro ele traz um monte de opções eh para você trabalhar em cima desse comando que ele te ajuda lembrando a você o que você pode fazer para que que serve aquele comando etc mas o que eu quero fazer aqui é bem simples aspas simples veja que ele
já põe ele abre e já fecha a ASP e deixa o cursor no meio e aqui eu vou escrever um Olá pessoal uma mensagem beleza Só isso tá veja que apareceu aqui em cima na AB uma bolinha branca tá vendo essa bolinha ela tá tá dizendo para nós que o arquivo foi alterado mas não foi salvo ainda então você pode ir lá em cima em arquivo file e salvar esse arquivo tá então clicou em save ele vai salvar Eu recomendo ir em arquivo descer Isso aqui um pouquinho e ativar o salvamento automático o autosave Quando
você clicar aqui como eu vou fazer Beleza agora toda a alteração que você fizer vai ser salva automaticamente beleza e agora a gente vai testar para testar a a gente tem esse botãozinho de play aqui do lado direito tá vendo tem uma setinha do lado dele também que permite rodar código ou rodar o arquivo Python E você também tem a opção de rodar o Python num terminal dedicado tá vamos utilizar a opção Run code primeiro então Run code e ele vai tentar rodar o Python e mostrar aqui embaixo no terminal a saída veja que veio
Olá pessoal veja que o a do Olá não apareceu ficou essa interrogação Zinha aqui beleza a gente vai arrumar isso aí já já então eu vou fechar aqui embaixo essa saída ó clico aqui do lado direito a gente também tem a opção de clicar aqui em cima na setinha e ir direto em Run Python file Então quando você clica em Run Python file o que vai acontecer que em vez de sair de de ele exibir o código no output que é a saída ele vai exibir num terminal e veja só no terminal vem direitinho o
código que a gente queria certo então tá aqui esse terminal interativo a gente pode na verdade clicar aqui embaixo e emitir comandos também a partir dele Certo eh a gente vai usar esse terminal em algumas aulas para fazer alguns testes da linguagem Python mas a maioria do curso vai ser aqui em cima usando os scripts a gente vai escrever os códigos completos para testá-lo aqui embaixo feito isso a gente pode fechar esse terminal aqui do lado e uma coisa que a gente pode fazer interessante é o seguinte a gente pode acessar de novo extensões procurar
essa extensão code Runner que a gente acabou de instalar tá vendo clicar nessa engrenagem aqui gerenciar e a gente vai em extension settings configurações da extensão e aqui do lado a gente vai procurar uma configuração dessa extensão A gente vai rodando a tela para baixo o que eu quero é essa opção aqui Run in terminal você vai marcar essa opção marcou a opção weather to Run code integrated terminal Pode fechar settings pode de novo clicar aqui ou arrastar para fechar esse painel e agora em vez de clicar aqui embaixo clicar em Run Python file eu
clico direto nesse Play e ele roda direto no terminal legal aí beleza rodou de novo no terminal aqui ele mostra ah a opção anterior a última vez que a gente rodou o programa e agora ele rodou de novo aqui embaixo tranquilo Se você quiser limpar o o terminal Fechar isso aqui a gente tem essa latinha de lixo aqui né Essa lixeirinha que mata o terminal e aqui do lado nos três pontinhos que pode não tá aparecendo assim porque depende do tamanho da tela que você tem a gente tem a opção Clear terminal Clear terminal vai
limpar o terminal e deixar ele aqui embaixo prontinho pra gente digitar outros comandos Então tá aí Nesta aula fizemos o download de instalação tanto da linguagem Python em si quanto de um editor de código fizemos as configurações necessárias e iniciais faremos outras posteriormente e testamos a instalação com um Olá pessoal executado no terminal instalamos anteriormente o vs code que é o editor de código que a gente vai usar neste curso mas na verdade você não é obrigado a usar o vs code você pode usar outros editores de código se assim o desejar e agora eu
vou recomendar algumas opções paraa edição de código em Python a primeira delas é o editor de códigos da jetbrains O pycharm que é na minha opinião o melhor editor de códigos para Python é um ideia super completo e você pode baixar esse ide no site da jetbrains jetbrains.com clicando em para desenvolvimento você vai ter eh acesso a todos os produtos da empresa mas o que interessa pra gente é o pycharm clicando em pycharm você tem acesso a página do download É claro que eu não vou baixar e instalar nesse vídeo estou apenas recomendando mas eu
vou mostrar onde é que você consegue obter eh o pycharm ele tem duas edições a professional completa para profissionais e que é paga e a community que é gratuita mas que ainda assim tem uma série enorme de recursos Então quando você clicar em baixar você será levado à página de download E aí o pycharm professional é o primeiro a ser mostrado mas logo abaixo pycharm community Edition É só baixar um arquivo executável Se você estiver no Windows E aí fazer a instalação normal é bem tranquilo é baseado em código aberto tá é open source aplicação
muito bem também tem versões para macos ou para Linux se assim você o preferir eu tenho ele instalado nesta máquina aqui que é uma outra máquina na verdade e a cara do P Charm é essa Veja uma cara de uma de um ideia bem completo mesmo tem até um código carregado aqui que na verdade é foi gravado para para foi usado paraa gravação de um vídeo que tá lá no canal do YouTube da BOL treinamentos é um codigo Zinho bem tranquilo que faz o cálculo de Pi usando um método de libes é um cálculo matemático
Não se preocupe com isso eh então aqui é a parte central onde você codifica e aqui do lado esquerdo você tem um painel para fazer o gerenciamento de de arquivos de módulos de ambientes virtuais todas essas coisas que a gente vai aprender aqui no curso né ao longo do das aulas para rodar o código é só a gente clicar nesse Play aqui em cima Run m e ele roda o código aqui embaixo quantos termos desej usar 20 termos para fazer o cálculo de IP ele vai dar esse valor de Pi aqui que tá na verdade
bem longe do valor correto precisa de mais termos Tá mas é só para demonstrar mesmo pycharm tem uma série de recursos e esse aqui é um ideia que eu recomendo bastante caso você não queira usar o vs code que é mais simples mas que também funciona perfeitamente Ambos são ótimos Pro nosso curso a questão do P que ele é um pouco pesado às vezes bastante pesado então dependente da dependendo da máquina que você tiver talvez não seja muito adequado usá-lo nesse caso uma outra opção é utilizar o próprio Idol se você baixou e instalou o
Python Você tem o Idol já instalado vou abri-lo tá aqui o Shell do Idol Aqui Você Pode emitir comandos de forma interativa a gente vai fazer isso algumas vezes ao longo do curso usando vs code que também tem esse recurso Mas você pode clicando em f New file criar um arquivo de script tá como esse daqui e aqui você coloca todo o seu código escreve o seu programa inteiro e manda rodar tá hamrun mod o idle não tem os recursos que um ide mais completo possui por isso eu não recomendo muito utilizá-lo a não ser
que você realmente não consiga rodar o vs code ou pycharm se for o caso tá mas de qualquer forma é um ide adequado para a maior parte da dos estudos de Python que a gente vai fazer porém os recursos adicionais dos outros ids tornam esses outros ids mais interessantes então o idle Tá aí uma outra opção interessante é usar o Júpiter o projeto Júpiter Júpiter notebook ou Júpiter Lab o site é jupiter.em interessante porque ela permite que você crie seu código de forma super modular Pedacinho por pedacinho separado faça os test separadamente e é muito
usada por exemplo por quem trabalha com ciência de dados clicando aqui em try você cai na página try Jupiter e dá para experimentar a aplicação no navegador tanto o notebook em si como Jupiter laab que é mais completo tem mais recursos se eu clicar em Jupiter laab ele vai carregar essa aplicação e veja que interessante temos um painel aqui do lado esquerdo com com alguns notebooks tem essa extensão ipynb Inclusive tem alguns arquivos aqui que eu já criei já usei em outros projetos e aqui no meio Onde a gente coloca o código veja que tem
um código de exemplo aqui dentro ó é um código Python legal importando bibliotecas eh trabalhando com gráficos plotando na tela etc e clicando no no botãozinho de play ele roda a célula selecionada e exibe o resultado aqui embaixo e você pode criar quantas células dessas você quiser para ir criando o seu programinha então é uma alternativa bem legal para quem quer estudar Python ou até mesmo trabalhar no dia a dia tá o Júpiter notebook eu uso bastante em vários vídeos do canal do YouTube também da boson treinamentos Porém para criar aplicações mais completas eu ainda
recomendo utilizar um editor de código mais completo como vs code ou pycharm de qualquer forma Júpiter notebook é muito bom também caso você queira e aqui eu tô rodando ele online mas ele pode ser instalado localmente na máquina e esta é a forma que eu recomendo caso você queira usar esse Júpiter certo é baixá-lo e fazer a instalação no computador então deixa eu voltar aqui pra home ele tem uma sãozinha aqui de install que vai permitir a você fazer a instalação bem tranquila usando PIP que é um gerenciador de pacotes do Python uma vez instalado
é só você rodar Jupiter Lab e ele abre direto no navegador estando local e isso pro Jupiter Lab pro notebook mesmo esquema Ah eu não sei o que que é o PIP você vai saber porque a gente vai falar sobre esse assunto mais paraa frente aqui no curso Então tá aí uma outra opção interessante pode ser usada tanto online quanto localmente agora vamos supor que por algum motivo você não possa instalar nada na sua máquina por exemplo você não tem permissão de instalação Ou você não está no seu computador tá na escola na empresa usando
um outro computador e tem um tempinho livre que é estudar que que você pode fazer você pode usar um ide online puramente online e aqui eu tenho três ids para recomendar O primeiro é o programs que é este ide aqui programs.com que na verdade é um site que que tem cursos de programação online eh Alguns são pagos outros gratuitos etc mas o que interessa para mim agora é descer essa tela descendo até chegar nos compiladores online e esse site tem compiladores online para várias linguagens tá aqui algumas delas Python HTML Java C c+ mais etc
clicando em start code in Python ele vai carregar esse compilador e aqui é bem simples desse lado esquerdo no main.py você escreve o seu código clic em Run e o código vai vai aparecer rodando aqui do lado direito vamos por exemplo aqui tem um print hello world se eu clicar em Run aparece o hello world aqui o código executado do lado de cá e caso você queira trabalhar com outras linguagens as outras linguagens estão listadas aqui também Então essa é uma outra alternativa não é tão poderosa quanto usar um ide instalado na sua máquina então
só recomendo usar o compilador online caso você realmente não não possa e instalar na sua máquina ou não posso usar a sua máquina que tem o ide instalado certo mas é um é uma ótima opção também para para você estudar sempre que for possível um outro compilador online que eu gosto muito é esse daqui é o online gdb mesmo esquema você escreve o código aqui e executa aparecendo aqui embaixo a gente consegue esconder essa telinha lateral e o legal dele é que você também pode selecionar várias linguagens distintas clicando aqui em select a gente tem
um monte delas CC mais mais Java Python 3 tem cotlin PHP Pascal até linguagens antigas ó Pascal cobol tem a assembly muito legal para várias linguagens então se eu clicar em Python 3 ele já mostra lá o famoso hello world E clicando aqui em cima em Run ou F9 ele roda o código e mostra aqui embaixo no console Então onlinegdb.com esse aqui é um que eu gosto bastante e costumo usar sempre em aulas quando eu não posso ter um Idea instalado direto na máquina e finalmente um que também uso às vezes é o online Python
online tracin python.com que é o mesmo esquema tem um código uma um editor de códigos aqui no meio dita o seu código clique em Run e o código roda aqui embaixo é ele tem um modo Dark aqui que eu gosto bastante mais fácil de enxergar então rodou o código aparece aqui embaixo nesse caso é um programinha que soma dois números então o primeiro número seis segundo número oito e o resultado 14 beleza Obviamente você apaga isso aqui coloca o código que você quiser ele também permite por exemplo que você abra um arquivo que está no
seu computador um ponp Y ou salve o arquivo atual então você pode digitar o seu código todo e salvar os outros editores online também tem essa funcionalidade Então tá aí e nessa aula eu recomendei algumas alternativas de ids para você poder estudar Python e seguir com o curso três delas ficam instaladas na sua máquina o próprio Idol que já é instalado quando você instala a linguagem Python o pycharm da jetbrains que é excelente e o Jupiter ou projeto Júpiter ou Júpiter notebook essas versões todas que você pode baixar e instalar na sua máquina mas que
também tem uma versão online e os compiladores puramente online o programs o online gdb e o online Python escolha sua ferramenta ou instale e use mais de uma delas para ver com a qual com a qual você vai ter mais facilidade e use durante as aulas do nosso curso e a partir da próxima aula a gente começa efetivamente a codificar em Python Vamos falar agora sobre variáveis em Python um assunto bastante importante para isso eu vou começar criando um novo arquivo clico aqui no Explorer a gente já tem esse arquivo teste. de um outro vídeo
de uma outra aula eu vou clicar em new file e vou batizar esse arquivo de variáveis ppy enter tá aqui nosso arquivo aí eu posso ocultar o Explorer e a gente vai trabalhar com esse arquinho aqui para estudar um pouquinho as variáveis que que é uma variável uma variável é um local reservado na memória computador que é usado enar de forma temporária os dados que o programa utiliza e a criação de variáveis em Python é bastante simples basta para isso a gente dar um nome pra variável por exemplo nome e atribuir um valor a ela
para atribuir um valor a variável a gente utiliza este operador o sinal de igual a gente chama isso aqui de operador de atribuição e na frente do operador a gente põe o valor que a gente quer atribuir por exemplo se eu quiser atribuir o meu nome para essa variável basta abrir a aspas prefiro sempre as aspas simples nesse caso e colocar o texto que a gente quer no caso a gente vai usar as aspas porque o meu nome é uma string de caracteres ele de um tipo de dados específico que tá relacionado a textos eu
já vou falar já já um pouquinho mais sobre tipos de dados mas a criação de variáveis é simplesmente isso a variável nome e o valor que você quer atribuir as variáveis sempre vão ter um nome que é sua identificação o tipo de dado associado que a gente não precisa especificar o Python ele vai inferir esse tipo a partir do dado que você tá passando para variável um tamanho que é o quanto ela ocupa na memória isso vai depender do tipo de dado e o valor em si que é o valor específico que você grava nesta
variável a gente consegue visualizar o que tá dentro de uma variável utilizando um comando chamado print o print é um comando de saída de dados ele vai imprimir na tela um texto uma informação ou conteúdo de uma variável para isso a gente vai usar anotação de parênteses porque o print é uma função e toda função vai ter os parênteses e dentro dos parênteses você coloca os argumentos que essa função vai usar no caso print vai usar o argumento nome que é a variável que eu acabei de criar então o nome é uma variável uma área
na memória do computador reservada que contém Esta palavra aqui guardada quando eu dou um print nome deve aparecer na saída o conteúdo dessa variável eu vou rodar o programa clicar aqui em Run Python e aqui no terminal vai aparecer olha só o meu nome ecoado aqui embaixo perfeito então é o conteúdo desta variável aqui veja que Eu batizei minha variável como nome você pode dar o nome que você quiser para as variáveis seguindo algumas Convenções a variável pode ter um ou mais caracteres no seu nome o primeiro caracter sempre precisa ser uma letra como aqui
por exemplo o nome é a letra n não pode ter espaços em em branco se você precisar criar o nome de uma variável que use mais de uma palavra por exemplo se fosse nome usuário você criaria assim nome und usuário Essa é a convenção mais indicada para Python esse underscore ele é aceito Desde que não seja o primeiro caracter então aqui a gente tem um nome composto que é bem fácil de ler e aí Claro se eu quiser imprimir na tela eu preciso mudar aqui também pro nome usuário pode ter números por exemplo poderia ser
nome usuário dois tranquilo o que não pode é começar com um número sempre começando com uma letra olha só o o vscode até já reclama para mim coloca aqui embaixo esse sublinhado vermelho e quando você põe o mouse em cima ele te traz uma mensagem dizendo que existe alguma coisa errada tá então eu vou apagar esse dois e volto a funcionar direitinho e os nomes são case e sensitiv isso é importante eles diferenciam maiúsculas de minúsculas então se eu qu criar nome usuário com esse n maiúsculo aqui por exemplo esse nome usuário dentro do print
é outra coisa se eu tentar rodar o programa agora ele vai dar um erro tá vendo olha o erro aqui embaixo ele deu um erro do tipo name error mas paraa frente a gente vai ter uma aula específica só para analisar erros mas é bom você já saber desde já quando ocorre um erro que significa isso aqui embaixo significa erro de nome o nome nome usuário com n minúsculo não está definido ele até dá uma dica pra gente você quis dizer nome usuário com n maiúsculo porque ele sabe que tem uma variável com esse nome
aqui em cima certo ele te diz também onde é a linha onde tá o erro linha dois no caso e qual é a instrução e e a parte da instrução que tá errada no caso é o nome usuário então aqui deveria ser com n maiúsculo Mas a gente sempre recomenda que as variáveis comecem com letra minúscula também seguindo essas Convenções o seu código fica mais fácil de ler mais fácil de debugar de testar de corrigir erros e menos propenso inclusive aos erros certo então recomendo que siga esse tipo de Convenções vamos fazer algumas outras declarações
de variáveis deixa eu fechar aqui o terminal para liberar espaço agora eu vou apagar isso aqui tudo e vou declarar outras variáveis vamos supor que eu queira declarar uma uma variável chamada média então só escrever o nome média e atribuir um valor vamos supor que a média seja zero Então você põe zero aqui veja que nesse caso eu não usei as aspas por quê Porque agora é uma variável do tipo numérico a gente já vai ver como é que funciona esse negócio dos tipos outra coisa que eu posso fazer em Python que é muito legal
é o seguinte se eu precisar declarar várias variáveis diferentes mas que tem o mesmo conteúdo Inicial Eu posso fazer isso numa linha só por exemplo eu posso dizer que N1 igual a n2 que igual a N3 que é igual a n4 que é igual a um valor qualquer vamos supor 0.0 veja que eu usei o ponto aqui esse ponto indica que essa variável é de um outro tipo também numérico Mas diferente da primeira média e aqui são quatro variáveis que eu tô declarando tô criando quatro áreas na memórias separadas elas não têm nada a ver
uma com umas com as outras Porém todas elas começam com o mesmo tipo de dado e veja quando você coloca o mouse aqui em cima aparece ali variável N3 float float é o nome do tipo de dado tá pra Média a gente tem outro tipo de dado aqui quando você coloca em cima ele aparece como literal zero a gente já vai entender o que é isso e vamos eu também posso declarar variáveis de tipos diferentes nome idade igual E aí Fábio vírgula 47 Olha só nesse outro formato eu estou criando duas variáveis nome e idade
só que como elas não têm o mesmo valor armazenado em vez de usar o igual eu uso vírgula então a primeira variável nome vai receber o primeiro valor que eu passar depois do sinal de igual a segunda variável que é idade vai receber o segundo valor que eu passo depois do do sinal de igual depois da vírgula então a atribuição é feita dessa forma primeiro valor primeira variável segundo valor segunda variável como elas não têm o mesmo valor são coisas bem diferentes uma é texto e outra é número então a gente separa por vírgula aqui
em cima eu usei o sinal de igual porque Todas têm o mesmo valor todas são literalmente iguais certo então aqui a gente tem alguns tipos de dados diferentes tipo inteiro tipo float ou real tipo string ou caracter o que que são esses esses tipos de dados os tipos de dados são classificações dos dados que a gente armazena nas variáveis e utiliza dentro dos programas os dados são distintos entre si você intuitivamente sabe que um número é diferente de um texto e que o número inteiro é diferente de um número quebrado fracionário e existem outros tipos
de dados além desses existe por exemplo o tipo lógico ou boleano que trata de valores verdadeiro e falso apenas no Python a gente não precisa determinar inicialmente o tipo de dado da variável ele adivinha o tipo de dado de acordo com o valor que você passou então o Python sabe que isso é um número inteiro que isso aqui é um float ou número real quebrado que isso aqui é uma string ou um uma cadeia de caracteres certo mas a gente consegue visualizar os tipos de dados utilizando funções específicas e para ex existe uma função que
é a função Type então eu vou escrever aqui embaixo função Type veja que eu usei esse símbolo de hashtag e o meu texto ficou todo verde o que que é esse símbolo de hashtag isso aqui é um comentário então o comentário significa que tudo que eu escrever nessa linha até o final dela vai ser ignorado na hora de executar o programa ele tá aqui só para documentar o programa e eu recomendo fortemente que você use comentários no seu código para documentar as funções que você vai criando a sua lógica para mais tarde quando você for
trabalhar de novo nesse mesmo programa você lembrar o por fez determinada coisa de um jeito e não de outro e para outras pessoas que vão usar o seu código também entenderem o que você fez então comentários em Python sempre com hashtag bom vamos ver os tipos agora eu quero imprimir na tela o tipo dessa variável média como é que eu faço print aí eu posso abrir o parêntese e a gente vai fazer o seguinte eu vou chamar a função Type eu escrevo Type abro os próprios parênteses do Type e aqui dentro eu coloco o argumento
dele que é o nome da da minha variável média print Type média eu vou fazer a mesma coisa para para outras variáveis Então olha que coisa interessante eu estou aqui nessa linha do print Type média ó o cursor tá piscando no teclado Eu vou apertar Alt shift e seta para baixo Olha só o vs code ele copia a instrução igualzinha para baixo não preciso digitar ela inteira de novo aí eu vou simplesmente mudar o nome dessa variável de média para n2 por exemplo e de novo eu faço a mesma coisa Alt shift seta para baixo
e aí eu vou colocar minha variável nome e agora a gente vai executar o programa para ver o que aparece então rodando aqui embaixo Olha só classe int classe float e classe STR os tipos em Python são chamados de classes tá então ele tá dizendo que a primeira variável aqui a média é do tipo int ou seja números inteiros a segunda n2 é do tipo float números de ponto flutuante em Ciência da Computação a gente usa esse termo significa números que TM casas depois da vírgula fracion e a terceira variável nome é do tipo STR
string certo muito bem deixa eu limpar aqui o meu terminal Clear terminal vou fechar o terminal e v criar mais uma varzinha aqui na linha 4 que vou chamar de estado no caso estado de status e vou atribuir essa variável valor true escr true com T maiúsculo veja que ele ficou em azul aqui no vs code e não usei aspas porque isso aqui não é uma string isso aqui é um estado Lógico é um valor Lógico que tá sendo atribuído a essa variável Estado então essa variável estado ela tem um conteúdo que é do tipo
lógico ou boleano e a palavra boleano é uma homenagem a George Bull que foi o criador da álgebra binária no século XIX um matemático muito importante pra história da Computação bom aqui embaixo nesse print eu vou dar de novo um Alt shift seta para baixo e vou colocar a variável estado agora eu vou executar de novo o programa pra gente ver o que aparece isso olha só classe Bull legal então esse aqui é o tipo de dado do tipo lógico Bull Ele só pode assumir dois valores ou true que é verdadeiro ou false que é
falso tranquilos Existem muitos outros tipos em Python existem tipos compostos que a gente vai estudar bem lá na frente mas os mais importantes para nós agora são esses daqui que são os tipos primitivos que são usados Praticamente em todos os programas que você vai trabalhar inclusive para construir os tipos compostos Eu Só Quero mostrar mais um tipo Zinho deixa eu puxar isso aqui para baixo um pouco existe um outro tipo que é interessante que é esse aqui olha só em vez de criar uma variável eu vou digitar direto um print Type o Type não necessariamente
você vai usar só dentro do print eu tô colocando o Type no print que é para imprimir na tela o retorno dessa função mas eu poderia usar em outros contextos como a gente vai ver e agora dentro do Type eu vou escrever assim ó 1 + 2 j olha que coisa estranha 1 + 2 j que é isso que eu fiz é um cálculo é uma soma Por que que o J ficou em azul a gente já vai descobrir isso executando o programa então vou rodar e ele me trouxe esse resultado aqui embaixo Olha só
classe float string Boo Complex Então esse aqui é um outro tipo de dado específico que o Python também suporta que é o tipo de dado número complexo isso aqui já é matemática bem mais avançada Esse é um tipo de dado que é utilizado em cálculos por exemplo de circuitos elétricos eu cursei técnica eletrônica nos anos 90 e utilizava esse tipo complexo para fazer alguns tipos de cálculos e É legal saber que existe isso porque Isso demonstra que o Python ele tem suporte H vários tipos distintos de dados e permite fazer cálculos pras mais variadas áreas
do conhecimento por exemplo PR área de engenharia py é muito útil por conta disto uma outra forma da gente saber o tipo de um de um de um dado de uma variável é utilizando uma outra função que eu vou colocar aqui que é a função instance is instance em portugês seria é Instância Instância significa é uma de uma determinada classe de um determinado tipo então a gente também CONSEG utilizar essa função essa função é assim ela retorna um valor verdadeiro se a variável ou dado for de um determinado tipo que você vai especificar e retorna
falso se não for então por exemplo eu vou criar aqui uma variável que eu vou chamar de a e vou atribuir o valor 10 e vou criar a variável b e vou atribuir o valor sol entre aspas porque é um Tex lemb textos que são Strings sempre entre aspas e agora vou dar um print e vou chamar is instance para essa variável a por exemplo só que aí vou perguntar instance do qu vírgula e vou escrever aqui na frente int Então como é que funciona isso aqui veja que aparece essa lista sempre aparecendo essa lista
Comte palavra-chave esse recurso é um recurso que o vs C de trás que se chama Intel sence que vai te ajudar a decidir qual é o termo a palavra que você precisa usar na sequência caso você não lembre tá inclusive aqui ele traz o int logo de cara então como é que funciona esse is instance ele vai pegar essa variável a e vai verificar se ela é do tipo que você passou aqui na frente tipo int se for retorna true se não for retorna false tá então vou fazer o seguinte eu vou comentar isso aqui
tudo que tá em cima para não atrapalhar a gente eu vou selecionar isso aqui tudo então agora eu vou pressionar aqui no teclado control k c e ele comenta para mim todas as linhas de uma vez veja que legal ass não vai me atrapalhar no que eu vou fazer aqui embaixo e agora eu vou rodar a aplicação e ele vai mostrar a palavra true significa verdadeiro a é do tipo int é do tipo inteiro vamos ver se B que tem a palavra sol é do tipo string eu vou mudar aqui para B e aqui eu
vou colocar STR de string abreviação do tipo eu vou rodar de novo ele vai trazer para mim de novo que é true porque B é uma string agora vamos supor se eu quisesse testar se a variável a é do tipo real número quebrado ou seja se ela é do tipo float só escrever o tipo aqui ó float a pergunta é Ah é da classe float rodando ele me traz a palavra false não não é do tipo float e uma outra coisa que essa função is instance também nos permite fazer é verificar se uma variável ou
um valor é de um tipo dentro de um conjunto de tipos por exemplo eu quero saber se a é um número tanto faz se é in ou se é float mas é um número então eu posso colocar dentro de parênteses aqui uma lista de tipos posso escrever int vírgula float então a pergunta aqui é a variável a ela é do tipo int ou do tipo float sim ou não veja que ele tá reclamando alguma coisa comigo ã parênteses não foi fechado sim parêntese aqui tem que ser fechado no final beleza eu abri um parêntese aqui
fechei abri outro aqui do is instance e abri o parêntese do print e fechei então vs code também te avisa disso os editores no geral fazem isso bom voltando então tô perguntando se essa variável a é de um desses dois tipos aqui então executando ele vai dizer que true sim é um número se é inteiro se é de ponto flutuante aí é outra história você faz um outro teste uso Type etc Então essa é uma outra função interessante que é legal você conhecer porque ela pode e vai acabar sendo útil em determinados contextos mas para
cima por exemplo para fazer para você fazer validação de dados do usuário e finalmente uma coisa que a gente consegue fazer com variáveis é isso aqui eu posso ter uma variável vamos supor a variável a igual a 40 vej eu usei mesma variável que eu tinha usado antes o que acontece aqui é que essa variável vai ter o seu valor reatribuir então a variável ela passa a valer 40 agora em vez de valer 10 nesse ponto ela vale 10 aqui ela vai valer 40 eu posso criar uma variável c e dizer que essa variável Vale
3 e eu posso criar uma variável R de resultado e dizer que essa variável vale a x c Olha que interessante o asterisco significa vezes em Python aí eu posso dar um print nesse R vamos ver o que que vai aparecer aqui na tela deixa eu comentar isso aqui tudo lembre-se para comentar cont contrl KC se você quiser descomentar contrl cuu aí ele desca legal então contrl KC Comentou assim Senor vai executar esse pedacinho de baixo aqui então vou rodar 120 40 x 3 é 120 veja que interessante a gente consegue atribuir uma variável o
conteúdo de outras variáveis Então você atribui ou valores direto ou o conteúdo de outras variáveis inclusive o conteúdo de cálculos ou de outros processamentos realizados então isso aqui é realizado primeiro e o O Retorno disso foi gravado na variável R que a gente exibiu na tela Então as variáveis são bastante flexíveis nesse sentido com relação ao cálculo aqui não se preocupe nós vamos ter a nossa aula de operadores aritméticos e cálculos matemáticos posteriormente Então é isso nesse vídeo falamos sobre var varáveis em Python falamos sobre tipos de dados em Python e vimos como usar as
funções Type e instance para para fazer verificação de tipos e como usar a var a função print para exibir valores na tela vamos falar nesta aula sobre operadores aritméticos em Python os operadores aritméticos são usados para fazer os cálculos aritméticos básicos soma subtração multiplicação divisão etc pra gente começar trabalhando com os operadores arit eu vou fazer o seguinte eu vou abrir um terminal contrl shift aspa control shift aspa vai abrir direto o terminal eu vou esconder esse Explorer vou puxar o terminal para cima e vou digitar aqui alguns cominhos bom no terminal a gente consegue
e digitar comandos de forma interativa isso aqui chama-se rapple ou EV print loop laço de leitura execução e impressão que basicamente é uma forma de você se comunicar com a máquina via um terminal ou um console ou uma linha de comandos como a gente tá fazendo aqui eu emito o comando ele executa um processamento e responde de volta para mim então eu limpei aqui o terminal e agora a gente vai fazer o seguinte a gente vai entrar no terminal rapple interativo do Python para isso É só escrever P enter E aí ele entra no Python
3.12 no caso eu sei que tô no Python por causa desse prompt aqui esses três símbolos de maior se você tiver no Linux ou no macos Python 3 tudo junto deve dar conta do recado e agora eu vou criar uma variável a e vou atribuir a ela um valor 10 enter tá criada a variável aqui pra gente ecoar o valor de uma variável eu não preciso necessariamente usar o comando print eu posso usar mas simplesmente se escrever o nome da variável D enter ele mostra o conteúdo dela isso Vai facilitar pros nossos testes Vou criar
outra variável b e vou atribuir o valor 5 Beleza agora a gente vai fazer alguns cálculos aritméticos usando os operadores Quais são os operadores os operadores são esses que você tá vendo aí na tela sinal de mais é a soma o sinal de menos subtração o asterisco é a multiplicação a divisão real é uma barra a divisão inteira Duas Barras o módulo que é o resto da divisão inteira O que sobra quando você faz uma divisão inteira é o símbolo de porcentagem e a potenciação dois asteriscos juntos vamos fazer uns testes por exemplo eu quero
saber quanto é a + B 15 então o conteúdo de a somado com B dá 15 bem fácil a - b 5 10 - 5 dá 5 se eu fizer o contrário b - a aí ele vai me retornar o número negativo - 5 divisão a dividido por B 2.0 veja que uma barra é divisão real o resultado olha só é um número real o número fracionário o float que a gente já estudou anteriormente tem esse ponto zero na frente a gente pode fazer a divisão inteira a barra barra B aí ele vai dizer que
é 2 só a parte inte interessa nesse caso qual a diferença vamos supor que fizesse o contrário B div por a dá meio mas se você fizer B barra barra a que é divisão inteira ele dá zero porque a parte fracionária ele Ignora isso pode ser útil em determinados contextos para criação de algoritmos específicos quando a gente só precisa levar em consideração a parte inteira algoritmos de conversão numérica por exemplo Clear terminal agora vou prosseguir aqui de cima o módulo vamos supor que eu tenha a porcentagem B nesse caso ele me diz que é zero
Por que é zero porque o resto da divisão de a por B é 0 10 di 5 dá 2 e sobra nada Vamos criar uma outra variável c = 11 agora vamos fazer C módulo B que significa basicamente 11 div 5 1 Por que 1 porque 11 di por 5 dá 2 e sobra 1 2 x 5 10 para 11 1 esse para 11 1 é o que é retornado utilizando esta operação que a gente chama de operação de módulo em programação não tem nada a ver com o módulo matemático que é o valor absoluto
que o Python também calcula a gente vai ver isso na aula de funções matemáticas essa aqui é uma operação que é bastante usada é muito importante você entender e lembrar do funcionamento do do módulo fazer outro exemplo de módulo vamos supor que eu fizesse agora eh a módulo c aí ele vai dar 10 por quê Porque 10 di por 11 dá 0 não dá para dividir e sobram os 10 legal então esse aqui é sempre o resto da divisão depois de descontada a parte inteira E se eu quiser fazer uma potenciação vamos supor a elevado
a b ou melhor a elevado a quadrado então a asterisco asterisco 2 10 elevado qu é 100 beleza poderia fazer a elevado B 10 elevado qu potência isso dá 100000 no caso também posso criar operações mais complexas por exemplo eu poderia fazer a + b x c quanto que dá isso aqui hum pausa o vídeo um pouquinho pensa um pouquinho qual vai ser o resultado desse cálculo a vale 10 B 5 e C 11 Quanto que vai dar essa conta bom essa conta vai dar 65 por quê b x c que é 5 x 11
dá 55 + 10 65 veja que ele executa primeiro B X c e depois soma com a se o cálculo fosse realizado na ordem em que as instruções aparecem aqui nós teríamos A mais B que dá 15 x 11 que dá 165 ou seja um número bem diferente do que apareceu aqui e por que acontece isso porque existe uma ordem de precedência correta matemática pros operadores aritméticos a ordem de precedência é a seguinte como você está vendo na tela primeiro que tá em dentro de par parênteses depois a potenciação depois multiplicação ou divisão o que
aparecer primeiro depois soma ou subtração o que aparec primeiro da esquerda paraa direita certo Então essa é a ordem de precedência se você precisar mudar isso por exemplo vamos supor que nesse cálculo eu precisasse porque a minha fórmula exige que a seja somado com b primeiro e depois multiplicado por C nesse caso você coloca o A mais B dentro de parênteses E aí multiplica o resultado por C nesse caso 165 como a gente viu anteriormente legal então esses aí são os operadores e expressões aritméticas Vamos fazer um exemplinho bem simples Agora vou fechar o terminal
vou no Explorer vou criar um novo arquivo que eu vou chamar de operadores aritméticos PP você pode dar o nome que você quiser beleza fechar aqui o Explorer aí vou fazer o seguinte eu vou criar três variáveis e vou zerar as três variáveis logo de cara então x = y = z = 0 criei três variáveis do tipo inteiro e as três têm o mesmo valor por isso eu criei desse jeito que você já aprendeu aí eu vou atribuir um valor diferente para x eu vou dizer que x Vale vamos supor 7 e vou dizer
que Y Vale vamos supor 9 E aí eu quero saber qual que é a soma desses dois números então variável Z é igual a x + y e aí eu posso mandar imprimir na tela alguma coisa do tipo a [Música] soma dos dois valores é dou um espaço saio dessa aspa da minha string Isso aqui é uma mensagem vírgula e a variável Z certo então o que eu tô fazendo aqui na verdade é é construindo uma mensagem de saída vai aparecer na tela a soma dos dois valores e e na frente o valor da variável
Z tem n formas da gente fazer isso essa aqui nem é a mais adequada mas é a mais simples para este momento depois eu vou mostrar em uma outra aula como é que a gente faz formatação de Strings para exibição correta na saída mas isso aqui para nós serve por enquanto então eu vou vou simplesmente executar rodar o programa terminar um pouquinho para baixo aqui tá lá a soma dos dois valores é 16 7 + 9 16 perfeito então fizemos um programinha utilizando o operador aritmético aí qualquer e uma outra coisa que eu posso fazer
também que é interessante é em vez de fornecer os valores diretamente aqui eu posso pedir pro usuário de digit os valores como é que a gente faz isso a gente faz isso usando uma função chamada input então eu posso fazer um input aqui e dentro dos parênteses do input eu posso inclusive colocar uma mensagem do tipo digite um número e depois embaixo eu posso usar o input de novo e coloco outra mensagem digite outro número Digite o número e pressione enter no caso tá beleza só que do jeito que tá aqui o input não deve
provavelmente funcionar por quê o input ele sempre retorna O que o usuário digitou na forma do tipo string que é texto e tipo texto não é adequado paraa gente fazer cálculos Então o que a gente vai fazer é converter o valor que foi retornado que é uma string para um tipo de número por exemplo o tipo inteiro a gente consegue fazend fazer isso utilizando um esquema cham chamado Casting e o Casting nada mais é que uma conversão de tipos de dados para isso basta a gente colocar o input dentro de uma instrução int Então veja
todo esse input aqui vai retornar o que o usuário digitou na tela o valor que ele quis quando ele pressiona enter e esse valor vai ser convertido para inteiro antes de ser guardado na variável x certo mesma coisa eu vou fazer para Y veja que quando eu coloco o cursor do mouse em cima do X o vs code já diz que a variável X é inteira mas quando eu coloco no Y ele diz que é STR string porque o input retorna string então também preciso converter esse segundo valor int fecho no final Beleza agora o
usuário é que vai dar os números que vão ser somados vou executar de novo esse programa aqui embaixo ele pede digite um número olha só digite um número vou digitar por exemplo 12 enter digite outro número vou digitar por exemplo 3 a soma dos valores é 15 perfeito aqui a gente pode dar uma melhoradinha nessa formatação colocando um espaço Depois desses dois pontos aqui eu esqueci dos dois pontos Coloco os dois pontos espaço e aqui embaixo nesse print eu posso tirar esse espaço porque o espaço já é colocado automaticamente quando eu uso esse tipo de
formatação E aí se eu rodar de novo ele vai pedir de novo aqui embaixo outro número 40 mais 50 e a soma dos dois valores é 90 perfeito Então nesse vídeo vimos Como trabalhar com os operadores aritméticos básicos em Python um outro grupo de operadores muito importante em Python são os operadores de comparação na tela você tá vendo uma tabela com estes operadores e esses operadores são usados como o nome diz para fazer comparações entre valores e o resultado dessas as comparações é sempre um valor lógico verdadeiro ou falso true ou false que a gente
vai utilizar posteriormente para avaliar o que fazer na aplicação dependendo do resultado das operações Então os operadores que vocês estão vendo são igual igual que a operação de igualdade para você comparar dois valores e ver se eles são iguais entre si se forem iguais retorna true Se não forem retorna false o inverso disso que é o operador de diferença exclamação igual verifica se dois valores são diferentes entre si se forem diferentes retorna true se não retorna false e os operadores de maior e menor para verificar se o primeiro número é maior que o segundo ou
se o primeiro número é menor que o segundo e os operadores maior ou igual a e menor ou igual a que respectivamente verificam se o primeiro número é maior Ou pelo menos igual ao segundo ou se o primeiro número é menor Ou pelo menos igual ao segundo vamos ver algumas expressões de comparação aqui eu vou abrir o terminal cont control X sh aspa e aqui a gente vai fazer o seguinte eu vou entrar no terminal interativo do Python lembra py enter e a gente tá no terminal interativo eu vou subir isso aqui para usar a
tela toda e aqui a gente vai começar criando uma variável a e a essa variável eu vou atribuir o valor 5 então a = 5 depois eu vou criar a variável b e vou atribuir também o valor 5 o mesmo valor para ambas e agora a gente faz as comparações primeira pergunta que eu vou fazer a é igual a 5 veja que nesse caso eu utilizo igual igual para fazer a comparação é diferente de um sinal de igual só um sinal de igual sozinho significa atribuição estou guardando um valor na variável dois sinais de igual
é uma comparação estou perguntando se na variável O valor é igual aquele que está na frente então quando eu dou enter ele retorna true a É iG 5 e Se eu perguntasse se B É iG a 6 aí ele retorna false comoe se esperar porque B vale 5 no caso também posso perguntar se uma variável tem o mesmo conteúdo de outra se é igual Se A é igual a B como a é 5 e B é 5 então O resultado é true e posso perguntar se a é diferente de B nesse caso os números são
iguais então que que isso aqui vai retornar false muito bem deixa eu limpar aqui o terminal para não ficar muito bagunçado ali embaixo e a gente também pode fazer comparações do tipo B é diferente de a + 1 veja que aqui eu tenho uma expressão aritmética e uma expressão de comparação então o que que ele vai fazer aqui primeiramente vai ser feito o cálculo aritmético que tá do lado direito e Esse resultado é que vai ser comparado com a variável b então na ordem de precedência das operações primeiro a operação aritmética vai ser realizada e
depois a comparação então se a + 1 é 6 B é diferente de 6 true com certeza é também posso fazer assim a x 2 é maior ou igual a B Deixa eu tirar esse espaço daqui então o que será que vai retornar isso aqui enter true Ele tá dizendo que a x 2 é maior ou igual a B lembre-se na hora de preceder primeiramente o cálculo matemático vai ser realizado independente do lado que ele esteja e a x 2 5 x 2 é 10 10 é maior ou igual a 5 por isso ele retornou
true para essa expressão bem Tranquilo então as expressões de comparação sempre Retornam true ou false vamos fazer agora um exemplinho de operadores de comparação eu vou eu vou fechar o terminal e vou criar um novo arquivo aqui que eu vou chamar de operador operadores de comparação pon py comparação Faltou só um C aqui beleza enter tá aí nosso arquivo bom aqui eu vou fazer o seguinte eu vou criar três variáveis x y e z e eu vou inicializou seja são variáveis do tipo lógico do tipo boleano e vou criar duas variáveis numéricas também N1 e
n2 que eu inicializo com zero você não precisa criar usando essa anotação pode fazer a criação de de uma variável por linha se assim eu desejar aí eu vou pedir pro usuário digitar números então print digite um número veja que eu posso fazer dessa forma usando print e depois capturar em N1 o resultado da digitação do usuário com a função input aqui a gente vai lembrar que a gente precisa com conver o tipo para número tá veja que ele tá dizendo aqui que N1 é string mas na verdade é um número então a gente coloca
o input dentro do int de no certo essa é uma forma de fazer outra forma de fazer seria isso aqui n2 recebe já coloc o int de cara já coloc o input e dentro do input a gente vai colocar a mensagem digite outro número certo então você tem as duas opções ou você coloca a mensagem num print separado e depois captura com input ou já coloca a mensagem direto no input tá faz a conversão e atribui a variável tirar esse espaço daqui legal você faz o que for mais conveniente para você lógico que digitar uma
linha só de comandos é mais simples do que digitar duas bom agora a gente faz as comparações primeira comparação na variável x eu vou colocar o resultado dessa N1 é igual a n2 E aí eu vou escrever na tela print são iguais os valores são iguais sim ou não x E aí entre aspas simples eu vou colocar esse caracter aqui olha o que eu fiz aqui de interessante tô perguntando são iguais coloco na frente o x que é essa variável do tipo lógico veja que foi inicializada com false mas vai aparecer true ou false dependendo
do resultado desta comparação e depois eu concat Nei olha essa palavrinha concatenar o Barra n tá o concatenar é juntar Strings ou pedaços de textos e mensagens para formar uma mensagem maior Existem algumas formas de fazer isso tá essa é uma delas o Barra n isso aqui é um caracter especial é um caracter que a gente chama de caracter de escape e ele simboliza uma quebra de linha significa que aqui eu dei um enter então isso aqui equivale a dar um enter né via código então se você precisar fazer uma separação maior entre as linhas
você pode colocar um barra n que equivale a você dar enter e ir pra linha de baixo certo tem que tá entre aspas porque é um caracter continua sendo string Então já vou executar agora o código pra gente ver o que aparece então rodando digite um número se beleza dig outro número n enter são iguais falso não são iguais beleza muito bem vamos fazer uma outra comparação agora agora eu vou usar a variável Z por exemplo tanto faz a ordem igual e vou perguntar se o N1 é maior que o n2 Então dentro de Z
vai ter um valor lógico E aí eu vou usar o print de novo para dizer o seguinte ó N1 vírgula é maior que e vírgula n2 vírgula E aí eu boto uma interrogação vou dar um espacinho aqui vírgula E aí o conteúdo da variável Z vírgula de novo e dentro de aspas o Barra n vai ficar complicadinho né Mas é simples vai aparecer o que tá dentro da variável N1 que é o número que o usuário digitou na sequência a mensagem é maior que aí preciso colocar espaço antes e um depois o conteúdo da variável
n2 depois a interrogação o conteúdo da variável Z que é o resultado da nossa expressão e uma quebra de linha tá então quando eu executar isso aqui ele pede para digitar um número eu vou digitar por exemplo o próximo número vamos supor que eu digite oito de novo enter são iguais true o é maior que 8 falso não o não é maior do que o certo é falso beleza matar esse terminal aqui fechar tudo isto e vamos fazer mais um exemplinho para finalizar então Y igual N1 é diferente de n2 bom O resultado vai depender
dos números digitados e aí a gente vai usar um print e aqui a gente vai fazer o seguinte são diferentes em vez de vírgula eu vou colocar um sinal de mais e vou colocar a variável Y estee símbolo de mais é um operador de concatenação a gente vai usar muito isso aqui para criar e mensagens para serem exibidas por usuário em vez de usar a vírgula que é uma alternativa mas o sinal de concatenação ele é melhor como a gente vai ver posteriormente só que antes da gente executar o programa é o seguinte y o
que que é ele é boleano ele é um valor lógico e a concatenação com este símbolo só pode se dar com uso de Strings tá então a vírgula ela permite que você consiga concatenar valores de tipos diferentes com o sinal de mais você tem que ter tudo na forma de string então a gente pode converter essa variável Y que é bu como você tá vendo aí para string utilizando STR e a gente coloca isso aqui dentro de parênteses Então stry vai converter o que tá escrito aqui para string Então agora eu vou executar o programa
Beleza pediu para eu digitar um número vou digitar por exemplo 12 enter digitar o 13 um outro número enter E aí são iguais fals 12 é maior que 13 falso são diferentes true Olha lá verdade são diferentes sim entre si deixa eu puxar o terminal para baixo aqui então primeiro primeiro resultado dessa expressão aqui são iguais falso 12 e 13 não são iguais o 12 é maior que 13 falso falso tá dentro de zer e depois são diferentes e aí a variável Y que tem N1 diferente de n2 vai dizer que true sim porque 12
é diferente de 13 Portanto o valor que aparece é true aqui embaixo tranquilos Então tá aí vimos os operadores de comparação em Python e de quebra já vimos também o operador Zinho clássico de concatenação que a gente também vai explorar em outras aulas Ainda temos outros operadores para estudar e eu faremos nos próximos vídeos uma outra categoria de operadores muito importante em linguagens de programação variadas são os operadores lógicos pros quais o Python também tem suporte Então nós vamos falar sobre os operadores lógicos agora os operadores lógicos também são chamados de operadores booleanos porque eles
implementam a lógica booleana e eles trabalham com valores true e false então com o operador Lógico você consegue avaliar o resultado de dois operandos true e false e retornar um outro valor true ou false verdadeiro ou falso os principais operadores lógicos são os operadores and que significa e or que significa ou e not que é o não que é o operador de negação pra gente entender o que faz cada um dos operadores lógicos a gente tem esse tipo de tabela como você tá vendo na tela que é a tabela verdade a tabela verdade ela especifica
todos os resultados possíveis paraas condições de entrada ou seja pros operandos de entrada que vão sofrer a ação do operador lógico então no caso do operador end Você tá vendo que quando as condições de entrada ou os operandos os valores de entrada são falsos O resultado é falso quando a condição a é verdadeira e a condição B é falsa o resultado também é falso e invertendo essa condição continua sendo falso a gente só vai ter o resultado verdadeiro ou true quando ambas as condições de entrada forem true verdadeiras Então essa é a característica do operador
lógico and seu resultado será apenas true Se todas as condições de entrada forem true já o operador lógico or funciona de uma forma mais ou menos inversa você pode notar pela tabela verdade que tá aparecendo na tela que o resultado é sempre true desde que uma das condições de entrada seja seja true se ambas as condições forem false Aí sim o resultado será falso Então resultado sempre true pro or se uma condição ou outra condição true resultado true Se todas false resultado false e o operador lógico not é o operador mais simplesinho porque ele é
um operador unário ele recebe apenas um valor na entrada e inverte esse valor então ele transforma falso em verdadeiro e verdadeiro em falso de false para true de True para false então operador unário Vamos trabalhar com alguns exemplos para entender melhor então eu vou criar um novo arquivo aqui no vs code eu vou chamar de operadores lógicos operadores lógicos ppy beleza e vamos fazer o seguinte vamos supor que eu tenha tenha que escrever um algoritmo Zinho para avaliar dois dados de uma pessoa a idade e a altura da pessoa e aí eu vou usar esses
esses valores para determinar se ela pode por exemplo participar de uma de um de um evento esportivo né E a gente tem e algumas limitações a pessoa ela tem que ter mais do que 18 anos para participar desse evento e tem que ter mais de 1,70 m de altura Então como é que a gente faz isso bom vamos supor que a idade que a pessoa informou seja 25 anos e a altura que ela informou seja 1,75 que é minha altura tá veja que 1.75 usa ponto e não vírgula aqui beleza então como é que a
gente faz para avaliar se a pessoa vai poder participar ou não do evento eu vou ter uma variável resultado que vai guardar o resultado esse resultado vai ser true ou false esse true ou false vai vir da análise desses dados Então a gente vai fazer a pergunta a idade da pessoa é maior ou igual a 18 Isso é uma pergunta eu tô usando aqui o operador de comparação para isso isso aqui você já sabe que retorna O valor boleano true ou false eu vou colocar isso aqui entre parênteses para ficar mais organizado o código e
aí eu vou perguntar se a altura dela é maior ou igual a 1,70 certo também vou colocar entre parênteses isso aqui então são as duas condições agora pra pessoa poder participar ela tem que atender a ambas as condições tanto a idade tem que ser maior ou igual a 18 quanto a altura tem que ser maior ou igual a 70 Então nesse caso para atender a ambas a gente usa o operador and você escreve and aqui no meio então isso and isso Se isso for verdade isso for verdade resultado será verdade se um deles for falso
resultado será falso e a pessoa não pode participar do evento Então a gente vai criar uma mensagem agora que é uma pergunta pode participar do evento E aí eu vou concatenar o resultado convertido para string você já sabe como fazer essa conversão usando Casting e aí é só escrever na tela o resultado print msg conteúdo da variável msg Então vamos executar isso aqui para ver o que que vai acontecer rodando subir um pouquinho terminal pode participar do evento true sim pode participar porque a idade está acima de 18 e a altura acima de 1,70 que
acontece se eu mudar um desses parâmetros vamos supor aparece uma pessoa aqui com 15 anos querendo participar deste evento eu vou rodar pode participar do evento false por quê Porque agora este primeiro ramo retornou falso e paraa operação lógica end se um dos Ramos for falso o resultado será falso muito bem vamos fazer agora um exemplo de or vou comentar isso aqui tudo beleza Tudo comentado e agora a gente vai criar um programinha pro or vamos supor que eu tenha agora vou colocar um comentário aqui e programa de disparo de alarme eu tenho um alarme
na minha casa conectado a sensores em uma porta e uma janela então eu vou criar uma variável para aguardar o status da porta e o status dela será por enquanto f de fechado e a janela vai ter o status de fechado também eu vou simbolizar isso pela letra F poderia ser qualquer letra e aí o que o meu programa vai fazer o seguinte se a porta ou a janela se uma das duas estiver aberta o alarme será disparado tá então o meu alarme que vai ser a variável que vai guardar essa informação vai receber o
status de porta igual aberta então eu vou estabelecer que a letra A simboliza porta aberta então se a porta for igual a a isso retorna verdadeiro e a mesma coisa pra janela janela igual a só que agora é o seguinte se uma delas Abrir já é para disparar ou seja alarme já tem que ir para true Então se esse for verdadeiro ou esse for verdadeiro disparo o alarme veja que o ow já apareceu no próprio raciocínio do código então basta escrever aqui no meio or que é o operador lógico E aí montar uma mensagenzinha mensagem
igual alarme disparado E aí concatenou com o nosso alarme beleza e aí só escrever na tela mensagem prend msg certo então se uma delas estiver ah aberta vai disparar o alar vamos executar o código aqui e ver o que acontece alarme disparado false não tá disparado por porque Ambas estão fechadas vendo agora vamos supor que um meliante apareceu em casa e conseguiu abrir uma porta nesse momento o alarme disparo foi para true porque um dos Ramos ficou se abrir os dois obviamente continua disparado e for s a janela fechada continua disparado porque essa característica do
operador lógico or certo muito bem vamos limpar o terminal então tá aí operador or vamos comentar isso aqui tudo também cont control KC e agora a gente vai criar um exemplinho final pro operador not vamos supor se eu quea que eu quero fazer uma compra e para fazer uma compra eu preciso ter dinheiro né então eu vou criar uma variável chamada dinheiro e essa variável vai começar com o valor lógico aqui em vez de uma de uma letrinha uma palavra eu vou colocar direto false tem dinheiro false não tem dinheiro aí eu vou criar uma
mensagem msg igual tem dinheiro PR compra E aí vou concatenar com o resultado que vai ser a própria variável tem dinheiro legal só que aqui a gente converte para string também não podemos esquecer disto beleza e aí exibimos na tela a mensagem msg bom vamos rodar uma vez para ver o que acontece rodando tem dinheiro falso então não dá para fazer a compra agora vamos supor vamos supor que recebi um um pix na H ali alguém fez um pix momentaneamente para mim dinheiro caiu na conta nesse momento que que vai acontecer eu vou dizer que
a minha variável tem dinheiro agora ela equivale a not tem dinheiro Olha que interessante eu estou pegando o valor de tem dinheiro colocando de volta na própria variável mas eu vou negar agora o estado lógico not tem dinheiro Então o que acontece agora é que agora eu tenho dinheiro ó true comecei com falsa cheguei com a carteira vazia recebi um pix inverteu o meu estado Lógico agora eu tenho dinheiro sim então o que o operador not faz é isso ele inverte o estado Lógico o que vai ser bastante útil dependendo do do esquema de lógica
que você tá aplicando no seu algoritmo no seu programinha Às vezes você precisa fazer essa inversão para ter um resultado mais plausível ou mais adequado paraa situação Então nesse caso cheguei sem dinheiro agora eu tenho dinheiro poderia ter sido o contrário eu tinha dinheiro no início ó true E aí fi roubado ou perdi o dinheiro nesse caso tenho dinheiro não tenho mais perdi ou gastei tá então o not ele inverte o estado lógico Beleza então esses daqui são os operadores lógicos mais comuns and or e not em Python também presentes em outras linguagens de programação
Existem várias combinações que a gente pode fazer com operadores lógicos inclusive existem alguns outros operadores mais complexos que a gente vai ver mais paraa frente por enquanto Esses são suficientes pra gente poder logo logo estudar os condicionais um dos assuntos mais importantes em programação agora vamos falar sobre os desvios condicionais em Python um desvio condicional é uma instrução que permite o programa tomar uma decisão do que fazer na sequência baseado em uma condição pré-escola expressão if e pra gente entender como é que funciona vamos criar uma arquivo novo que eu vou batizar de condicionais pon
py e aqui a gente vai trabalhar com os vários tipos de condicionais disponíveis existem na verdade três grandes tipos de condicionais o condicional ele pode ser simples composto ou encadeado ou ainda aninhado aí na verdade a gente pode ter vários tipos de combinações mas essas daqui são as principais a gente vai trabalhar com todas elas na sequência para entender como é que funciona o condicional simples a gente vai olhar eh um exemplo que tá simbolizado aqui na tela por este fluxograma este fluxograma simboliza o fluxo de um programa que permite calcular uma média de notas
de um aluno e se essa média final tiver um valor maior ou igual a sete o aluno Está aprovado então você vê que temos um losango aí no meio escrito média maior igual a se na forma de uma pergunta e dois ramos saindo dele o ramo T de True e o ramo f de false se for true ele tá aprovado se for falso o programa prossegue sem fazer nada então o desvio condicionar vai servir para tratar este tipo de operação a operação na qual eu preciso saber o que fazer na sequência e isso depende do
resultado de um processamento anterior então vamos implementar esse em código para entender esse condicional simples eu vou começar criando variáveis para as notas eu vou criar a variável nota 1 nota do e ambas serão zeradas é importante a gente atribuir um valor para zerar essas duas notas no início porque a princípio não tem notas e a média que eu vou colocar separadamente aqui só para para organizar o código também zerada eu vou pedir pro usuário digitar as notas então eu vou utilizar essa anotação N1 igual float input E aí o usurio digita a nota Digite
a primeira nota legal lemb que a gente precisa converter para float porque o valor da nota é float é um número fracionário olha só tem o pontinho com as casas decimais e o input sempre retorna Strings vou fazer a mesma coisa n2 n2 também flo input e a Digite a nota beleza com as duas notas capturadas é só calcular a média Então como é que a gente vai calcular a média vou colocar um comentário calcular a média no caso média aritmética das notas a média é igual a soma dos valores dividido pela quantidade de valores
Então a gente vai somar N1 + n2 E isso tem que estar entre parênteses porque eu quero primeiro somar e depois dividir por 2 lembre-se da ordem de precedência dos operadores se você não colocar os parênteses o Python vai primeiro dividir n2 por 2 e depois somar com N1 que vai dar um valor totalmente diferente e agora a gente vem com o condicional o condicional é a palavra if então if que significa c em português se a média for maior ou igual a 7ete então a gente escreve isso média maior ou igual a 7 nesse
caso não seria Necessário colocar os parênteses Mas eu sempre Coloco os parênteses para deixar o código mais organizado mais padronizado e porque às vezes expressões complexas vão precisar dos parênteses tá Então essa é uma pergunta se a média for maior ou igual a 7 o que que vai acontecer o aluno estará aprovado e agora aqui na frente preste muita atenção eu vou colocar dois pontos dois pontos e esse é um caracter para delimitação de bloco ele que vai dizer o que que vai estar dentro de if dou enter E aí Note que o cursor ele
foi pra linha de baixo mas ele não foi pro comecinho da linha ele ficou mais ou menos aqui embaixo da letra m ou seja existe uma identação aqui o que que é isso identação é um deslocamento do cursor de um local um pouquinho mais adiante que vai dizer pro Python que o que tiver escrito aqui o comando que eu colocar aqui dentro faz parte desse if e só vai ser executado se essa expressão aqui média maior ou igual a 7 retornar verdadeiro Então se isso aqui retornar verdadeiro o que eu colocar aqui dentro vai ser
executado eu quero por exemplo que apareça print e resultado aprovado quero esta mensagem aqui na tela certo se eu dou enter veja que o cursor permanece aqui entado o editor de texto vscode detecta isso e já faz a identação pra gente Então o que eu colocar aqui dentro nesta linha de indentação só vai ser executado se e quando isso aqui for verdadeiro quando isso aqui for falso o código que tiver dentro deste bloco não será mais e executado eu posso por exemplo colocar outra mensagem aqui print Parabéns beleza seide ent ele prossegue ali com essa
identação quando eu quiser sair desse if Basta dar um backspace no teclado backspace o cursor retornou para fora da indentação aí eu posso dar um enter nesse caso para separar as instruções e colocar uma outra instrução um print por exemplo para mostrar na tela Qual é a média do cidadão então eu vou escrever sua média é E aí eu vou utilizar uma anotação um pouquinho diferente para exibir a média eu vou colocar essas duas Chaves ponto Format e a variável média aqui dentro essa é uma outra forma da gente exibir resultados na tela combinando Strings
com conteúdo de variáveis aqui no caso Estou formatando o conteúdo da variável que é do tipo float e esse conteúdo vai aparecer aqui ó dentro dessas Chaves essa é uma outra forma a gente vai ter uma aula de pois específica só para estudar fundo esses formatos de de exibição do print tá se você quiser simplesmente comar penal usando o sinal de mais como a gente viu anteriormente Funciona igual tá bom o importante aqui é saber o seguinte essas duas instruções pertencem ao bloco if elas só vão ser executadas se a média for maior ou igual
a 7 essa última instrução aqui ela tá fora do IF ela tá fora da indentação Então ela tá fora desse bloco ela vai ser executada independente do resultado da Média certo então vamos rodar o programa para entender isso aqui na prática Digite a primeira nota vamos supor que a primeira nota do cidadão foi oito Digite a segunda nota na segunda prova ele tirou sete resultado aprovado Parabéns sua média é 7,5 Beleza então o que aconteceu aqui como a média e 7,5 é maior que 7 isso aqui retorna true verdadeiro e esses dois comandos aqui são
executados as duas instruções e essa instrução que tá fora também é executada Beleza deixa eu limpar o terminal e vou rodar outra vez o programa Digite a primeira nota vamos supor agora que o aluno não foi tão bem a primeira prova ele tirou c e na segunda ele tirou 5,5 sua média é 5.25 veja que essa instrução apareceu porque ela tá fora do IF mas o bloco de dentro do IF não apareceu ou seja não apareceu nada escrito porque ele não tá aprovado então não Tá previsto no programa fazer nada além disso certo então é
assim que funciona um condicional simples se isso aqui retornar verdadeiro o nosso teste Lógico você vai chamar isso aqui de teste lógico então o bloco aqui dentro vai ser executado certo agora e se eu quisesse exibir uma mensagem aqui pro pro nosso aluno Dizendo para ele olha você não foi aprovado caso a média dele seja baixa bom nesse caso eu tenho duas opções ou eu crio outro if separado desse só para verificar se a média dele ficou abaixo de sete você pode tentar fazer isso aí como exemplo ou eu uso uma abordagem mais correta que
é trabalhar com o desvio condicional composto nesse caso dá uma olhada nesse fluxograma aqui a gente tem o teste lógico e aí Olha o que acontece se o teste retornar true eu vou ter um bloco de instruções Caso seja verdadeiro se retornar false eu vou ter um outro bloco de instruções separado para executar Então agora eu consigo tratar os casos de retorno true e false usando condicional composto no caso desse nosso programinha ficaria assim se a média for maior ou igual a 7 verdadeiro então aparece a mensagem aprovado se for false reprovado Então temos uma
outra mensagem para ser exibida como é que a gente faz isso na prática a gente faz isso assim continuando aqui desse if Eu dei um enter aqui depois desse print eu vou sair dessa identação backspace mas não vou pular nenhuma linha o que eu vou fazer é escrever uma nova palavra chave que é a palavra else else significa senão em português então senão se a média for maior igual 7 tá aprovado senão dois pontos enter agora eu coloco uma outra mensagem ou um outro comando qualquer por exemplo print aluno reprovado Beleza então agora o que
vai acontecer se isso aqui retornar verdadeiro esse bloco continua sendo executado se isso retornar falso o que vai ser executado é este bloco aqui de baixo o que tá no else para isso funcionar corretamente você não deve pular linhas né da última instrução do IF pro ELS e o else não pode estar aqui dentro do IF ele tá fora mas ele pertence a mesma instrução instrução começa aqui e termina aqui isso é um bloco condicional composto e a gente pode testar isso deixa eu limpar o terminal e rodar então vamos supor que o aluno tirou
nove e 10 tá aprovado certo então resultado aprovado Parabéns média 95 tá agora vamos supor que ele tirou uma nota baixa primeira nota foi 6 e a segunda foi 2,5 aluno reprovado veja que agora o que tá no bloco else é que foi executada essa instrução e a média continua aparecendo porque ela tá fora da instrução do condicional ifiel então assim é que funciona um condicional composto permite que a gente tenha blocos de separados tanto pro pro retorno true do nosso teste lógico quanto pro retorno false do nosso teste Lógico agora e se eu tivesse
mais uma condição por exemplo o aluno pode eventualmente estar de recuperação não reprovado direto vamos supor que o aluno ele é aprovado com média maior ou igual 7 reprovado com média menor que C Mas se a média ficar entre c e 7 ele tem uma chance de fazer uma recuperação Nesse caso a gente tem um um terceiro valor para avaliar e aí você vai lembrar que o if só avalia dois valores é verdadeiro ou falso se eu tiver um terceiro valor eu preciso de um outro if para fazer essa avaliação nesse caso a gente vai
usar o chamado condicional encadeado como é que ele funciona vamos olhar o fluxograma para esse exemplo nesse exemplo se a média for maior ou igual a 7 true tá aprovado se não for em vez de simplesmente escrever reprovado na tela eu faço outro teste Aí eu pergunto tá não é maior ou igual a 7 mas é maior ou igual a 5 pelo menos se for true ele tá de recuperação porque a média é maior ig a 5 mas não é maior do que 7 porque isso já foi testado anteriormente já retornou falso então ele tá
de recuperação caso a média não seja maior ou igual a 5 significa que com certeza é menor que C Então nesse caso ele está definitivamente reprovado isso a gente chama de condicional encadeado veja que os dois losangos são Na verdade dois testes lógicos que a a gente vai fazer então vamos adaptar esse nosso programa para trabalhar com com essa condição como é que funciona isso deixa eu limpar o terminal e fechar beleza pra gente enxergar o código todinho o que a gente vai fazer é o seguinte entre esse if e esse else eu vou dar
um enter aqui vou tirar a indentação E aí eu vou escrever uma outra palavra-chave diferente que é a palavra elif que que é elif else if em outras linguagem de programação inclusive é else if exatamente que você escreve mas aqui você vai escrever elif o elif permite que você faça um segundo teste lógico e no caso O teste vai ser a média é maior ou igual a 5 sim ou não dois pontos de novo enter veja que agora temos indentação tá essa indentação indic o comando que você colocar aqui vai ser executado dentro do bloco
elif Ou seja quando a média for for maior ou igual a 5 mas não maior ou igual a 7 e aí a gente pode colocar a nossa instrução print eh você está de recuperação beleza essa é a mensagem que vai aparecer tá então se esse primeiro teste for verdadeiro aprovou se for falso será feito um segundo teste se o segundo teste for verdadeiro tá de recuperação se o segundo também for falso aí não tá reprovado em definitivo não tem o que fazer certo e a média vai aparecer na tela independente do que ocorra aqui dentro
então o elif é o nível intermediário onde você vai ter esse segundo esse teste lógico alternativo Você pode ter Quantos elips você precisar um embaixo do outro desde que eles fiquem alinhadinhos veja que o vs code até nos ajuda colocando uma linha vertical para indicar o alinhamento das instruções certo e o que tiver indentado ou seja deslocado paraa direita tá dentro daquele bloco Então vamos testar testando Digite a primeira nota vamos supor que foi 8 e 7 nesse caso ele tá aprovado beleza rodar outra vez agora a primeira nota do cidadão foi 3 e 4
tá reprovado média 3,5 caiu no ELS lá embaixo agora para finalizar a a primeira nota foi se e a segunda foi C você está de recuperação porque a média é 5,5 então pegou o elif média maior ou igual a 5 você está de recuperação aí você pode perguntar calma aí mas a média do cara for 9 também é maior ou igual a 5 não vai aparecer você está de recuperação não porque o primeiro teste lógico já vai pegar aqui 9 é maior ou ig a 7 e vai printar na tela vai escrever na tela o
resultado aprovado E aí acabou né o próximo elif não será avaliado Então essa estrutura é um comando só começa aqui em cima e termina ali embaixo certo então o primeiro deles que retornar true matou a instrução então Não tem perigo disso acontecer beleza vimos então Nesta aula como trabalhar com os condicionais em Python tanto simples composto como encadeado quando queremos exibir os resultados de um processamento na tela a gente usa funções específicas como a função print que vamos estudar agora para isso vamos criar um novo arquivo que eu vou chamar de print ppy e aí
a a gente vai estudar Esta função Isa aqui é uma função interna do Python de modo que a gente não precisa importar nenhuma biblioteca para poder usar Qual que é a sintasse da função print sintasse como é que a gente escreve a função sintasse significa Qual é a forma correta de escrever algo é print dentro do dos parênteses a gente lista os objetos que são os textos as variáveis que contém os textos e argumentos exem alguns argumentos que a gente pode passar para modificar a forma como o print coloca os dados na tela então vejamos
alguns exemplos disso aqui Bom primeiramente uma uma exibição básica de mensagem na tela vamos supor que eu tenha uma variável mensagem que tem um um texto qualquer por exemplo função print coloquei esse próprio texto Dentro da variável aí eu quero escrever na tela o que tá aqui dentro só usar um print mensagem beleza Além disso eu também posso imprimir diretamente um literal de string usando print para isso eu escrevo print e coloco o texto que eu quero aqui dentro entre aspas pode ser aspas simples ou aspas duplas ambos serão aceitos aula de Python você não
pode misturá-las Então olha só imprimindo o que tá numa variável e imprimindo um texto direto vamos executar aí a gente vai ver aqui no terminal que temos as duas frases aqui embaixo função print e aula de Python bem tranquilo tá bom que mais que a gente pode fazer vamos apagar aqui a gente pode usar argumentos posicionais que a gente já usou algumas vezes aqui no curso então por exemplo vamos supor que ten uma variável nome e essa variável tem o meu nome Fábio dos Reis e aí eu quero imprimir isso aqui ó print eu quero
que apareça escrito na tela bosson treinamentos tracinho e o meu nome bom eu posso fazer assim entre aspas bosom treinamentos espaço tracinho espaço na verdade nem preciso colocar o espaço aqui vírgula e aqui a variável nome então isso aqui é um argumento posicional tá E essa variável nesta posição vai inserir aqui o valor que está contido dentro dela e separando a string literal que tá aqui da variável por uma por uma vírgula então quando eu executo boson treinamentos Fábio dos Reis tá aqui e a gente pode fazer isso quantas vezes forem necessárias por exemplo eu
poderia escrever aqui ó canal do YouTube canal igual e aí colocar esta frase boson treinamentos ali dentro então coloquei aqui certo e aí eu quero agora que apareça a mesma mensagem na tela então eu posso fazer assim canal vírgula na sequência a gente coloca as aspas com o ifen vírgula e o nome e aí executando ele mostra bosson treinamentos tracinho Fábio dos Reis a mesma coisa certo então uma outra forma da gente usar o print a gente também pode concatenar Strings concatenar Strings é juntar uma string na frente da outra para montar uma string diferente
geralmente maior Então vamos supor que eu tenha o seguinte em vez de ter o nome direto aqui eu vou ter uma função input perguntando o nome da pessoa então digite seu nome e dois pontos beleza dentro da variável nome vai est o nome digitado aí eu vou fazer um print vamos supor Olá espaço mais que na verdade não é um mais é um um operador de concatenação mais um nome ou seja concatenando com o nome concatenando com uma outra mensagem o resto da mensagem por exemplo bem-vindo ao curso de Python Beleza então aqui eu estou
concatenando a string é diferente do caso anterior Tô juntando para montar uma nova string que eu poderia inclusive montar fora do print numa outra variável então se eu rodar isso aqui aparece digit seu nome Fábio Olá Fábio bem-vindo ao curso de Python poderia ter feito assim também mensagem igual e tudo isso aqui vai dentro da mensagem olha que legal E aí eu mando mando imprimir apenas a mensagem então aqui fica bem Evidente o uso e a importância da concatenação a gente junta tudo todos os textos todos os valores numa mensagem só e depois a gente
só exibe na tela essa mensagem então digite seu nome Vamos que meu nome seja Roger Olá Roger bem-vindo ao curso de de Python agora olha que interessante vamos supor que eu tivesse um outro print aqui embaixo print e sei lá outro texto print outro texto executando digito o meu nome aqui Ana Olá Ana bem-vinda ao curso de Python outro texto veja que o outro texto automaticamente vem pra linha de baixo porque por padrão a função print ela coloca uma quebra de linha quando termina a string quando termina termina o valor que ela vai vai imprimir
Mas a gente pode desabilitar essa quebra de linha Vamos fazer um exemplo apagando aqui eu vou usar três prints então primeiro print segundo e terceiro print no primeiro print eu vou colocar uma mensagem do tipo imprime a mensagem e muda de linha no segundo print eu vou colocar assim imprime a mensagem e permanece na linha Então agora eu não quero que haja uma quebra de linha desse dessa mensagem pra próxima como é que eu faço isso eu faço assim depois de fechar essa aspa eu coloco uma vírgula E aí eu vou colocar um argumento chamado
end end de fim mesmo de finalização então end igual e aí eu vou de novo abrir e fechar aspas sem nada no meio Nenhum espaço sequer isso aqui significa que não é para ter uma quebra de linha tá então final dessa mensagem Vai ficar na mesma linha de modo que a próxima mensagem que eu colocar com o próximo print vai continuar na mesma linha então continuo na mesma linha vou até colocar um espaço aqui na frente para não ficar encavalado E aí se eu rodar a aplicação ó imprime a mensagem e muda de linha é
o primeiro aqui comportamento padrão quebra de linha vai mandar a próxima mensagem pra próxima linha depois imprime a mensagem permanece na linha na mesma linha veja que aqui não teve a quebra Olha só permaneceu na mesma linha porque eu desabilitei isso para essa instrução print da linha 5 utilizando end igual aspa aspa então isso aqui é bastante útil quando você precisa juntar as mensagens e mantê-las na mesma linha bom o que mais que a gente pode fazer a gente pode usar um método especial de string chamado string P Format que é usado para inserir valores
nas Strings de uma forma um pouquinho mais organizada a gente consegue usar esse método para inserir valores na string qual qu posi desejada facilitando um pouquinho a cria de Strings mais complexas de mensagens grandes que de outra forma precisaram de um monte de concatena como é que a gente faz isso vamos fazer um teste apagar aqui vou criar uma variável nome digitar direto nome Maria por exemplo [Música] idade mensagem Format como que a SG formatada que é uma variável igual e aí eu vou criar a mensagem vamos supor o nome dela é e agora dentro
de Chaves eu coloco um número zero depois e ela tem eu continuo com a mensagem depois eu abro de novo Chaves e coloco o número um agora e finalizo com anos então o nome dela é zero e ela tem um anos no lugar desse zero e desse 1 eu vou inserir os valores dessas variáveis como depois que fechou essa aspa eu coloco um ponto e aí já tem o Format aqui disponível Olha só abro o parêntese E aí é só colocar uma lista das variáveis na ordem que você quer que elas apareçam aqui então eu
quero primeiro o nome escrevo nome separo por vírgula agora coloco a idade Beleza então o que que vai acontecer o conteúdo dessa variável vai ser injetado aqui e o conteúdo da variável idade vai ser injetado nesta posição e assim eliminei ter que abrir e fechar aspas um monte de vezes e fazer concatena sões por exemplo e para ver o resultado Print msg formatada então deixa eu limpar aqui embaixo o terminal rodar a aplicação ó lá o nome dela é Maria e ela tem 30 anos dados foram inseridos exatamente na posição adequada não Maria e o
30 de 30 anos e claro eu poderia ter colocado na verdade essa mensagem inteira direto aqui dentro ó em vez de usar o msg formatado direto aqui ó então se eu rodar Olha só funciona da mesma forma então fica seu critério se você vai usar uma variável para guardar essa mensagem ou se você vai injetar direto dentro do print tudo depende do caso da forma como você tá programando não tem um uma forma melhor ou pior nesse caso legal então são algumas formas da gente usar o print agora a forma que eu mais gosto de
usar o print que eu prefiro e vou usar na maioria dos casos aqui no curso é usando uma f string que que é uma f string é uma formatted string literal que é uma maneira mais fácil mais legível inclusive de formatar string para exibir os dados na saída e também vai tornar concatenação de variáveis valores mais fácil e eficiente como é que funciona a f string Vamos fazer um exemplo bem tranquilo eu vou manter o nome aqui e o nome vai ser ser agora Fábio Lembrando que aqui você pode usar aspa normal aspa dupla se
você quiser Funciona igual meu peso hoje é [Música] 73.50 e agora eu vou criar uma mensagem usando uma f string então msg de mensagem igual como é que a gente faz a f string letra F abre a aspa E aí você vem com a mensagem Olá meu nome é abre de novo aqui as chaves só que agora em vez de colocar um número de posição para depois inseria a variável eu coloco direto o nome da variável conteúdo dela vai aparecer direto aqui e aí eu continuo digitando a mensagem e eu peso eu coloco a variável
peso dentro de de Chaves de novo e finalizo com kilos e agora é só mandar imprimir com print a a mensagem rodando Olá meu nome é Fábio e eu peso 73.5 kg bem tranquilo legal Da mesma forma que a gente viu anteriormente Se eu jogar tudo isso aqui direto dentro do print também vai funcionar é uma forma que a gente costuma usar bastante é até mais comum criar a f string direto dentro do Print então se eu rodar funciona da mesma forma beleza bom que mais que a gente pode fazer com f string a gente
pode executar expressões direto dentro da F string né Como assim vamos supor que eu tenho isso aqui ó uma variável a com o valor 10 por exemplo e a variável B com o valor 5 aí eu quero criar um resultado Então resultado igual vou usar F string abro as aspas e vou dizer aqui a soma de A com B Olha que interessante é igual a E aí aqui dentro eu posso colocar uma fórmula a + b Olha que legal essa fórmula vai ser avaliada primeiro e o resultado dela que vai ser inserido nessa posição dentro
dessa F string E aí é só você imprimir o resultado então executou a soma de 10 com 5 é igual a 15 e a gente também pode formatar por exemplo números de ponto flutuante usando F string Vamos ver outro exemplo então para entender isso vamos supor que eu tenho uma chamada valor e esse valor é um número do tipo 125 5963 um número de ponto flutuante um float com c casas decimais ou melhor seis casas decimais e eu quero exibir esse número dentro do Print então eu posso fazer isso aqui string dentro do print direto
AB ASP O valor é eu Poss colocar o valor aqui dentro executando vai aparecer o valor é 125.5 7963 7 vamos supor que eu quisesse só duas casas decimais aparecendo aqui não tudo isso é comum que determinados cálculos gerem números com um monte de casas decimais principalmente divisões por exemplo mas nem sempre é isso que eu quero exibir pro usuário às vezes só são relevantes duas ou três casas decimais Então como é que eu faço para exibir o valor da forma adequada aqui dentro do valor dentro das chaves logo depois da palavra valor eu vou
colocar dois pontos e aí eu venho com o formato que eu quero Qual o formato que eu quero nesse caso eu quero o ponto 2 que significa duas casas decimais aí eu coloco a letra F para indicar que é um número de ponto flutuante executando o programa agora vai aparecer 125 p58 veja que ele é redondo o número inclusive não vai não vai ser 57 é 58 ele o usa as regras matemáticas convencionais e faz o arredondamento no caso para cima porque o próximo número aqui é nove se o número aqui em vez de nove
fosse por exemplo TR ao executar ele mostraria 125.5 7 arredondou para baixo regra normal da matemática mas exibiu somente duas casas decimais como esperado o que mais que a gente pode fazer a gente também pode usar caracteres de escape determinados caracteres se você inserir direto aqui dentro na hora de usar o print eles causam problemas por exemplo vamos supor que eu quisesse colocar esse valor entre aspas e colocasse aqui uma aspa e outra aspa aqui aí ao executar esse código ele vai dizer olha Eh literal decimal inválido ele não reconhece essas aspas aqui vamos supor
que eu precisasse usar essas aspas como é que eu faço nesse caso o que você vai fazer é usar um caracter de escape que é bem simples basta antes do caracter especial que você quer exibir colocar uma barra uma barra aqui e uma barra aqui isso aqui el tá dizendo pra função print que não é para interpretar isso aqui como uma aspa da F string ou da string em si e sim como um caracter a ser impresso na tela de modo que se eu executar o programa agora ele vai mostrar entre aspas simples o valor
Olha que legal a gente já viu anteriormente um caracter de escape que era o Barra n utilizado para inserir uma quebra de linha Extra quando você quando você imprime um texto Então agora você conheceu mais um caracter de escape e um outro caracter bastante comum é a tabulação para você organizar a saída na forma de uma tabelinha por exemplo vamos fazer esse exemplinho nome igual João vamos supor aí eu quero uma mensagem na tela usando print direto dentro do Print então eu vou usar uma f string E aí eu vou dizer que o nome dele
vai estar aqui na variável nome beleza e a idade vai estar na variável idade idade beleza Ah não coloquei a idade dele aqui idade igual 32 bom se eu executar deste jeito vai aparecer assim tudo encavalado nem espaço day Então vamos organizar melhor isso aqui antes da palavra nome aqui antes eu vou colocar um barra T não é só a letra T é um barra T porque é um caracter de escape e também da mesma forma eu vou colocar depois do nome outro barra t e depois da palavra idade outro barra T eu coloquei TRS
Barras t ao executar Olha como aparece nome João idade 32 Ah não ficou muito bom então posso tirar esse barra t e deixar um espaço normal tirar esse barra T deixar um espaço normal mas mantenho esse do meio e aí o formato que vai aparecer é esse aqui ó o nome uma tabulação um Tab no teclado e a idade na frente então isso aqui a gente chama de caracter de escape e Existem várias se a gente quiser por exemplo exibir a própria barra aí dentro é só colocar barra barra isso aqui significa uma barra por
exemplo para um caminho de arquivos e você vai usar isso mas para frente quando a gente trabalhar com arquivos com leitura e gravação de arquivos em disco a gente precisa fornecer o caminho do arquivo no disco e o caminho do arquivo usa Barras como a gente sabe então a gente vai usar esse tipo de caracter de escape posteriormente legal então tá aí nesse vídeo estudamos suscintamente eh o funcionamento da função print e algumas formas distintas de você exibir valores resultados de processamento na tela usando argumentos posicionais usando o método Format e usando as f Strings
treine criando outros exemplos você mesmo e sempre observando com atenção os resultados que aparecem na saída vamos tratar agora das estruturas de controle de repetição é muito comum a gente precisar repetir blocos de comandos de um programa diversas vezes nesse caso a gente usa Loops ou laços de repetição que vão repetir os blocos de código pra gente de forma automatizada quantas vezes forem necessárias emto a gente tem dois blocos ou estruturas de controle de repetição principais que são os laços while e for para agora a gente vai trabalhar com o laço Wi então eu vou
criar um novo arquivo e vou escrever Wi p py e a gente vai entender como é que funciona essa estrutura de repetição Wi bom aqui na tela você tá vendo um pequeno fluxograma que explica como funciona a estrutura de repetição Wi e a ideia é a seguinte um teste Lógico é realizado no início do loop do laço de repetição e sempre que esse teste retornar verdadeiro os comandos associados ao laç os comandos dentro desse bloco são exec ados E aí o laço é automático o teste Lógico é realizado retornou verdadeiro Executa os comandos E aí
o teste Lógico é executado de novo automaticamente se retornar verdadeiro outra vez executa outra vez os comandos E aí o laço é executado e o teste novamente é realizado se retornar verdadeiro outra vez executa outra vez os comandos e assim sucessivamente Isso só vai parar no momento em que esse teste lógico retornar falso quando o teste lógico retorna falso o laço é interrompido e o progama prossegue fazendo outra coisa Qualquer Então vamos ver um exemplo simples de como trabalhar ISO quero imprimir na tela os números de 1 a 10 usando estrutura de repetição como é
que a gente faz isso B eu criar uma variável que vou chamar de número e v atribuir essa variel por exemplo número que é o primeiro número da minha sequência E aí eu vou chamar o laço while abro parêntese e aqui dentro eu vou colocar o meu teste lógico Qual que é o meu teste a minha condição de parada a minha condição de parada é quando o número chegar em 10 eu quero contar de 1 a 10 então eu vou dizer num menor ou igual a 10 significa enquanto em português então enquanto o número for
menor ou igual a 10 faça dois pontos enter Veja a indentação assim como a gente viu com os com os controles condicionais a gente tambémm vai ter essa entação pros blocos while e aqui dentro a gente vai colocar todos os comandos que a gente quer que sejam repetidos x vezes que que eu quero eu quero imprimir na tela os valores então eu vou escrever print e vou mandar escrever o conteúdo da variável número se eu executasse agora esse programa ele iria escrever na tela alguma coisa iria escrever o conteúdo de número que é um só
que aí eu tenho um problema quantas vezes ele vai escrever esse conteúdo na tela ele vai escrever infinitas vezes por quê Porque 1 é menor ou igual a 10 é verdadeiro então isso aqui vai retornar verdadeiro o número será escrito E aí o laço automaticamente vai testar de novo só que num continua valendo um continua sendo menor ou igual a 10 continua sendo verdadeiro aí o número é escrito de novo na tela e o laço ocorre assim sucessivamente para sempre Isso é o que a gente chama de laço infinito o laço infinito muitas vezes é
um erro de programação um erro de lógica e às vezes a gente precisa do laço infinito nos Nossos programas então ele não é algo que você vai sempre querer evitar mas geralmente você quer evitar de qualquer forma eh além de evitar o o laço infinito aqui a gente precisa dar um jeito de escrever na tela os números que a gente precisa não só o número um isso a gente faz da seguinte forma na linha de baixo eu vou incrementar o valor da variável n que que é incrementar incrementar é aumentar o valor eu vou somar
alguma coisa para aumentar esse valor geralmente o incremento é de um em um então eu quero incrementar em um esse valor como é que eu faço isso você pode fazer assim variável num mais igual esse operador aqui mais igual 1 é um operador de atribuição com incremento que que ele faz ele vai tomar o que estar a variável no um e vai acrescentar um lá dentro não vai substituir o valor da variável por outro valor vai aumentar o valor em uma unidade Isso é o que a gente chama de incremento se eu quiser incrementar em
dois em três em 10 em 1000 É só colocar um valor diferente aqui na frente o que vai acontecer aqui é o seguinte num vale 1 1 é menor ou igual a 10 ele vai escrever n na tela e vai incrementar o valor de n ou seja num passa a valer 1 + 1 2 o laço automaticamente vai testar de novo a condição e dois continua sendo menor ou igual a 10 então ele vai escrever na tela 2 e vai incrementar esse número 2 + 1 3 e assim sucessivamente até chegar em 10 quando chegar
em 10 10 é menor ou igual a 10 ainda é igual Então vai escrever na tela no um 10 vai incrementar de novo 10 + 1 11 quando for feito o teste lógico automático de novo 11 é menor ou igual a 10 não falso nesse momento o laço encerra automaticamente aí as que você tiver fora do laço por exemplo aqui que serão executadas e aqui eu posso por exemplo colocar um print laço encerrado essa instrução vai ser executada depois de executar esse bloco aqui 10 vezes Então veja que é importante você encontrar um balanço entre
a instrução o teste lógico e uma forma de parada desse teste bom vamos rodar para ver se funciona então eu vou executar tá lá os números de 1 a 10 foram escritos aqui no Terminal 1 até 10 legal e o laço encerrado aparece no final se a gente colocar um outro valor qualquer aqui dentro por exemplo em vez de 100 fosse de 10 fosse 1000 e eu mando executar olha só ele vai gerar os números até 1000 E aí encerra o laço então ele vai executar quantas vezes eu precisar Imagine se eu precisasse executar algum
outro bloco aqui uma mensagem por exemplo 1000 vezes como é que eu faço isso sem ter um laço de repetição hum imagine ter que digitar o mesmo comando 1000 vezes é inadmissível impossível Então você usa um laço de repetição para poder e repetir executar aquele bloco Quantas vezes você necessitar bom aqui a gente tem a condição de parada bem clara né Eh ele vai terminar depois de X vez x o número que você colocou aqui na frente vamos supor que eu não soubesse quantas vezes o laço vai executar Mas ele tem que ficar repetindo os
comandos as instruções bom vamos fazer um outro exemplo para entender isso melhor Suponha que eu preciso de um programinha que vai perguntar pro usuário o nome dele e vai escrever na tela uma mensagem de boas-vindas pro usuário para quantos usuários não sei um número indeterminado então o usuário vem coloca o nome aparece a mensagem vem o próximo usuário coloca o nome e aparece a mensagem só vai parar quando algum usuário digitar a tecla X então x encerra o programinha como é que a gente faz isso bom vamos implementar essa solução a gente vai fazer da
seguinte forma V apagar pegar tudo isso aqui e aí eu vou criar uma variável nome e vou inicializar essa variável com nada n Então existe essa esse tipo dentro do Python tipo N que significa nada Qual é o tipo dessa variável nenhum mas ela existe ela tá na memória por que isso porque eu não quero atribuir nenhum nome a ela agora eu não sei quem é que vai digitar o nome então ela não pode ter o nome de alguém ali dentro por isso eu inicializo essa variável com n vazia e aí eu vou criar um
laço infinito como é que eu crio um laço infinito de propósito while E aí você pode escrever por exemplo true bota a própria palavrinha true ali true é o que faz o bloco ser executado então eu coloco while true do pontos enter e aí a gente tá dentro do bloco while note a indentação Bom agora eu vou pedir pro usuário digitar o nome dele print digite seu nome e aí eu preciso especificar usuário como é que ele para deixa eu só colocar aspa que faltou aqui ó digite seu nome vírgula ou x para parar beleza
fecho aspa então agora o usuário já sabe o que ele tem que fazer digitar o nome ou x para parar aí a variável nome recebe o retorno do input eu vou capturar o nome que o usuário vai digitar no terminalzinho com input e guardar na variável nome beleza Se eu fizer isso aqui e colocar embaixo uma mensagem com print do tipo e bem-vindo bem vindo e colocar o nome da pessoa na frente vai aparecer a mensagem Conforme solicitado bom olha o que eu vou fazer aqui F abro o aspa bem-vindo vírgula abro e fecho aqui
é os as chaves e aqui dentro eu coloco a variável nome beleza essa aqui é uma outra forma da gente escrever mensagens na tela chama-se F string e num outro vídeo eu vou explorar isso bem a fundo mas eu já deixo aqui para você para você já já ficar antenado que existe outra forma de exibir mensagens na tela com esse formato vai aparecer escrito bem-vindo e o nome que o usuário digitou aqui quantos usuários como aqui tá o while true vão aparecer infinitos usuários o usuário vai digitar de novo e de novo de novo isso
aqui não para mais como é que eu vou estabelecer então a condição de parada bom de acordo com o nosso enunciado se o usuário digitar x Vai parar Então eu preciso verificar se ele digitou o x se ele if Então dentro do I olha tabulação if nome for igual a x ou nome no caso or or nome e igual a x maiúsculo então dois pontos e aí a gente vai usar uma instrução chamada breake olha quanta coisa acontecendo aqui eu tô fazendo uma verificação para saber se o nome é na verdade só a letra x
minúscula ou se a x maiúscula porque o Python faz diferenciação entre minúsculo e maiúsculo se você testar só um ou outro e você corre o risco do programa não parar quando usuário digitar X então a gente testa ambos E para isso eu uso o op op ador lógico or ou um ou outro vai retornar e true retornou true ele vai Executar a instrução Break que que faz a instrução Break ela finaliza imediatamente o laço de repetição onde ela tá inserida Então esse Break finaliza imediatamente esse laço while é uma instrução meio mágica né ela resolve
o seu problema ali imediatamente rodou Break finalizou o laço veja que ela não finaliza o if ela finaliza o laço de repetição onde ela está inserida mas ela só vai ser executada se o usuário digitar x minúsculo ou x maiúsculo beleza fez isso vamos sair do laço a e colocar uma outra mensagenzinha na tela que vai ser executada de qualquer forma no final do programa do tipo até logo Então veja que essa instrução tá fora do laço Wi tá vamos rodar para testar Então deixa eu limpar aqui o terminal vou subir um pouquinho rodando digite
seu nome ou x para parar meu nome é Fábio beleza bem-vindo Fábio e aí digite seu nome ou x para parar Ana bem-vindo Ana digite seu nome ou x para parar José e assim sucessivamente só vai parar quando eu digitar x E aí até logo aí ele executa a instrução que tá fora do laço de repetição e finaliza o nosso script legal ó Então tá aí executado com sucesso esse programinha utilizando um laço Wi e veja que a gente tem um if um condicional dentro do laço a isso é muito comum e também é comum
ter um laço de repetição dentro de outro que a gente vai estudar um pouquinho mais para frente a gente vai ver alguns exemplos disso também certo então Nesta aula vimos Como trabalhar com o laço de repetição while tanto fornecendo um valor para parada quanto utilizando a instrução Break dentro de um Loop Infinito para sair desse laço encadeamos um if dentro do do laço de repetição também com várias instruções e vimos suscintamente Como exibir uma mensagem na tela usando a sintaxe de F string chama F string porque começa com a letra F antes das aspas tá
e dentro do da das chaves vai o nome da variável cujo valor você quer que apareça naquele ponto tudo bem tudo isso a gente vai explorar com mais detalhes futuramente Então essa é uma forma da gente fazer repetição no no Python a outra forma bastante popular e muito útil é com o laço for que é o que a gente vai ver logo na sequência um outro tipo de laço de repetição muito importante em Python é o laço for o laço for em Python permite construir estruturas de repetição para iteração em sequências de dados como listas
tuplas Strings conjuntos dicionários etc que a gente ainda vai estudar no curso e o funcionamento do for no Python é diferente do for na maioria das outras linguagens ele funciona mais como um método e iterador permitindo executar um conjunto de comandos sobre cada item da sequência a sintaxe do laço for é essa que você tá vendo aqui for item em sequência instruções então para cada item item vai ser o nome de uma variável que você vai criar in in é o operador de associação e sequência é o conjunto de valores sobre os quais você quer
aplicar algum tipo de processo e esse processo vai estar aqui dentro das executadas para cada item da sequência então mais ou menos como mostra esse fluxograma para cada valor na sequência um conjunto de instruções é aplicado até finalizar essa sequência vamos ver exemplos para entender melhor então eu vou criar aqui um novo projetinho novo arquivo vamos chamar de laço for ou simplesmente de for ppy beleza nosso primeiro programinha vai ser o seguinte imprimir na tela os números presentes em uma lista um por linha Bom primeiramente vamos criar uma lista de Valores em Python a gente
tem uma estrutura de dados muito interessante chamada lista que é criada da seguinte forma nome da da variável ou do objeto igual e aí a gente usa anotação de colchetes e dentro dos colchetes você coloca os valores que farão parte dessa lista separados por vírgulas por exemplo 2 6 9 40 12 3 enfim aqui uma lista de números mas pode ser de qualquer coisa a gente ainda vai estudar a fundo as listas em uma outra aula mas aqui a gente precisa dessa lista para poder entender o laço for a princípio então tem essa lista de
itens E aí eu vou usar o laço for for item lembre-se que item é o nome de uma variável pode ser o nome que você quiser in operador de associação ou seja vai verificar se o item está dentro da sequência e a sequência é minha variável lista isso aqui você pode entender como para cada item dentro da lista faça alguma coisa com esse item essa alguma coisa pode ser por exemplo um simples print e manda imprimir o item na tela aí se eu executar esse programa olha só o que a gente vai ter aqui a
lista de itens um por linha os mesmos itens da lista estão aqui ó foram impressos na minha saída certo Então é isso que faz um laço for a princípio agora o laço for pode fazer muito mais do que isso tá vamos ver outro exemplo o laço fora ele pode por exemplo iterar sobre uma string é qualquer tipo de sequência na verdade as Strings também são sequências uma string é uma sequência de caracteres então por exemplo vamos supor que eu queira iterar sobre as letras de uma palavra então eu vou criar aqui uma variável palavra e
vou colocar uma palavra dentro dela é como é string entre aspas E aí vamos pôr bosum E aí eu vou fazer o seguinte eu vou mudar aqui para for letra em palavra palavra para cada letra em palavra mostre na tela Imprima a letra veja que letra é uma variável qualquer e palavra é a minha lista Então agora eu vou executar Olha só b o s o n bosom né então uma letra por vez foi acessada e uma letra por vez foi impressa na tela muito bem e se eu quisesse por exemplo imprimir na tela uma
lista de números uma sequência de números sem precisar usar uma lista desse tipo como é que eu faço Tem como sim tem E para isso a gente vai usar uma função auxiliar chamada função Range como é que vai funcionar isso então deixa eu comentar isso aqui tudo que eu fiz controlc C E aí a gente vai escrever mais um codozinho aqui embaixo funciona assim for variável iterador pode ser número in E aí a minha lista Minha sequência de valores essa sequência de valores ela vai ser criada no ato usando uma função chamada Range significa faixa
em português no sentido de faixa de valores e essa função ela pode aceitar dois argumentos primeiro argumento é o valor inicial segundo argumento é o valor final vamos supor que eu queira a sequência de números de 1 a 10 então o argumento final será 11 porque a função Range vai gerar os números de 1 até 10 parando no 11 11 é o limite ele para no 11 Mas não gera o 11 no caso tá então dois pontos E aí eu mando imprimir o número beleza vamos ver o que acontece rodando ó lá os números de
1 a 10 aqui na tela foram gerados direitinho então a função Range ela é muito útil porque ela permite gerar faixas de valores e qual que é a grande sacada aqui a grande sacada é que se ele gerou 10 valores e vai fazer iteração em cima de 10 valores significa que os comandos aqui dentro serão executados 10 vezes Então dessa forma combinando o laço for com a função Range a gente consegue fazer com que esse for ele se comporte de forma análoga ao laço for em outras linguagens Ou seja que Execute os comandos aqui dentro
x vezes quantas vezes eu quiser independente inclusive de eu usar essa variável aqui dentro do laço for ou não eu também posso usar essa função Range da seguinte forma em vez de colocar o valor inicial e o valor final fornecer só um argumento por exemplo o número 10 nesse caso caso a função vai gerar os valores olha só que interessante de 0 a 9 é sempre o número que você colocou aqui men1 o final dessa dessa sequência gerada Mas o mais importante é aqui rodou 10 vezes o comando que tá aqui dentro então se você
simplesmente quer rodar os comandos dentro do laço for x vezes coloa esse número X aqui se você precisar usar os valores gerados aí você Possivelmente vai ter que dizer onde e onde termina essa faixa de valores vamos ver mais um exemplo da função Range vamos supor que eu quera escrever 10 vezes na tela um nome fornecido pelo usuário como é que eu faço B vou fazer assim vou apagar isso aqui vou criar uma variável nome essa variável vai receber o nome que o usuário vai fornecer então input digite seu nome beleza usuário vai digitar o
nome dele aqui limpei o terminal aqui vamos criar um laço for então eu vou usar uma variável contadora x in range eu quero executar 10 vezes 10 dois pontos beleza aí eu vou dar um print e vou usar uma anotação de F string F aspas simples e aí eu vou fazer o seguinte dentro de Chaves eu vou escrever x+ 1 você já vai entender para que que é isso espaço mais Chaves e aí o nome da pessoa variável nome aqui em cima vamos rodar isso aqui para ver o que acontece ó pedi o meu nome
então escrevo Fábio enter E aí apareceu um Fábio dois Fábio trê Fábio quatro Fábio Veja uma lista com os 10 números e o nome repetido 10 vezes esses números de 1 a 10 eles vêm daqui ó x + 1 quando a gente usa essa anotação da função Range só fornecendo um valor a gente acabou de ver ele gera os valores de zero até esse valor os1 se eu quiser que a contagem apareça a partir de um eu somo um na hora de exibir Então eu peguei esse x que começa em zero Somei um então ele
vai mostrar na tela a partir de um concatenado com o nome que foi digitado aqui em cima e vai fazer isso aqui 10 vezes uma outra coisa que a gente pode fazer com a função Range combinada com laço for é alterar o valor inicial e o valor final do do da nossa sequência E também o valor do incremento fornecendo outros parâmetros a função Range ela ela pode operar com até três parâmetros eu vou marcar aqui no comentário a função Range ela pode funcionar assim Range valor inicial valor final a gente já viu o exemplo disso
e também pode ser eh trabalhado com um incremento Lembrando que o valor final é sempre mais um tá porque o valor final em si não entra na geração dos valores vamos ver um exemplo aqui deixa eu comentar esse aqui de cima Ctrl KC a gente vai fazer o seguinte vamos supor que Eu queiro gerar isso for x in Range aí aqui dentro eu vou colocar valor inicial 2 valor final 20 dois pontos e mando imprimir o x vamos ver o que acontece quando eu Gero este código aqui especificamente ó lá gerou os números a partir
de dois ó começ s em dois e foi até 19 né o último número aqui não entra sempre ele men1 agora olha que interessante vou acrescentar um outro parâmetro aqui vírgula 2 e vou rodar outra vez agora olha que interessante 2 4 6 8 10 e assim por diante somente os números pares na verdade o que ele gerou foi a partir de 2 Até bater em 20 e Gere os números de dois em dois Poderia gerar de três em três coloco três aqui mando rodar a partir do dois o próximo número é sempre três unidades
à frente certo o o 20 não entra se eu quiser que ele entre eu ten que colocar 21 aqui vou rodar o programa E aí ele vai aparecer isso pode ser feito inverso também a gente pode fazer esse laço for contar de forma inversa usando a função Range poderia ter começado aqui em 20 parado em dois e feito um laço e aí eu utilizo o número negativo para esse laço Men 2 é um decremento aí ele vai rodar desta forma começa em 20 e vai diminuindo até chegar em quatro o dois não entra se eu
quiser que ele entre eu preciso colocar o número a menos que o dois por exemplo um E aí ele vai aparecer aqui na tela Vamos fazer um último exemplo do laço for Então dessa vez sem usar a função range eu quero o seguinte vamos comentar eu quero o seguinte quero imprimir na tela nomes de de itens conos numa lista um por linha se um dos nomes estiver na lista este nome em particular não deve ser impresso eu vou usar para isso como exemplo pedras preciosas eu vou criar uma lista de pedras tá em vez de
lista eu vou usar uma outra uma outra estrutura eu vou usar uma tupla que é criada usando-se parênteses e tem diferença paraa lista Ô aos poucos apresentando lista tupla colocando esses nomes para quando chegar a aula específica ficar mais fácil de entender então aqui eu vou colocar nomes de pedas por exemplo Rubi entre aspas porque são Strings Esmeralda que mais quartzo Opa Quartzo É pedra preciosa geralmente não Safira Vamos colocar mais mais umas duas diamante e Turmalina nomes de pedras então crie uma lista com nomes de pedr ess lista podia ter vindo de um banco
de dados da web podia ter sido fornecida pelo usuário não importa de onde ela veio o que importa é eu quero imprimir na tela esses nomes só que se houver o nome quartzo dentro da lista eu quero que este nome só este não seja impresso como é que a gente faz isso a gente faz assim ó olha que interessante for laço for pedra o nome da variável iterador que pode ser o nome que você quiser in pedras o nome da lista sobre a qual eu quero iterar da sequência no caso é uma é uma tupla
então a gente chama de sequência tupla que que eu faço aqui eu preciso dar um print na pedra certo beleza se eu executar deste jeito Olha o que que vai acontecer Rubi Esmeralda quartzo Safira diamante Turmalina imprimiu todas Inclusive a que eu não queria que é o quartzo ou seja o laço for ele iter em cada item aqui dessa sequência colocou cada item dentro da variável pedra e mandou escrever na tela beleza como é que eu faço para evitar o quartz antes de imprimir a gente faz o seguinte a gente usa um if para verificar
se a pedra é o quartzo certo Olha só se a pedra for igual ao quartzo então que que eu faço aqui eu vou usar uma instrução chamada continue continuar que que essa instrução faz ela encerra a iteração atual do laço tá isso que o continuo faz encerra a iteração atual do laço ou seja a próxima instrução aqui dentro do for não será executada mas o laço não termina quem termina o laço é a instrução Break que a gente já viu em outro vídeo o Break finalizaria tudo e acabou não imprime mais nada ali pra frente
o contínuo Só não vai imprimir a iteração atual mas vai prosseguir nas próximas tanto é que se eu rodar agora vai aparecer Rubi Esmeralda pulou o quartzo Safira diamante Turmalina então a instrução cont continu é o é o parzinho do da instrução Break a instrução Break finaliza o laço de repetição imediatamente e a instrução contínuo e finaliza somente a iteração atual a rodada atual por assim dizer mas o laço continua até o final Beleza eh tanto o continue quanto o Break funcionam no laço for e também funcionam no laço while que a gente já estudou
Então tá aí nesse vídeo a gente viu como trabalhar com o laço for para criar laços de repetição simples laços com contagem laços combinando com a função range e também vimos Como utilizar a instrução continue agora a gente já tá preparado para trabalhar com outros assuntos como por exemplo números aleatórios trabalhar com imports trabalhar com as sequências diversas listas tupas dicionários que são os assuntos que a gente vai estudar nas próximas lições vamos treinar um pouquinho mais o uso de laço de repetição falando sobre encadeamento de Laços de repetição para isso eu vou criar um
novo arquivo como sempre e vou chamá-lo de Laços encadeados ppy um laço de repetição encadeado é um laço que tá dentro de outro laço ou seja a gente pode ter uma estrutura de repetição repetindo um bloco de códigos e essa estrutura em si sendo repetida dentro de outro bloco vamos ver um exemplo com laço for para começar então eu vou começar com o laço for e vou usar uma variável que eu vou chamar de Cont x de contador externo em range eu quero que Rode cinco vezes só que eu quero utilizar o número que vai
ser gerado dentro do Range Então em vez de simplesmente colocar o número C eu vou dizer de um a seis que você já sabe significa cinco vezes dois pontos que eu quero fazer eu quero imprimir na tela uma mensagem do tipo colocar uma barra n aqui aqui Rodada e o nosso contador externo cont x tá deixa eu colocar o f aqui na frente de F string certo que que isso aqui vai fazer vamos executar para ver beleza ele coloca na tela rodada um rodada 2 3 4 e 5 como previsto cinco vezes a partir de
um legal agora eu quero o seguinte dentro de cada uma dessas rodadas n vamos supor que fosse um jogo dentro de cada uma dessas rodadas eu quero que um um código seja executado x vezes então isso aqui por si só já é uma estrutura de repetição que roda cinco vezes mas dentro de cada uma delas eu quero que um outro código seja executado x vezes bom como é que a gente faz isso a gente encadeia a estrutura de repetição então na sequência desse print eu coloco outro laço for aí eu vou usar outro contador só
que esse aqui vai ser o meu contador interno Lembrando que o nome da variável pode ser o nome que você quiser in Range também eu vou usar E aí vamos supor que eu queira uma contagem do tipo regressiva de CCO até zero diminuindo de um em um ol uso padrão da um uso comum da função Range dois pontos e agora eu quero imprimir na tela de novo e o valor então valor e o contador em Z beleza aí eu vou colocar uma mensagem fora dos Loops print fim dos laços de repetição vamos ver o que
que vai aparecer para nós puxar um pouquinho para cima terminal executar E aí ele vai dar um erro porque eu esqueci de colocar Obviamente você já deve ter percebido Isso aí Isso aqui tá as chaves para indicar que é um parâmetro que vai ser inserido desta variável Então vamos lá de novo agora vai funcionar como previsto Então veja que interessante na rodada um eu tenho cinco vezes esse código sendo executado esse print colocando uma contagem regressiva na tela na rodada dois de novo na rodada três de novo e assim por diante a quatro e a
cinco Então veja que é um laço interno dentro de um outro laço externo e Ambos são do tipo laço for o laço fora ele roda mais devagar porque para cada iteração dele tem que ter a iteração completa do laço interno então o laço interno roda cinco vezes para cada vez que o laço externo roda depois o laço externo é incrementado e o laço interno roda de novo mais cinco vezes e assim por diante então isso aqui a gente chama de encadeamento de Laços de repetição Vamos fazer um outro exemplo eu vou comentar esse aqui beleza
nesse segundo exemplo eu vou usar um Import então o Import sempre vai no comecinho aqui você pode até colocar aqui se você quiser o Import eu vou importar a o módulo Random e a a gente vai colar um laço de repetição desse tipo forar o laço externo agora de a in Range aí de novo entre e se que na verdade vai de a c para rodar C vezes eu quero que ele Imprima na tela bem similar a anterior conjunto e o conjunto vai ser justamente o valor de A tá coloco o f aqui na frente
beleza aí dentro dele eu vou colocar um outro laço que eu vou chamar de B for B in range e esse eu quero que Rode cinco vezes agora simplesmente o número cinco não que não importa para mim o valor de B eu só quero que Rode cinco vezes o que eu vou colocar aqui dentro tá o que que eu vou colocar aqui dentro aqui dentro eu vou colocar o seguinte uma variável número que recebe o retorno de Random pon Rand int ou seja um número aleatório inteiro entre um e 100 por exemplo E aí eu
vou imprimir na tela o valor deste número então valor do número beleza vamos ver o que que ele vai mostrar pra gente agora de puxar um pouquinho para cima o terminal rodar olha só ele vai rodar vai criar cinco conjuntos de valores e cada um deles com cinco números dentro aqui faltou o n barra n rodar de novo beleza toda vez que eu rodar ele vai gerar conjuntos diferentes de valores porque é número aleatório tá poderia ser por exemplo conjuntos de valores para você jogar na loteria ele gera para você os números e você vai
jogar na loteria claro que do jeito que tá aqui não serve exatamente para esse propósito porque os números podem aparecer repetidos aí você tem que se preocupar com isso na hora de escrever o algoritmo mas o princípio é esse então a gente consegue fazer o laço interno gerando os números e agrupando esses números em conjuntos usando o laço externo por isso o laço é encadeado você pode encadear também laço while dentro do for ou for dentro do Wi tudo depende da sua necessidade tranquilo mas esse é o princípio então do encadeamento de Laços de repetição
você põe um laço dentro do outro Lembrando que o laço interno Ele sempre vai rodar totalmente para cada iteração do nosso laço externo e a gente vai usar esse tipo de estrutura futuramente quando a gente for trabalhar com estruturas de dados mais complexas por isso é importante entender e saber que existe eh esse tipo de de construção algoritmica Vamos falar agora sobre módulos e pacotes no Python muitas vezes a gente precisa adicionar algum tipo de funcionalidade a uma aplicação e em vez de escrever um código que pode ficar extenso e complexo a gente pode lançar
a mão do uso de códigos já prontos Esses códigos já prontos eles vão ser encontrados na F de módulos e pacotes aqui você tá vendo um site na internet muito importante que é o Python package index o índice de pacotes do Python a partir daqui você pode encontrar baixar instalar e até mesmo publicar os pacotes caso você crie um pacote para uso em scripts do Python então anote esse site ppi.org aqui você pode pesquisar projetos ou navegar pelos projetos e descobrir pacotes novos que existam aqui exist um monte deles por tópicos por frameworks a quantidade
é enorme são dezenas e dezenas de milhares de pacotes disponíveis para instalar um pacote a gente não precisa necessariamente baixar nada daqui a gente pode usar simplesmente a linha de comandos do Python e um Comando Especial chamado PIP que é o instalador padrão de pacotes do Python e eu vou fazer isso agora vou mostrar como é que a gente instala pacotes usando usando o PIP e depois a gente vai trabalhar com os módulos Então o que a gente vai fazer o seguinte a gente vai abrir um prompt CMD um prompt de comandos aí na sua
máquina você vai abrir o promp de comandos legal na verdade dá para fazer isso aqui direto do do terminal lá do vs code mas se você não tiver usando vs code você vai vai ter que utilizar o prompt de comandos Então já vou mostrar direto aqui no PR Primeiro Comando que a gente vai digitar aqui é um comando para ver a versão instalada do Python e o comando é p espaço menos menos version menos menos junto com version sem espaço aqui mas tem espaço entre o p e o menos menos version e o p é
uma abreviação de python.exe não precisa escever python.exe É só escrever P que ele vai reconhecer dou enter e ele vai dizer qual a versão que eu tenho 3.12.0 beleza se não aparecer a versão aqui é porque você não vai conseguir utilizar direto da linha de comandos talvez você tenha esquecido de de adicionar a variável path ou tem algum problema com a sua instalação do Python aí você tem que resolver esse problema tá bom vamos usar o PIP então primeiro eu quero saber quais pacotes eu tenho instalados na minha máquina para poder usar nos meus scripts
Python para isso você vai emitir o comando pi - M espaço PIP list Esse comando vai trazer uma lista dos pacotes que eu já tenho disponíveis veja que no meu caso ele diz que eu tenho apenas o próprio PIP na versão 23.2.1 mais nada e aqui ele me traz uma informação ol existe uma nova versão no PIP disponível E se eu quiser atualizar a versão atual para Nova é só rodar Esse comando aqui e vou fazer isso então vamos atualizar já o PIP e depois a gente faz a instalação de pacotes novos então o comando
é esse aqui como eu citei anteriormente você não precisa escrever python.exe só escrever P que é mais curtinho E aí você dá o menos M PIP install espaço menos menos upgrade e upgrade é no PIP upgrade de atualização ele vai instalar a atualização do próprio PIP então enter aí ele vai fazer a a coleta do PIP ou seja ele vai baixar deste site aqui na internet faz o download automático pra gente desinstala a versão atual el diz aqui que desinstalou com sucesso e vai instalar l a versão nova beleza Olha lá instalou com sucesso PIP
2331 CLS se eu rodar de novo esse mesmo comando PIP list ele vai dizer agora que eu tenho a versão 2331 versão nova já não dá mais a mensagem de atualização vamos supor que eu queria instalar um novo pacote por exemplo existe um pacote em pyon chamado Mat plot Lib que permite criar gráficos PR exibição na tela visualização de dados é um pacote muito legal só que ele não vem por padrão então eu preciso instalar como é que eu instalo Esse pacote P Men M PIP Install e aqui na frente você põe o nome do
pacote Se você não souber o nome do pacote aí aquele site que eu mostrei o p.org é o lugar para você pesquisar e descobrir os nomes dos pacotes sabendo o nome do pacote é só escrever Mat plot Lib enter tendo a conexão à internet ativa ele vai lá buscar o pacote ó coletando matplot Lib vai fazer o download do pacote e instalar na máquina é como se fosse uma biblioteca um pacote tá tem uma série de funções uma série de variáveis uma série de atributos tudo para você utilizar nas suas aplicações veja que ele diz
aqui installing collected packages e traz o nome de um monte de pacotes além do próprio Mat plot Liv porque na verdade muitos pacotes possuem dependências que que é uma dependência é quando um pacote para funcionar precisa de outro pacote assim como o script que você tá escrevendo pode precisar de um pacote ou de um módulo para poder rodar corretamente de onde você importa funcionalidades os próprios pacotes também podem depender de outros Então nesse caso o PIP ele é inteligente o suficiente para saber todos os pacotes que ele tem que baixar e instalar para este pacote
específico no caso matp libre funcionar instalou com sucesso todo esse monte de pacotes então agora deixa eu limpar a tela CLS e vamos listar de novo então para listar P menos M PIP list setinha de direção no teclado para mostrar os comandos anteriores Olha só tinha um pacote só que Ero o PIP agora a gente tem o PIP e o Mat plot Lib que eu mandei instalar mas ele também instalou esses outros todos que são importantes pro match plot Lib funcionar certo então tá aí é assim que a gente instala um pacote novo no sistema
para usar na nossa aplica se eu quiser ver informações específicas sobre um pacote Eu também consigo E para isso eu uso o seguinte comando P Men M PIP show PIP show e o nome do pacote match plot Lib por exemplo aí ele vai trazer informações sobre esse pacote o nome a versão um sumário que é uma descrição sucinta do pacote pacote para plotagem do Python plotagem é criar gráficos tem a página deles que você pode visitar para ver o projeto pegar download documentação tutoriais exemplos etc e mais uma série de outras informações Inclusive a pasta
do disco onde esse pacote tá guardado porque o pacote nada mais é que um arquivo né com codificação Python dentro então fica aqui nesse pacote nessa pasta site packages nesse caminho certo e finalmente Se eu precisar desinstalar um pacote é bem simples é o p ou python.exe men Men M PIP é o mesmo padrão E aí você usa a palavra uninstall seguida do nome do pacote pacote aí você põe o nome do pacote eu não vou desinstalar vou deixar como está que mais para frente eu vou usar esses pacotes Então esse é o comando para
desinstalar um pacote é só dar enter e ele elimina o pacote da sua máquina Beleza agora sabemos como colocar pacotes na máquina vamos ver como é que a gente importa pacotes e outros tipos de módulos no sistema para isso a gente vai criar um projetinho novo aqui eu vou chamar esse projetinho de módulos módulos ou pacotes tem uma pequena diferença entre módulos e pacotes né os pacotes você baixa na internet existem alguns que são buam já estão prontos dentro do Python a gente não precisa instalar e os módulos a gente pode criar você pode criar
um arquivo ppy codificar esse arquivo com as funções que você quer e usar isso importando dentro de Outras aplicações então dou um enter aqui criei o módulos ppy bom Existem várias formas da gente importar e os módulos ou pacotes para dentro de uma aplicação a mais comum é o Import genérico o Import genérico é feito assim Import e o nome do pacote na frente ou do módulo Ah esses imports eles sempre devem ocorrer no comecinho do script tá sempre na as primeiras linhas do script Onde você coloca os imports antes de começar a codificar o
script em si vamos supor que eu queria importar um módulo muito comum em Python que é o módulo math escrevo math é o módulo de funções matemáticas do Python tá esse módulo aqui ele traz um monte de funções matemáticas interessantes que a gente inclusive vai explorar numa aula mais para frente ao importar esse módulo veja que interessante dentro deste projeto agora eu passo a ter acesso a todas as funções variáveis atributos que estão codificados dentro do módulo E aí eu posso por exemplo mandar imprimir na tela meth ponto e veja quando eu coloco o pontinho
operador de ponto no nome do módulo aparece já uma lista aqui no visual no vs code aparece uma lista com tudo que tá disponível dentro dele pra gente usar Então tudo isso aqui tá disponível esses cubinhos na cor violeta são todosos métodos funções internas que estão disponíveis por exemplo temos uma função sqrt que é a raiz quadrada então eu posso ou digitar ou clicar aqui Abrir parêntese e colocar aqui dentro um número pro qual eu quero calcular raiz quadrada por exemplo qual a raiz quadrada de 81 se eu rodar o programa ele vai mostrar aqui
embaixo para mim que é 9.0 ele retorna um número do tipo ponto flutuante certo calcular raiz quadrada na mão Você montar seu próprio algoritmo é bastante complicado mas você não precisa fazer isso importe o módulo que ten a funcionalidade E aí é só utilizar a função que tá lá dentro veja que nesse caso eu importei o módulo em si aí eu preciso Sempre escrever o nome do módulo aqui seguido do nome da funcionalidade que eu quero se eu quiser eu posso importar apenas uma função específica uma constante um método específico para isso a gente usa
a palavra from no Import então eu poderia fazer o seguinte em vez de Import math eu poderia fazer assim from math Import E aí eu ponho um nome específico que eu preciso no caso sqrt aí que que acontece aqui eu tô importando desse módulo MEF somente a funcionalidade de raiz quadrada as outras não estarão disponíveis tá então importei só essa eh E se eu quiser importar mais vírgula e importo outras por exemplo eu preciso da funcionalidade de cálculo de seno na minha aplicação trigonometria então sim é o nome dela seno e aí eu consigo usar
na aplicação mas veja só ao fazer isso o vs code já reclamou de alguma coisa aqui em cima da palavra math então colocando o mouse em cima ele diz assim math is not defined meth não está definido por quê Porque ao importar só uma função você não importou o módulo então o nome do módulo não é conhecido aqui você pode apagar esse módulo nome daqui Apagar o ponto e deixar só o nome da função e aí rodando ele vai funcionar normalmente certo então é uma outra forma de você fazer esse Import trazer para demra su
aplicação funcionalidades extras e uma outra coisa que você pode fazer é o seguinte eu quero importar todas as funções do módulo de uma vez e não ter que usar o nome do módulo toda vez que eu for acessar as funções nesse caso você usa o Import Universal como é que funciona from nome do módulo Import em vez de escrever o nome dos itens que você quer você põe um asterisco importou tudo vai continuar funcionando da mesma forma olha só só que não é muito recomendado você trabalhar com porte Universal desta forma por quê como todos
os constituintes do módulo são incorporados de uma vez só no Script existe a possibilidade da gente ter variáveis funções classes em algum outro módulo que foi importado que tem os mesmos nomes de algum constituinte dessa biblioteca por exemplo eu poderia ter uma função sqrt em um outro módulo que eu importei para cá E aí isso vai causar conflito então a gente recomenda usar esse importe Universal com bastante cautela é é prefer sempre usar importes genéricos ou de funções específicas porque aí você tem mais controle sobre os nomes dos itens que estão sendo usados dentro da
sua aplicação outra coisa que eu posso fazer também é utilizar AAS ou nomes alternativos que é algo bem interessante vamos supor que eu quisesse importar aqui esse módulo math então Import math Só que eu não quero usar como MEF eu quero usar como M só a letrinha M então eu coloco S M E aí ao chamar a funcionalidade basta escrever M pontinho e o Python já reconhece que esse M se refere a esse meth então isso aqui é importante Porque alguns módulos tem um nome grande você não quer ficar repetindo esse nome inúmeras vezes no
código então você dá um apilido Zinho para ele e acabou tá vamos rodar isso aqui para ver se funciona vou colocar um número diferente aqui 1 44 vou rodar ó lá 12.0 ra quadrada então isso que é um alas ou apelido ou nome alternativo que você pode dar pro módulo quando você o importa E além disso a gente também pode trabalhar com módulos que a gente mesmo criou e eu vou mostrar um exemplo disso agora eu tenho aqui nos meus arquivos esse arquivo mod_proxy.so funções a gente ainda vai ter a aula sobre funções aqui no
curso não se preocupe com isso mas eu vou usar esse módulo que já tem as funções definidas uma função que exibe uma mensagem uma função que calcula o fatorial de um número fornecido e uma função que retorna uma lista de série de Fibonacci que são funções Matemáticas e a função de Fibonacci é o fibo a função do fatorial é fatorial e a função de mensagem é mensagem esses são os nomes das funções que eu tenho aqui dentro desse módulo mod_ssl.so Import mod F MF agora vou fazer o seguinte ó olha essa instrução nova if espaço
und und name und und espaço igual igual espaço abro o aspa E aí de novo und Main e fecho com und dois pontos e Enter veja que cursor ficou indentado que que é essa instrução que eu fiz aqui esse ifname igual a m Isso é uma instrução condicional usada para controlar o fluxo de execução do código ela verifica se uma variável especial interna do Python chamada name é igual a esse valor Main se for o bloco de código que a gente colocou aqui vai ser executado senão ele é ignorado para que que serve isso o
name é uma variável que tem o nome do módulo atual então o nome desse módulo que a gente tá rodando quando o módulo é executado como se ele fosse o programa principal o valor de name é definido como Main quando o módulo é importado como a gente tá fazendo aqui em cima com esse mod funk e o nome do módulo o valor do name é definido como o nome do módulo e para que que serve isso é para evitar que partes do código sejam executadas quando a gente importa o módulo por exemplo o módulo ele
poderia ter uma função Main específica dele usada para iniciar alguma rotina E aí usando esse ifname igual m a gente vai conseguir evitar que essa função não seja executada antes da hora ela só vai ser executado quando o módulo foi executado como programa principal Então essa é uma convenção útil Então a gente vai usar isso aqui bastante e eu vou entrar em mais detalhes sobre o funcionamento disso um pouquinho mais paraa frente mas a princípio imagine-se ifname igual mame como ponto de início do programa o programa começa a rodar a partir daqui independente do que
você tiver antes certo beleza que que eu vou fazer nesse ifname igual M eu vou chamar minha função MF pon mensagem olha só fatorial FIB mensagem aquelas funções que eu mesmo defini no meu próprio módulo elas já aparecem aqui listadas aí é só a gente chamar a mensagem por exemplo vou pedir pro usuário digitar um número para calcular o fatorial e fazer uma sequência de Fibonacci então número igual int input lembra-se que eu tenho que tenho que converter para inteiro o valor do input digite um número inteiro positivo Beleza agora fatorial do número como é
que a gente vai calcular esse fatorial vou escrever aqui print F string e a gente vai escrever barra n para pular a linha calcular fatorial do número beleza e aí o fatorial vai vai ser gravado na variável fat que eu tô criando agora essa variável vai receber o Retorno lá do meu módulo MF chamando a função fatorial e para ela eu passo como argumento o número que o usuário digitou cuidado aqui para não se perder o que eu tô fazendo é acessar essa função fatorial que tá programada dentro do módulo mod funk passando para ela
o valor que o que o usuário digitou o número essa função vai calcular o fatorial do número que é o número vezes o antecessor vezes o antecessor vezes o antecessor até chegar em um e vai gravar esse valor na variável fat E aí eu posso imprimir na tela na sequência o fatorial do número tá Então qual que é o fatorial desse número F é o fatorial é aí eu coloco aqui o fat beleza aí eu vou fazer a mesma coisa pro Fibonacci vou copiar esse código todo aqui malinha E aí eu vou trocar para Fibonacci
é na verdade calcular sequência de Fibonacci essa sequência é uma sequência de números especial tá que vai ser calculada até o valor que o usuário forneceu e a função que a gente usa é o fibo que é o nome que eu dei lá dentro do módulo tá e a variável que vai receber essa esse Fibonacci é o FIB E aí eu mando imprimir na tela a sequência toda sequência na verdade vai ser uma lista certo tá pronto então agora vamos testar para ver se a gente consegue usar o módulo que eu mesmo criei eu vou
rodar o programa aí ele pede para mim aqui digite o número inteiro vamos supor oito enter calcular calcular o fatorial do número fatorial de 8 é 40.320 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 dá isso aí e o Fibonacci até chegar em o é 1 1 2 3 5 8 F bonate é assim o número é sempre a soma dos dois antecessores então 1 + 1 dá 2 2 + 1 dá 3 3 + 2 dá 5 5 + 3 dá 8 perfeito a gente conseguiu usar tranquilamente
as funções dentro daquele outro módulo que eu mesmo criei Nesta aula vimos Como trabalhar com imports vários tipos de imports Como trabalhar com módulos internos do Python como o caso módulo MEF Como trabalhar com módulos que a gente mesmo cria importando as funções e como usar o PIP para instalar novos módulos novos PES no sistema desinstalar fazer atualização essas coisas todas Ah só uma coisinha que ficou faltando deixa eu abrir aqui de novo o meu prompt de comandos vamos dar de novo esse comando aqui pi Men M PIP list para listar os pacotes que a
gente tem instalados bom matplot li a gente instalou veja que ele instalou também um pacote chamado npai que é uma dependência do matplot Lib matplot Lib precisa disso para funcionar mas o pacote num pai por si só só ele é um pacote extremamente importante porque é o numerical Python um pacote pra computação numérica e científica que o Python disponibiliza muito usado para trabalhar com álgebra linear por exemplo matrizes etc Esse pacote por estar instalado no sistema eu consigo importar aqui então por exemplo eu poderia fazer isso Import nump as geralmente a gente usa np para
representar o num p e ele tá disponível aqui dentro da minha aplicação Tá eu vou comentar isso aqui tudo contar C E aqui embaixo eu vou simplesmente utilizar esse pacotinho olha só que interessante eu vou criar uma variável l e vou dizer que ela é um NP pon e aqui já aparece toda a lista de itens do do nosso nump eu quero o NP Array Cadê ele aqui NP Array E aí aqui dentro eu passo uma lista de números dentro de de colchetes por exemplo 1 2 3 4 5 6 7 8 nove e depois
eu eu mando simplesmente imprimir essa lista toda certo então quando eu executar isso daqui deixa eu colocar aqui para cima limpar aqui o meu terminal executar é que ele deu um erro porque eu coloquei duas vírgulas né na pressa de digitar rápido Botei uma vírgula aqui Esqueci de colocar o set agora vou rodar de novo e aqui embaixo agora apareceu direitinho a minha lista beleza tá lá lista criada utilizando esse módulo que eu instalei o pacote instalado a partir da internet Tranquilo então a gente pode usar pacotes de várias formas agora com esse poder de
poder usar novos pacotes a gente vai poder escrever aplicações Python bem mais interessantes e bem mais complexas a partir das próximas lições Vamos aprender agora a trabalhar com números aleatórios no Python a gente consegue gerar números aleat aleatórios do Python utilizando um módulo chamado módulo Random que possui várias funções paraa geração de números aleatórios tanto inteiros quanto de ponto flutuante e pode operar sobre sequências como por exemplo listas para a gente trabalhar com os números aleatórios vou criar um novo projetinho com um novo arquivo que eu vou chamar de aleatórios ppy tá criado aqui deixa
eu fechar o Explorer o número aleatório é um número que é criado automaticamente pelo programa o próprio script vai criar esse número você não tem como saber qual é esse número e você vai utilizar esse número em determinados contextos por exemplo você pode utilizar números aleatórios em programas de segurança você pode utilizar em jogos de modo que os números aleatórios são bastante úteis em programação em geral e estão disponíveis em outras linguagens evidentemente além do Python como é que a gente trabalha com um número aleatório Vamos criar um número Zinho aleatório para começar bem simples
e para isso a gente importa o módulo Random que significa aleatório em inglês tá beleza importamos o Random E aí a gente vai criar uma variável vou chamar de valor essa variável vai receber o número aleatório que vai ser gerado para isso eu vou chamar o Random ponto e aí a gente tem a lista de tudo que tá disponível dentro desse randoms métodos todos eles o que eu quero nesse momento é o método Range int que vai ser utilizado pra gente gerar um número aleatório inteiro e aí esse método ele vai receber e dois parâmetros
um número inteiro e outro número inteiro e retorna O número inteiro os os números inteiros que a gente vai colocar aqui dentro dos parênteses indicam a faixa de valores sobre as quais o número vai ser gerado por exemplo eu quero gerar número relatório entre 1 e 20 então eu coloco 1,20 será gerado um número a aleatório qualquer você não tem como adivinhar Qual é o número entre 1 e 20 e aí a gente pode na sequência imprimir na tela esse valor print valor vamos executar pra gente ver rodando tá lá foi gerado o número quatro
aleatório se eu rodar de novo é gerado outro número olha só sete se eu rodar de novo dois se eu rodar de novo dois outra vez se eu rodar de novo quatro e assim por diante toda vez que eu rodar ele vai gerar um número distinto que você não tem como saber qual que é certo então isso é um número aleatório no caso número aleatório inteiro vamos supor por exemplo que eu quisesse gerar vários números aleatórios de uma vez posso utilizar esse módulo Random em conjunto com o laço for vamos fazer isso vamos supor que
eu queira gerar cinco números aleatórios entre 1 e 50 como é que a gente faz mantemos o Import E aí eu vou apagar tudo isso que tá aqui e vou colocar uma mensagem print gerar cinco números aleatórios entre 1,50 beleza barra n bom como é que a gente faz para gerar vários meus aleatórios eu vou utilizar a função Random P Range int mas como são cinco eu vou rodar cinco vezes essa função se eu vou rodar cinco vezes a função Eu tenho um laço de repetição então eu vou fazer um for vou usar uma variável
contadora que chamar de i é bastante comum a gente usar o nome I para variáveis contadoras in E aí eu vou usar a função Range para determinar quantas vezes vai rodar esse meu laço eu quero que ele Rode cinco vezes então eu posso colocar simplesmente o número cinco aqui dentro beleza dois pontos enter E aí eu vou usar uma variável n que vai receber o retorno de Random P Range int e dentro dos parênteses você já já sabe é limite inferior e limite superior de 1 a 50 Então vai gerar o número entre 1 e
50 guardar na variável N E aí eu vou mandar imprimir na tela este número print vou usar uma f string e a gente vai fazer da seguinte forma n número gerado e o número que tá dentro da variável n beleza veja que vai ser gerado um número aleatório impresso na tela mas como o laço for vai rodar cinco vezes isso aqui vai acontecer cinco vezes portanto eu terei cinco números aqui no final vamos limpar o terminal subir aqui um pouquinho e executar o programinha então número gerado 32 3 35 43 E 33 cinco números entre
1 e 50 se eu rodar de novo 3 3 11 33 50 veja que às vezes o número pode vir repetido porque ele é aleatório não tem como prever Qual o número que vai vir certo mas entre 1 e 50 que ap inclusive o 50 aqui Beleza então assim que a gente gera números inteiros aleatórios eu também posso gerar números de ponto flutuante float aleatórios os números quebrados para isso eu vou usar um outro método do módulo Random que é que é o método Random mesmo nome Random P Random Então deixa eu comentar isso aqui
tudo cont contrl k c e agora a gente vai criar um um número aleatório de ponto flutuante como é que a gente faz isto bom vou fazer o seguinte valor igual Random ponto Random dessa vez é Random P Random e este método em particular ele não aceita nenhum argumento você não vai escrever nada aqui dentro simplesmente gera o número e joga para cá tá ele vai gerar sempre um número aleatório entre 0 e 1 Se eu mandar imprimir esse valor vejamos o que que eu tenho aqui ó girou este numão aqui ó 0.74 ess monte
de casas decimais se eu rodar de novo ele gera um outro totalmente diferente certo então entre o número entre zero e 1 Se eu precisar ajustar o intervalo vamos supor que eu quisesse na verdade um número de ponto flutuante entre 0 e 10 como é que eu faço nesse caso basta a gente fazer o seguinte vou trabalhar com f string E aí a gente vai fazer assim número gerado E aí aqui dentro das chaves a gente simplesmente multiplica o valor por 10 só isso isso aqui é um ajuste é como se fosse um ajuste de
escala se ele tá gerando entre 0 e 1 eu desloco isso para zer entre 0 e 10 multiplicando por 10 e aí se eu executar Olha só número gerado 9.96 e tudo isso rodou de novo 0.60 rodou de novo 7.76 legal 3.64 e assim por diante então a gente gerou um número aleatório em uma outra escala E aí você pode fazer a mesma coisa multiplicando por outros valores Então essa aqui esse aqui é a jogadinha o esqueminha que você faz para gerar os números aleatórios numa faixa diferente se forem de ponto flutuante agora eles vêm
com um monte de casas decimais talvez você não queira todas elas então o que que você pode fazer para melhorar você pode arredondar esse valor também para arredondar você vai fazer o seguinte você vai usar aqui dentro uma função chamada round que uma função buil team interna do Python não precisa importar nada para usar o round você só vai fazer o seguinte vai colocar o valor vezes 10 dentro desses parênteses do round Ele vai arredondar isso aqui arredondar para quanto para quantas casas decimais você quiser E para isso depois do número 10 você põe uma
vírgula e especifica quantas casas você quer por exemplo duas casas decimais então a função round ela vai pegar esse primeiro valor que vem antes da vírgula que pode ser só só o valor ou pode ser um cálculo pode ser uma fórmula o que você colocar aí esse valor ele vai ser arredondado para até duas casas decimais Então nesse caso se eu rodar a aplicação 2.68 5.35 8.64 toda vez que eu executo vem um número diferente com duas casas decimais uma outra forma da gente gerar números aleatórios de ponto flutuante é usando uma outra função um
outro método que é o método uniform também do Modulo Random e aqui nesse caso a gente vai conseguir estabelecer o valor de início e de fim tá então vou comentar esse aqui e vou fazer esse outro exemplo Então vamos lá valor recebe Random ponto uniform Olha que legal e agora eu consigo especificar o início e o fim por exemplo um número entre 1 e 100 Vamos colocar aqui 1 V 100 então será gerado o número é aleatório entre um e 100 porém um número de ponto flutuante Vamos dar um print F um print aliás E
aí eu vou criar uma f string e vou escrever assim número dois pontos e o valor gerado Então vamos ver o que que ele vai gerar aqui para nós deixa eu limpar o terminal rodando ó lá gerou esse número aqui ó 4472 veja que nesse caso eu não preciso fazer aquele ajuste com a multiplicação como a gente fez com o método Random ele já gera direto entre 1 e 100 mas você vai ter que que arredondar se você precisar aí para arredondar você já sabe round abre parêntese coloca o valor dentro dos parênteses vírgula e
o número de casas que você quer vamos supor que eu precise de quatro casas decimais boto o número quatro aqui agora ao Executar a gente tem isso ó 16.549 e cada vez que você executar vem um numerozinho diferente muito legal né que mais que a gente pode fazer com esse módulo Random deixa eu comentar isso aqui a gente também pode ter uma lista de valores previamente criada e gerar um número A partir dessa lista na verdade selecionar ou sortear um valor de dentro dessa lista ou seja em vez de ser intervalo numérico fixo a gente
pode ter uma lista com valores distintos como é que a gente faz isso vou criar uma lista vou chamar de L essa lista aqui dentro eu vou colocar um monte de valores numéricos vamos lá 2 4 6 9 eh 10 Vou encher de números aqui a gente vai fazer um sorteio do valor dessa lista e os valores não precisam estar em ordem tô colocando em ordem aqui só porque é mais fácil então criei uma lista veja que eu usei colchetes notação de lista tá então isso é um objeto na memória que tem todos esses números
armazenados lá dentro individuais e aí a gente vai criar uma variável n por exemplo eu vou chamar Random ponto e qual que é o método que eu vou usar Choice que que é Choice em português escolha então o módulo R vai escolher um número de dentro dessa lista eu preciso passar a lista como argumento dentro dos parênteses Então dentro de n vai ter um dos números dessa lista qual deles não sei é aleatório E aí a gente vai chamar então com print e vou mandar escrever na tela número extraído ou escolhido é melhor extraído D
impressão de que o número foi retirado de lá número escolhido tá na variável n Então vamos ver vou executar isso aqui subi o código subi terminal bonitinho rodou número escolhido 14 14 tá na minha lista tá vendo se eu rodar de novo 2 do novo 21 21 também tá lá 16 também tá lá ou seja ele pega um número qualquer daquela lista a e não tem como você prever qual é este número certinho uma outra coisa que a gente pode fazer é extrair Vários valores de uma vez de dentro dessa lista em vez de pegar
somente um valor para isso a gente usa o método sample tá deixa eu comentar isso aqui tudo então o método sample como é que vai ser aliás eu não vou comentar a lista porque a lista eu vou continuar o usando deixa ela aqui quietinha Então o que eu vou fazer é o seguinte agora eu vou criar minha variável n e ela vai ser um Random P sample que é amostra tá amostragem que que vai fazer essa função ela vai receber a lista de valores vírgula E aí aqui eu vou colocar quantos valores eu quero por
exemplo eu quero três valores dessa lista então a variável n será uma outra lista tá que vai receber três itens retirados aleatoriamente de dentro dessa lista grandona aqui aí a gente pode escrever na tela números extraídos deixa eu copiar esse comando aqui números escolhidos ou extraídos aí é só colocar a variável n executando ele vai mostrar para mim olha só três itens na forma de uma lista ele traz os colchetes inclusive depois com um laço fora você consegue iterar sobre eles a gente ainda vai estudar listas com bastante detalhes aqui no curso Então mas tá
aí extraímos os três valores de uma só vez e finalmente que mais que a gente pode fazer para encerrar a gente pode fazer o seguinte a gente pode embaralhar os elementos da da sequência veja que aqui os elementos estão todos em ordem mas se eu quisesse embaralhar-se existe também uma função então eu vou eu vou comentar isso aqui e agora aqui embaixo eu vou colocar um comentário do tipo assim embaralhar então primeiro eu vou Exibir a lista original print Exibir a lista original tá e vou exibir aqui mesmo L certo então aqui vai aparecer a
lista original vamos ver rodou tá aí a lista original tá aqui na mesma ordem que eu coloquei os dados agora vamos em embaralhar a lista Então vou usar um out print embaralhar a lista e exibir lá agora o que a gente vai fazer é o seguinte eu vou criar uma lista nova e essa lista será o Random P shuffle Esse é o método que você vai usar shuffle embaralhar ele recebe a minha lista original como argumento E aí É só imprimir a lista mandei só um print L aqui agora eu vou executar tá lá Exibir
a lista original é essa daqui embaralhar a lista e exibi-la tá aqui embaixo são exatamente os mesmos elementos mas numa ordem aleatória se eu executar de novo a lista vem numa ordem diferente ó comparece a lista de cima e essa de baixo são os mesmos elementos mas numa ordem totalmente diferente então é o embaralhamento aleatório que ocorre aqui legal então Nesta aula vimos Como trabalhar com números aleatórios e o módulo Random em Python agora vamos dar início ao estudo das sequências em Python um assunto extremamente importante nessa linguagem e a gente vai começar falando sobre
listas Vamos criar um arquivo novo paraa gente trabalhar com as listas e falar um pouco mais sobre as sequências então listas ppy as sequências são estruturas de dados que permitem armazenar vários dados de uma vez dentro de uma única variável na memória são bastante similares ao que a gente encontra em outras linguagens e a gente chama por exemplo de arrays ou matrizes etc existem vários tipos de sequências em Python agora nesse momento vamos estudar as listas que são o tipo de sequência mais comum outros tipos de sequências que existem são as tuplas os dicionários os
conjuntos ou sets e as próprias Strings também são sequências bom o que que é uma lista uma lista ela representa uma sequência de valores armazenados na memória uma sequência de propósito geral eh que pode aumentar e diminuir de tamanho conforme necessidade e ela vai suportar diferentes tipos de dados no mesmo objeto isso é importante é interessante como é que a gente cria uma lista no Python a gente já viu isso anteriormente eh mas não de forma formal Como eu vou mostrar agora a sintasse para você criar uma lista ou seja sintaxe a forma correta de
escrever é assim nome da lista recebe e dentro de colchetes os valores da lista separados por vírgulas e você pode criar uma lista vazia não fornecendo nenhum valor dentro dos colchetes então vejamos O primeiro exemplo vamos supor que eu vou criar uma lista de notas e essa lista vai ter cinco notas Então abre o colchete E aí eu coloco os valores numéricos ali dentro 5 7 8 6 9 por exemplo os valores todos separados por vírgulas os valores podem ser de quaisquer tipos número inteiro ponto flutuante string bolean o que você precisar inclusive outras listas
tá E aí eu vou dar um print pra gente ver o que nós temos nessa lista na saída tá então print notas vamos executar tá aqui embaixo o resultado 57 869 veja que vem dentro de colchetes indicando que se trata de uma lista cada item dentro dessa lista pode ser acessado individualmente por meio de um número de índice como um Array por exemplo sendo que o primeiro item é sempre o item de índice zero depois índice 1 2 3 e assim sucessivamente Então conta sempre a partir do primeiro item zero de modo que uma lista
com cinco itens por exemplo tem como último item o item de índice quatro porque começa a contar em Zero Isso é importante na hora da gente criar algoritmos que façam por exemplo iteração nessa lista as listas elas podem ser concatenadas então por exemplo Vamos criar aqui uma outra lista eu vou apagar essa lista de notas e vou criar uma lista chamada N1 com números também vamos supor 4 6 7 8 0 e 3 e uma lista n2 também composta por números números diferentes 1 6 3 0 12 e 4 tanto faz o tamanho da lista
E aí eu posso criar uma lista de valores que a concatenação dessas duas listas concatenar é juntar as listas então N1 + n2 Esse comando não vai somar os valores individuais da lista ele vai juntar esses valores em uma nova lista e aí a gente pode dar um print nesses valores para ver na tela quando Executar a lista completa as duas listas agora foram Unidas em uma nova lista se a gente der um print Type valores el Esse comando Você lembra que ele diz o tipo daquele objeto e nesse caso a classe é list Então
temos uma lista um objeto interno do Python deixa eu apagar esse Type valores e vou apagar esse print valores também como é que a gente acessa um elemento específico da lista pelo número de índice desse valor então por exemplo vamos supor que eu quero acessar somente o primeiro item da lista de valores então eu posso fazer print valores e aí dentro de colchetes a gente vai colocar o número do índice que a gente quer acessar por exemplo o índice Zero Isso aqui significa primeiro valor da lista quando eu executo aparece lá número quatro que é
o primeiro item aqui lembre-se que essa lista aqui é a concatenação das duas anteriores então começa em quatro e termina em quatro também qualquer outra posição a gente só tem que colocar o número de índice e a a gente consegue acessar o sexto o sexto valor seria o número um lembre que começa a contar em zero tá uma coisa legal que a gente pode fazer a gente pode acessar ao contrário a lista a gente pode acessar o último item da lista colocando o valor negativo dentro dos colchetes Então os1 significa o último item que vai
ser quatro também como a gente viu aqui olha só quatro eu vou mudar esse valor aqui para ficar mais fácil de enxergar vamos supor que fosse 11 aqui então quando eu executo o último valor é 11 o penúltimo valor Aí você faz -2 então vai aparecer esse valor 12 aqui executando valor 12 12 e assim sucessivamente então o sinal de menos faz com que você acesse os valores do final pro começo Então você tem as duas opções do começo pro final do final pro começo e ela começa em zero sempre a gente também consegue alterar
valores da lista atribuindo um novo valor a uma posição específica por exemplo vamos supor que eu queira alterar o primeiro valor que é 4ro nessa minha lista de valores então basta que você acesse a lista de valores e especifique a posição por exemplo posição zero e a atribua um novo valor vamos supor o valor 9 beleza aí quando eu acessar e mandar imprimir na tela o que tem nessa posição Olha o que que vai aparecer valor nove foi alterado o valor da primeira posição da minha lista então bem simples é só atribuir o valor como
se fosse uma variável comum a única diferença tem que especificar o número da posição em listas a gente também consegue acessar valores sequenciais utilizando uma operação chamada slicing como que é esse slicing Bom lá assim é mais ou menos o seguinte vamos supor que eu queira imprimir na tela não só o primeiro valor mas os valores de zero até 2 então eu escrevo zero que é o início da lista dois pontos do quando eu executo isso ele imprime dois valores o primeiro e o segundo Então esse comando aqui indica que eu tenho que eu quero
acessar ou no caso eu quero imprimir a partir do primeiro valor dois valores a partir da posição zero dois valores ou seja o primeiro e o segundo valores o nove e o se se você escrever aqui 0 do pontos e não especificar o último valor serão exibidos todos os valores ou acessados todos os valores da lista e a gente também pode fazer o inverso em vez de colocar o zero aqui colocar o número depois dos dois pontos por exemplo número 4 Isso aqui vai mostrar pra gente os quatro primeiros itens equivale a colocar o 0
2.4 se você não colocar nada aqui na frente dos dois pontos o Python entende que é para acessar a partir do início da lista se não colocar nada depois dos dois pontos pontos ele entende que é para acessar até o final da lista e a gente também pode fazer isso aqui a partir de valores intermediários por exemplo do valor 3 até 3 que que ele faz aqui vazio Por que vazio porque nesse caso eu mandei a partir da posição TRS acessar o terceiro elemento só que o terceiro elemento não conta o próprio número que tá
aqui não conta é até ele men1 sempre então se eu colocar aqui quatro agora ele vai mostrar para mim o valor oito que por acaso é o valor 0 1 2 3 da lista tá então isso é importante ter em mente quando a gente trabalhar com esse esquema de slicing a partir da posição 3 até a posição 4 só que a própria posição 4 não entraria na lista então 0 1 2 3 lembra-se que sempre começa a contar de zero as posições dentro da minha lista Aí você pode experimentar outras combinações e você também pode
fazer do final pro começo por exemplo poderia dizer a partir do penúltimo elemento Men do dois pontos e nada depois nesse caso ele vai mostrar os dois últimos elementos do penúltimo elemento até o final da minha lista Então a partir do penúltimo até o final da minha lista várias opções de slicing muito bem vamos limpar aqui o terminal e trabalhar com algumas outras coisas relativas a listas Existem várias funções que a gente pode usar para manipular as listas por exemplo quero saber quantos elementos eu tenho numa lista então eu uso a função len significa length
comprimento em inglês e aí é só passar para essa função o nome da lista passando o nome da lista ele vai imprimir na tela a quantidade de elementos que eu tenho nessa lista que no caso são 12 elementos juntando as duas listas aqui temos 12 elementos é o comprimento da lista a gente também pode usar uma função chamada sorted colocar aqui na linha de baixo sorted essa função sorted ela vai retornar uma versão ordenada da lista sem modificar a lista em si então quando eu executo aparecem todos os valores da minha lista em ordem crescente
Olha que legal a lista não foi modificada ela continua com os valores na mesma ordem em que eu coloquei dentro dessa lista eu também posso mandar ele exibi os valores na ordem inversa Bastando para isso aqui dentro desses valores colocar uma vírgula e usar o parâmetro reverse igual true E aí neste caso quando eu mando Exibir a lista vem ao contrário do maior pro menor valores veja que quando eu tenho valores repetidos eles aparecem repetidos aqui que mais que eu posso fazer com listas posso somar os valores tá então eu posso deixa eu copiar de
novo isso aqui eu posso usar uma função chamada su de soma em inglês que vai somar todos os valores da minha lista E aí qual o somatório 66 Então olha só eu não preciso nem usar um laço de repetição para saber qual que é o valor acumulado da minha lista É só usar a função Sam e direto eu tenho esse valor e da mesma forma eu posso encontrar o valor mínimo com minim e o valor máximo com Max da minha lista também não preciso criar nenhum tipo de algoritmo específico para descobrir qual é o valor
mínimo qual o valor máximo só exibir min Max e ele vai falar que o min é zero e o Max é igual a 12 vou comentar isso aqui tudo agora até esses valores aqui inclusive cont contr KC beleza existem alguns métodos que a gente pode fazer para manipular os dados da lista Aí sim alterando o conteúdo da lista um dos métodos mais importantes é o método append que funciona assim ó valores. append esse método é usado para você inserir um novo elemento na lista no final da lista Então vou acrescentar um novo elemento à lista
por exemplo quero acrescentar o valor 13 a essa lista então valores pon append 13 depois eu dou um print na minha lista completa pra gente ver o que que tá lá dentro quando eu executo aparece a lista e olha o último valor agora 13 eu acrescentei um valor dentro dessa lista se eu quiser tirar um elemento do final da lista Eu também consigo para isso existe o método pop então quando eu executo valores. Pop sem especificar nada o último elemento da lista ele será removido então se eu dar um der um print valores agora olha
que interessante o valor foi inserido tá aqui o 13 e depois com o pop ele foi retirado E cada vez que você fizer o pop o último elemento da lista vai ser retirado então se você colocar isso num laço de repetição você pode ir sacando esses valores um a um nesta ordem e o método pop também permite tirar um elemento do meio da lista ou de uma posição qualquer da lista Como vamos fazer um exemplo basta colocar dentro do pop o número da posição por exemplo eu quero tirar o elemento que tá na posição TRS
executo perceba que o elemento da posição 3 sumiu qual que é esse elemento 0 1 2 3 esse número oito aqui ó na instrução seguinte ele sumiu e a lista foi deslocada tem um elemento a menos agora e o inverso também é possível posso inserir um elemento em uma posição específica para isso eu uso o método insert valores P insert esse método aqui ele tem dois argumentos primeiro argumento é o número da posi onde eu vou inserir o item por exemplo na posição TR vírgula E aí o valor que eu quero colocar naquela posição por
exemplo eu quero colocar o valor 21 ali tá depois eu posso dar um print valores pra gente verificar o que aconteceu vamos ver o que acontece rodando ó lá o 21 foi inserido naquela posição e empurrou pra frente todos os demais veja que isso é diferente de você simplesmente atribuir um valor àquela posição porque a atribuição ela substitui o valor que estava antes na lista já o método insert ele coloca o valor e empurra todo o resto pra frente sem trocar nenhum valor e finalmente a gente tem um operador in que a gente já viu
também anteriormente que permite verificar se existe um valor dentro da lista então eu posso por exemplo dar um print 12 pode ser o 12 12 em valores é uma pergunta na verdade né o valor 12 está dentro da lista de valores sim ou não quando eu executo ele me diz true esse valor existe dentro da lista isso é bastante útil como você deve imaginar vamos supor que eu procure o valor 17 17 está dentro de valores false esse valor não existe dentro dessa lista de itens aqui lembrando que se eu tô trabalhando aqui com números
Mas podem ser quaisquer tipos de dados aqui poderia estar trabalhando com números de ponto flutuante com com textos e assim por diante bom a gente consegue fazer iteração sobre a lista usando laço for então agora vamos combinar listas com laço for for eu vou comentar isso aqui tudo porque eu vou criar uma outra lista diferente pra gente trabalhar com isso Beleza eu vou criar uma lista agora de Strings de textos eu vou chamar essa lista de planetas eu vou criar uma lista com nomes de planetas para isso é só você abrir os colchetes aqui e
colocar os dados ali dentro lembre-se se eu executar o comando do jeito que está aqui eu crio uma lista vazia que depois eu posso preencher usando o método pon append e uma outra forma da gente criar uma lista vazia também é usando a função list desta forma isso aqui também cria uma lista vazia certo então fica seu critério como você vai usar aqui eu vou criar lista e já vou colocar os valores aqui dentro então eu vou colocar os nomes de alguns planetas aqui como são Strings lem entre aspas então Mercúrio vírgula Vênus que mais
que eu vou colocar aqui Marte não vou colocar todo vou colocar a maioria [Música] Saturno colocar mais Urano e Netuno tá bom temos alguns dados aqui nessa lista de Strings E aí usando um laço for eu vou fazer uma iteração nessa lista eu vou dizer assim for planeta em lista de planetas Isso é uma variável de iteração Essa é minha lista então para cada planeta dentro da lista de planetas print e aí eu vou mandar imprimir na tela o nome do planeta então planeta simplesmente isso então quando eu executo isso deixa eu subir aqui um
pouquinho ele vai mostrar a lista dos planetas para mim aqui embaixo Mercúrio Vênus mar Saturno Urano e Netuno bem tranquilo fazer a iteração aí eu poderia evidentemente executar outros tipos de processamento em cima de cada um desses itens trabalhar com as Strings montar mensagem se forem números fazer cálculos e assim por diante existem outras formas de iterar sobre os elementos da lista por exemplo usando compreensão de lista ou ainda a função enumerate isso a gente vai estudar um pouquinho mais paraa frente porque é um pouquinho mais avançado por enquanto laço for vai dar conta beleza
Bom basicamente é isso que a gente tem para ver sobre listas até esse ponto aqui do nosso curso é suficiente pra gente conseguir e prosseguir e criar programas mais complexos tem muitos outros métodos sobre listas que você pode aprender a utilizar estão na documentação oficial do py e a documentação você pode acessar no doc.python.org como aparece aqui na tela Vamos fazer um exercicio Zinho então para finalizar crie um script que peça para o usuário digitar o nome de cinco bebidas favoritas dele armazenando esses valores em uma lista na sequência exiba na tela os elementos da
lista em ordem alfabética um por linha usando laço de repetição for bom você pode tentar fazer esse exercício pausar o vídeo e tentar criar o algoritmo e depois voltar aqui para ver uma resolução sugerida bom vejamos uma resolução sugerida vou comentar isso aqui tudo e aí a gente vai criar esse algoritmo Zinho se eu vou armazenar os nomes das bebidas numa lista então eu vou criar uma lista eu vou chamar de bebidas e essa lista vai ser vazia então eu abro e fecho os colchetes Por que vazio porque eu não sei quais são as bebidas
para colocar ali dentro é o usuário que vai fornecer depois então eu crio a lista vazia são cinco bebidas então eu vou criar um laço for que Execute cinco vezes essa chamada eu vou usar uma variável iterador I in Range C porque são cinco vezes que vai rodar esse laço dois pontos e aí eu peço pro usuário usando uma função print digitar o nome das bebidas favoritas dele então digite uma bebida favorita e então uma variável chamada bebida vai receber o que o usuário digitou usando o input você poderia ter colocado essa mensagem aqui dentro
do input se desejasse E aí o que eu faço dentro da minha lista de bebidas eu vou usar o método ponto append para colocar o que tá nessa variável bebida e de novo é uma resolução sugerida eh dá para fazer isso de várias formas por exemplo você pode jogar esse input direto aqui dentro se você quiser faça testes A ideia é que você faça testes para ir treinando entendendo as variações do código bom isso aqui deve ser suficiente pra gente colocar as bebidas que o usuário digitou dentro dessa lista Aí eu vou classificar essas bebidas
em ordem alfabética porque isso foi pedido no enunciado para isso a gente pode usar bebidas psort este método aqui sort ele classifica e ordena o conteúdo da lista automaticamente então ele altera o conteúdo da lista deixando esse conteúdo em ordem crescente ou alfabética e depois disso a gente pode exibir na tela então print Vamos colocar mensagem aqui dá um barra n bebidas escolhidas aí a gente usa outro laço for for bebida inem bebidas veja que eu tô reaproveitando a variável bebida ela vai receber agora em cada iteração do laço for uma das bebidas que tá
nessa lista E aí eu mando escrever na tela a bebida uma embaixo da outra aí eu posso colocar uma firulinha fora do laço for print alguma coisa do tipo saúde tá aí o nosso código então vamos executar então e testar uma bebida favorita vamos supor suco de laranja outra bebida Coca Cola mais uma bebida cerveja mais uma água e para finalizar Vamos colocar aqui uma vóc pronto láb escolhidas cerveja coca-cola suco de laranja vodica e água veja que ele colocou água no final da lista por causa do acento na letra A ele entende que esse
acento vem depois da letra V tá então tá em ordem mas a água ficou no final por conta disto e a mensagem em saúde que tá fora do laço isso aqui a gente vai ver como arrumar e como trabalhar direitinho com com esse esquema de acentuação na aula de manipulação de Strings de funções de manipulação de Strings que a gente vai ter um pouquinho mais paraa frente tranquilo tá feito aí o nosso programinha trabalhando de forma básica com as listas em Python então a gente viu bastante coisa aqui é legal dar uma revisada consultar a
documentação fazer vários exemplos porque foi uma aula mais extensa e as listas tem bastante conteúdo para você estudar muito do que tá aqui a gente vai aproveitar para falar das tuplas na sequência e depois a gente vai ver outras sequências específicas do Python como os conjuntos os dicionários e as próprias Strings com seus métodos de manipulação Assim como as listas as tuplas também são uma estrutura de dados muito usada em Python Então vamos estudar as tuplas criando um novo arquinho que eu vou chamar de tuplas ppy e a gente vai falar sobre essa estrutura de
dados que na verdade é bastante parecida com as listas e as tupas permitem que você tenha vários dados armazenados dentro da mesma estrutura que esses dados sejam acessados por meio de números de índices começando em zero que você faça iteração sobre esses dados e aplique várias operações porém as tuplas tem uma diferença fundamental em relação às listas as tupas são imutáveis que que significa isso significa que o conteúdo de uma tupla não pode ser modificado depois que ela foi criada ou seja ela é como se fosse uma espécie de sequência de constantes para algumas operações
as tuplas são mais rápidas que as l por exemplo pra iteração em si e as tuplas podem conter também quaisquer tipos de dados mesmo tipos diferentes dentro da tupla porém a diferença fundamental como eu citei é que elas são imutáveis você não pode alterar o conteúdo da tupla depois da tupla ter sido criada como é que a gente cria a tupla a gente usa anotação de parênteses então por exemplo para criar uma tupla eu posso fazer assim minha tupla igual parênteses E aí você vem com a lista de elementos vamos supor números 2 4 6
7 9 então isso aqui é uma dupla se eu der um print na minha tupla a gente vai conseguir acessar e visualizar os elementos que estão dentro dela deixa eu executar aqui tá aqui a minha tupla 2 4 6 7 e 9 Se eu tentar alterar um desses elementos por exemplo dizendo que a tupla na posição 1 vai receber um valor diferente vamos supor C Olha o que que vai acontecer quando eu rodar o meu aplicativo ó erro ele vai dizer um ele vai mostrar um Type error erro de tipo e a mensagem de traceback
que aparece é que o objeto tupla não suporta atribuição de item Ou seja você não pode atribuir um item depois que a tupla foi criada Essa é a grande sacada vamos criar uma outra tupla pra gente fazer alguns exemplos rápidos como a tupla é muito parecida com a lista Fora esse detalhe A gente não precisa aprofundar tanto assim eu vou criar uma tupla vou chamara de halogênios que que são halogênios são um grupo específico de elementos da Tabela Periódica e vou colocar os símbolos desses elementos são são caracteres então então f de fluor CL de
cloro Vamos colocar alguns elementos e a gente vai trabalhar com essa tupin aqui e diodo e o at asato beleza temos aqui uma uma tupla dando um print nela a gente consegue e visualizar seu conteúdo na forma de tupla tá lá minha lista de elementos químicos que a gente pode fazer com essa tup a gente pode visualizar o tamanho dela o tamanho dela você já sabe é a função Len então se eu botar um Len aqui na frente dentro desse print mesmo e executar ele vai dizer Quantos elementos eu tenho nessa dupla tenho cinco elementos
no caso para acessar um elemento em particular basta que a gente passe o número do de sua posição dentro de colchetes Então vamos supor elemento TR quem é visualizando é o iodo letra i da mesma forma a gente pode usar numeração negativa para acessar por exemplo o último item ou penúltimo item assim por diante elemento menos é o at astato a gente também consegue concatenar as tuplas então Suponha que eu tenho uma outra tupla aqui chamada gases nobres Vamos criar essa tupla agora vou colocar alguns elementos Hélio neônio argônio xenônio criptônio e radônio legal E
aí eu consigo concatenar as duas tuplas vamos supor criando uma tupla chamada elementos como é que é a concatenação símbolo deais halogênios mais gases Nobre aí eu posso dar um print nesses elementos e a gente vai visualizar todo o conteúdo desta nova tupla olha só que tupla grandona aqui se eu tiver repetição de itens dentro da tupla eu consigo contar o número de ocorrências de um valor vamos supor que eu tenha aqui uma outra tupla que vou chamar de T1 e essa tupla tem valores numéricos então eu vou colocar alguns valores numéricos rapidinho legal e
alguns deles são repetidos eu quero saber quantas vezes aparece por exemplo o número cinco nessa tupla para isso eu vou usar o método count deixa eu colocar um número aqui que ficou faltando pronto então para isso basta a gente chamar nome da tupla ponto count E aí especificar dentro de parênteses qual valor eu quero contar Quantas vezes aparece o número cinco rodando diz que aparece três vezes então tá aqui ó uma duas e aqui no final três vezes quantas vezes aparece o número TR por exemplo rodando apenas uma vez só tem uma ocorrência desse valor
também funciona para Strings se você tiver Strings repetidas basta passar string aqui dentro entre aspas tá e a gente também consegue fazer slicing nessas duplas então de eu apagar essa duplinha aqui ou melhor vou comentar essa tupla aqui a gente consegue fazer slicing por exemplo eu quero imprimir daquela daquela minha tupla de halogênios os itens zero até dois então fluor e cloro a partir do início da lista até o elemento dois só que o elemento dois é excluído lembrem-se disso funciona da mesma forma com as listas posso fazer também por exemplo 2.3 né do começo
até o terceiro item excluindo o terceiro item elemento zero elemento 1 elemento 2 para no elemento três e posso fazer utilizando o índice negativo por exemplo -2 até o final nesse caso dois últimos itens iodo E astato então funciona de forma bastante similar à listas a gente tem algumas algumas operações que podem ser realizadas sobre tuplas por exemplo a gente pode utilizar o o operador in para verificar se um elemento está presente nas tuplas suponhamos isso aqui cloro está presente dentro de halogênios in halogênios é uma pergunta isso aqui e aí Isso aqui vai me
retornar true sim o cloro está lá e digamos o ferro está ali dentro fe falso não está certo então operador funciona de forma análoga também e temos operadores aritméticos que a gente pode usar Então vou descomentar essa tupla T1 e vou por exemplo somar todos os valores função sum Só passar a tupla E aí ao executar aparece o somatório 90 é o somatório desses números todos valor mínimo é o minim vai dizer qual o valor mínimo no caso é zero tem o zerinho aqui e o valor máximo é a função Max que vai me retornar
o valor 22 que é o valor mais alto que eu tenho na tupla ão bem similar à listas o que que eu não posso fazer com a tupla que eu posso fazer com a lista então operações não disponíveis em tuplas bom eu não consigo utilizar o método sort para classificar a tupla em loco ou seja dentro da própria tupla eu não posso usar o método append porque eu não posso anexar novos itens não posso mudar a tupla não posso usar o método por exemplo reverse para reverter a tupla não posso usar o método pop e
assim por diante todos os métodos que alteram o ú da tupla não estão disponíveis certo porque a tupla ela é imutável podemos realizar a iteração sobre a tupla usando o Lao for tranquilamente então a gente pode fazer alguma coisa mais ou menos assim for elemento em tupla de elementos print e aí a gente manda imprimir o elemento químico elemento químico e colocamos aqui dentro o elemento ao executar isso aqui temos ali os elementos químicos impressos um embaixo do outro todos eles da minha tupla então a interação também é bem similar bem tranquila que mais que
a gente consegue fazer a gente consegue criar uma lista a partir de uma tupla isso É bem interessante deixa eu comentar isso aqui cont KC comentado para criar uma lista a partir de uma tup a gente usa a função list por exemplo vamos supor que eu quero criar uma lista chamada grupo 17 que equivale ao grupo dos alog então basta chamar list e passar halogênios Beleza se eu der um print nesse grupo 17 que que a gente vai ter vai ter a lista com esses halogênios veja que é uma lista e a gente sabe disso
por causa dos coetes que aparecem aqui embaixo e aí por ser uma lista a gente consegue fazer alterações então por exemplo poderia aqui antes desse print dizer que o grupo 17 no seu item zero vai receber hidrogênio se eu imprimir o primeiro item foi alterado porque a lista ela é mutável e a tupla não a tupla é imutável e eu posso fazer o contrário também eu consigo criar uma tupla a partir de uma lista tá então deixa eu comentar aqui suponhamos que eu tenho uma lista assim alcalinos lista a gente queria com colchete então eu
vou colocar aqui os metais alcalinos lítio sódio potássio rubídio sésio e frâncio isso aqui é uma uma lista para criar uma tupla a partir dela vamos supor que eu quero criar a tupla grupo um ou melhor ao contrário vou chamar essa tupla de grupo um para manter o padrão com anterior e vou criar essa lista de grupo um e vou criar a tupa alcalinos atir dessa lista como é que eu faço isso existe uma função chamada tle com e no final basta a gente passar a lista para ela e pronto temos uma tupla criada aí
a gente pode imprimir essa tupla ou fazer qualquer outra coisa que a gente precise fazer com ela então quando eu executo vai aparecer aqui embaixo a minha tupla veja os parênteses denotando uma tupla Claro você sempre pode também na dúvida usar a função Type para verificar qual que é o tipo daquele objeto no caso Qual que é o tipo dos alcalinos fechar um parêntese aqui que faltou E aí quando eu executo ele vai falar classe dupla E aí Se eu tentar fazer alguma alteração aqui alcalinos vamos supor na posição zero eu quero atribuir o valor
H nesse caso quando eu executar vai dar aquele erro de eh objeto não suporta atribuição de item certo então essa operação aqui não é permitida para finalizar como é que a gente pode ordenar os elementos de uma tupla Bom na verdade a gente não pode né você não consegue alterar o conteúdo da tupla portanto você não vai conseguir alterar a ordem dos elementos dentro dela mas o que você pode fazer é criar uma nova tupla com os elementos de uma tupla classificados E para isso a gente usa a função sorted então eu poderia fazer o
seguinte print sorted e passar a tupla de alcalinos por exemplo para ela alcalinos poderia criar uma nova tupla com isso atribuindo a um nome de variável ou simplesmente nesse caso escrever na tela a minha tupla em ordem alfabética olha só que belezinha agora se você tentar usar o método sort para classificar ou ordenar a tupla você vai ter problemas vamos ver o que acontece print e alcalinos pon sorte tentando chamar o método sorte o ideia reconhece que existe ex o método S porque ele é aplicado em listas e em outros objetos mas na tupla ele
vai gerar esse erro erro de atributo o objeto tupla em si não tem um atributo sorte ele não faz parte da tupla Então tá aí isso é o que a gente tinha para ver sobre tuplas bem parecido com listas mas com algumas poucas diferenças principalmente a imutabilidade temos outros objetos para estudar ainda aqui outros tipos de sequências no curso como os dicionários conjuntos e as próprias Strings que é o que faremos nas próximas lições anteriormente trabalhamos com operações aritméticas como soma subtração multiplicação e divisão mas o Python possui além dessas operações várias funções matemáticas mais
avançadas que é o que nós vamos estudar agora para isso criamos como sempre um novo arquivo que eu vou chamar de matemática ppy e aqui a gente vai fazer o estudo das funções matemáticas tanto as funções internas quanto as funções via módulo o Python portanto possui possui duas grandes categorias de funções matemáticas as funções buin ou internas que você já pode sair usando não precisa importar nada e as funções que você importa via algum módulo como o módulo math que a gente vai trabalhar vejamos primeiro algumas das funções buil tein ou funções internas Bom o
negócio é o seguinte vamos supor que eu tenho uma variável valores que é uma lista de valores então para essa lista eu vou passar alguns valores vários números números negativos também o zero números positivos e assim por diante usando as funções matemáticas biltin eu consigo saber por exemplo Qual o maior valor dessa lista para isso eu posso mandar imprimir o retorno de Max que é a função de maior valor de uma lista de valores e de forma similar nós temos a função min que traz o menor valor de uma lista de valor então se eu
executar esse código aqui o que nós vamos obter é isto aqui 11 que é o maior valor da lista e -6 que é o menor valor da lista perfeito então duas funções bastante interessantes e importantes a gente também pode fazer o seguinte uma variável a que vai receber um valor negativo por exemplo como menos 5 e uma variável B que eu vou atribuir o valor 4 e aí eu consigo b o valor absoluto de um número utilizando a função ABS print ABS E aí eu passo o valor absoluto posso colocar o valor direto aqui dentro
ou a variável que o contém Isso aqui vai vai me retornar o valor absoluto de A então se eu executar que que vai aparecer o número C que é o valor absoluto de os5 ou seja o número sem o sinal uma outra função interna interessante é a função de exponenciação Power que funciona assim pa pow e aqui dentro a gente vai colocar os dois valores a base e o expoente vamos supor que eu queira fazer a elevado a b -5 elevado a quarta potência então basta colocar a Ví B ou eu posso no lugar do
B colocar o número 4ro vai dar o mesmo neste exemplo mas eu vou manter o b neste caso que a gente vai obter é o valor 625 menos 5 elevado a quarta potência como aqui é o número par fica positivo e uma outra função bem interessante dessas funções biltin é uma função de arredondamento Suponha que eu tenho essa variável c com um valor do tipo 2.78 9011 ou alguma coisa assim e eu quero exibir esse valor com apenas três casas decimais Então como é que eu faço basta invocar a função round e na função round
eu coloco primeiramente o valor que eu quero arredondar vírgula E aí o número de casas decimais que eu quero utilizar vamos supor três E aí ao rodar a aplicação ele vai mostrar 2.789 três casas decimais se eu quiser uma casa decimal só basta colocar o número um rodar ele vai mostrar 2.8 mostrando claramente que a função round realmente arredonda o valor arredondou para cima no caso excelente Essas são algumas das funções internas do Python para trabalhar com valores numéricos mas a grande maioria das funções matemáticas você vai encontrar em módulos e eu vou mostrar como
usar o módulo meth que é o principal módulo de funções matemáticas nessa linguagem você vai encontrar muita informação sobre o módulo math na página oficial que da da documentação do Python que é doc python.org Library math HTML funções Matemáticas e aqui você vai encontrar todas elas para você consultar e veja são várias tem um monte delas separadas por categorias inclusive ó funções de potência logarítmicas trigonométricas nós temos de conversão de ângulos hiperbólicas funções especiais algumas constantes inclusive que são valores pré-definidos para você usar dentro dos seus programas por exemplo se eu precisar usar o valor
de Pi eu não preciso escrever 3.14 15 eu posso usar o valor com a maior com a maior precisão possível que a linguagem pode me oferecer ou que o computador vai me ser usando a constante meth PP a mesma coisa para e para tal temos também um valor de constante para número infinito Olha que interessante e assim por diante então Existem várias funções matemáticas aqui Vou fazer alguns exemplos com algumas delas pra gente entender como é que funciona para isso deixa eu diminuir um pouquinho esse terminal eu vou eu vou apagar tudo isso aqui beleza
e aí pra gente poder trabalhar com com o módulo MEF a gente precisa importar esse módulo então Import e a palavra math beleza a partir de agora a gente consegue usar as funções que estão aqui dentro se você precisar ou quiser você pode colocar um apelido do tipo SM ou alguma coisa do gênero eu vou usar simplesmente como MEF pros exemplos eu vou criar uma variável x e vou atribuir a ela o valor 8 e também uma variável y e vou atribuir a ela o valor 100 vamos supor então que eu queira trir a raiz
quadrada de um desses valores raiz quadrada de 8 por exemplo então eu vou criar uma uma variável chamada raiz quadrada e essa variável vai receber o retorno da função meth ponto e veja a lista de métodos disponíveis que são as funções matemáticas Olha que monte que estão disponíveis aqui o que eu quero é essa daqui sqrt e aí eu passo dentro dos parênteses o valor pro qual eu quero calcular a raiz quadrada que no caso vai ser X E aí eu posso dar um print nessa raiz quadrada se eu executar o programa Deixa eu subir
um pouquinho executando tá lá a raiz Quada 8 é esse numão todo aqui eu posso arredondar esse valor utilizando a função buting round ou ainda eu posso arredondar para cima ou para baixo usando as funções se ou Floor então por exemplo meth ponto se vai arredondar o valor para cima pro inteiro mais próximo a cima então se eu rodar ele mostra três e math p flor vai arredondar pro inteiro mais próximo abaixo portanto você sabe que vai aparecer dois ali certo Então são duas funções que você também pode utilizar para obter a parte inteira arredondada
de um valor de ponto flutuante mas se você quer simplesmente arredondar o valor para um certo número de casas decimais aí você pode usar a função buil in mesmo round passando aqui como parâmetro o número de casas que você deseja por exemplo duas casas e aí a gente vai obter 2.83 Então veja que você pode combinar na mesma expressão funções internas com funções advindas de algum mdulo muito bem deixa eu comentar vamos extrair agora um logaritmo então eu vou chamar uma variável de logaritmo e essa variável vai receber meth ponto log na base 10 veja
há vários tipos de log distintos eu quero o logaritmo na base 10 o valor Y que é 100 e depois eu mand imprimir esse logaritmo Então tá aqui imprimir logaritmo Quanto que é o o logaritmo na base 10 de Y de 100 é 2 veja que retorna O número como ponto flutuante Por que que é 2 porque 10 elevado quadado dá 100 então logaritmo é o número Ao qual eu vou elevar um valor para chegar a outro valor então para chegar no valor de y a quanto eu tenho que elevar 10 a 2 por isso
o logaritmo é 2 muito bem comentando posso utilizar também as constantes por exemplo se eu precisar usar o valor de Pi é só dar um print ou outra função qualquer que você esteja usando e chamar meth P pi certo então isso aqui vai me dar o valor de Pi exatamente com a máxima precisão que a máquina permitir olha só que legal tudo isso aqui é pi E aí Claro você pode fazer o arredondamento do Pi se você assim eu quiser outra função interessante é o fatorial então a gente pode criar ou calcular um fatorial chamando
meth p factorial e passando o número pro Qual a gente quer calcular o fatorial por exemplo fatorial de x que é 8 quanto que dá esse valor fatorial de x é 40.320 veja que é um número Grande para 8 eu não vou tentar calcular o fatorial de 100e porque é altamente provável que a máquina não consiga calcular e até trave vamos supor isso aqui também print o valor de x dividido por meth ponto inf que que é o inf é infinito se eu dividir um número Pelo infinito qual vai ser o valor que eu vou
obter o valor que eu vou obter claro vai ser zero então eu consigo utilizar esse valor de infinito aqui para muitos cálculos matemáticos avançados pode ser utilizado beleza bom e assim por diante as demais funções do módulo math estão naquela página que eu mostrei agora a pouco basta dar uma estudada nelas e quando você precisar de algum cálculo matemático um pouco mais avançado é só utilizar o o método adequado o método que tá disponível ali dentro você não precisa criar fórmulas complexas você pode usar esses métodos todos que já estão prontos dentro dos seus scripts
ao longo do curso vamos utilizar alguns desses métodos nos probleminhas que a gente vai resolver em alguns exercícios específicos e também em alguns desafios e projetinhos então tá aí funções matemáticas internas e do módulo math no Python Vamos estudar agora a manipulação de Strings em Python para isso eu vou utilizar um arquivo chamado Strings ppy B as Strings são sequências de caracteres são extremamente importantes em qualquer linguagem de programação porque elas permitem que você basicamente armazene dados textuais em variáveis e processe esses dados e as Strings são na verdade sequências Assim como as listas as
duplas etc ou seja a gente consegue no Python cada caracter individual de uma string por um número de índice e uma outra característica importante das Strings é que elas são imutáveis uma vez criada você não consegue alterar o conteúdo de uma string Mas você consegue alterar o conteúdo da variável que contém a string essa é uma grande diferença então suponha o seguinte eu tenho uma string chamada nome que tem o meu nome ali dentro gravado Fábio aí eu consigo extrair uma letra por exemplo é a letra Na Posição dois Bastando para isso a gente acessar
o índice dois dessa minha string e mandar imprimir na tela essa letra Então quando eu executo Olha que interessante aqui embaixo apareceu a letra B porque é a letra que está na posição dois começa a contar na posição zero como sempre 0 1 2 Então esse é o caracter individual a gente também consegue visualizar o tamanho de uma string usando a função Bastando para isso passar o nome da variável que contém a string ou a string em si Então nesse caso são cinco caracteres que eu tenho ali dentro as Strings podem ser concatenadas com o
operador de concatenação que é o sinal de mais então Suponha que aqui em vez de Fábio fosse curso de Python E aí sim eu vou colocar o instrutor como sendo eu Fábio aí eu consigo concatenar essas duas informações simplesmente usando o operador de concatenação mais aí eu consigo concatenar as variáveis também com literais por exemplo posso escrever aqui entre aspas com mais instrutor legal apagar isso aqui rodando curso de Python com Fábio tá aqui embaixo então concatenação de Strings é bem simples sinal demais a gente já fez isso várias vezes aqui no curso agora existem
alguns métodos e funções que a gente pode aplicar em Strings para poder manipulá-las de forma mais aprofundada por exemplo deixa eu apagar isso aqui tudo Suponha que eu tenho uma frase essa variável frase tem a seguinte frase escrita dentro dela Vamos aprender Python hoje beleza colocar esse v maiúsculo ficar bonitinha e aí eu vou criar uma uma variável chamada palavras e essa palavra vai receber frase a minha frase completa com o método split aplicado esse método split ele divide a string em partes separadas por espaços por padrão criando assim uma lista de Strings é muito
interessante isso olha só se eu der um print em palavras Olha o que que vai aparecer Vamos aprender Python hoje veja que cada uma das palavras separadas por um espaço se transformou em Um item de uma lista e agora eu consigo acessar as palavras individualmente com facilidade Inclusive eu consigo acessar palavras individuais usando notação de colchete por exemplo palavra na posição um é aprender Olha que interessante e posso usando o laço for fazer uma iteração sobre essas palavras for palavra em palavras palavra E aí neste caso que nós vamos ter Vamos aprender Python hoje então
esse é um método importante pra gente poder extrair informações de dentro de uma frase separando assim as suas palavras constituintes agora a gente pode fazer a iteração na string da seguinte forma for letra em frase por exemplo que que vai aparecer print letra Nesse caso a gente vai imprimir cada uma das letras da frase separadamente Olha só cada uma delas com seu número de índice Então vamos aprender Python hoje uma letra em cada linha no caso a gente consegue fazer isso com laço for também é possível fazer com laço while porque a gente consegue acessar
cada uma das Letras dentro de uma string de forma separada também podemos fazer slicing o famento nas Strings que é algo que a gente costuma fazer por exemplo em lista ou tuplas como é que a gente faz isso deixa eu apagar isso aqui tudo Vou deixar só a frase Vamos aprender Python hoje vamos supor que eu quero imprimir desta frase os caracteres do início zero até posição C então neste caso que vai aparecer é aqui embaixo a palavra vamos de 0 até 5 0 1 2 3 4 5 Lembrando que o quinto caracter seria espço
não aparece e da mesma forma eu posso fazer outras combinações por exemplo de se até 15 vamos ver o que aparece pra gente ó palavra aprender sem querer eu extrair a palavra inteirinha direitinho vamos fazer diferente de 7 até 19 para ver o que aparece então neste caso prender Pit a gente consegue extrair um pedaço bem do meio da string fazendo o slicing e e também posso utilizar aquele esquema de números negativos por exemplo menos 3 e dois pontos que que isso aqui vai nos trazer ge ponto ou seja os três últimos caracteres da string
Olha que interessante se eu precisar acessar o finalzinho de uma string é só utilizar essa anotação de slicing E aí eu posso combinar o slicing com um método chamado find que é encontrar para fazer uma coisa bem interessante como isso aqui e-mail igual input vou colocar uma mensagem digite seu endereço de e-mail Então vou pedir pro usuário digitar o endereço de e-mail dele certo aí eu vou fazer o seguinte eu vou criar uma variável @ e vou dizer que essa variável vai conter email PF e aqui dentro de parêntese eu passo caracter de @ Então
para que que vai servir essa variável para encontrar dentro da string email que vai ser o e-mail que o usuário vai fornecer Onde está este caracter exatamente eu vou até imprimir na tela este @ Vamos fazer um teste primeiro então digite seu endereço de e-mail vamos supor Fabio @b.corradini 0 1 2 3 4 5 exatamente de posse dessa informação eu posso fazer um Slim para separar por exemplo o nome do usuário do nome do domínio como da seguinte forma usuário variável usuário será e-mail a gente sabe que o nome do usuário vem sempre no começo
do e-mail então da primeira posição primeiro caracter até chegar na posição @ onde estiver o ar e o domínio que é o endereço em si ele vai estar na mesma variável e-mail só que da posição @ mais um ou seja da próxima posição depois do arr até o final aí é só colocar os dois pontos aí eu posso imprimir na tela usuário e depois imprimir o e-mail o domínio beleza vamos testar tá de subir mais um pouquinho isso aqui digite seu endereço de e-mail então Fabio @boss on.com.br evidentemente Esse e-mail é falso não existe Olha
lá Fábio extraiu direitinho a parte do nome do usuário e boson.de do domínio em si Então olha que interessante eh o que a gente pode manipular dentro de uma string usando esses métodos Essas funções o slicing tudo que a gente tá vendo aqui no curso bastante útil para você por exemplo fazer validação receber dados de usuário tratar esses dados dentro da sua aplicação bom deixa eu comentar tudo isso aqui pra gente fazer um outro exemplo a gente pode usar os operadores de associação in e not in também para verificar se um caracter ou uma sequência
de caracteres estão dentro da string Suponha que eu tenho essa variável produtos aí eu vou colocar dentro dela o seguinte texto carbonato de sódio e óxido de zinco dois produtos certo eu quero saber se aí dentro existe sódio se aí dentro Existe algum outro produto então para isso eu posso fazer um print e aí dizer sódio em produtos também posso fazer um outro print e perguntar magnésio magnésio em produtos vamos ver o que acontece quando eu executo isso aqui olha só apareceu true e false sódio em produtos true sim tem a palavra a sequência de
caracteres sódio tá aqui dentro e magnésio tá lá dentro false não tem essa palavra essa sequência de caracteres não está presente aqui dentro eu poderia também fazer o contrário magnésio not em produtos Olha só usando operador not nesse caso amb serão true magnésio não está em produtos verdade não está lá dentro não existe essa sequência de caracteres aqui dentro então Associação com in e notin outra coisa que interessante que a gente pode fazer eu usei agora a pouco o método find para encontrar a posição do ar na verdade o método find pode ser usado para
encontrar a primeira ocorrência ou o início de qualquer substring tá então como funciona isso deixa eu comentar Suponha que eu tenha a seguinte variável item iG iG hipoclorito Olha que interessante eu quero saber a posição onde ocorre uma substring Então vamos supor item pon find eu quero encontrar onde está a sequência clor se existir e escrever na tela essa posição e depois eu também quero encontrar onde está dentro de item usando ponto a sequência de caracteres Flu se existir e imprimir na tela o resultado beleza vamos fazer o teste então rodando Olha só el diz
aqui na posição qu ele encontrou clor 0 1 2 3 4 a partir da posição 4 começa a sequência de caracteres que eu pesquisei já o flul não encontrou então ele vai retornar men1 então quando o método ponto find retornar os1 significa não foi encontrado o valor e você pode usar esse valor dentro de um condicional if para fazer testes por exemplo então o método pon F é bastante útil para você encontrar onde na dentro da da sua string está uma substring ou um caracter único muito bem que mais vamos comentar tem bastante coisa de
string pra gente estudar a gente pode fazer o seguinte trabalhar com maiúsculos e minúsculos também Suponha que eu tenho a variável objeto celeste E esse objeto será a galáxia espiral m31 veja que eu coloquei o P maiúsculo propositalmente galáxia espiral m31 começando com g minúsculo E aí eu vou imprimir na tela este objeto eu vou imprimir objeto Celestial se eu imprimir esse objeto vai aparecer exatamente da forma como eu digitei vamos supor que eu quera ele todo em maiúsculas ponto upper É só escrever ponto uper e aí Olha que legal texto vem todo em maiúsculas
isso é legal para você padronizar por exemplo uma entrada de texto do usuário você não sabe se o usuário vai digitar Inicial maiúscula minúscula o texto todo em maiúsculo todo em minúsculo caixa alta Caixa Baixa você pode simplesmente padronizar depois que ele digitou utilizando um método desse tipo eh se você quiser padronizar com Caixa Baixa É só usar o método lower E aí vai ficar tudo em minúsculas Olha só inclusive o m do m31 outra coisa que a gente pode fazer é usar o método capitalize capitalizar que que faz este método Olha que interessante somente
a primeira letra em maiúscula primeira letra da frase toda em maiúscula e finalmente método title que que faz o método title coloca cada letra de cada palavra em maiúscula então G ficou maiúsculo o e ficou maiúsculo o m ficou maiúsculo legal então métodos bastante úteis vamos lá mais coisas sobre Strings ainda vamos supor que eu tenha agora uma variável chamada suplemento essa variável tenho o cloreto de magnésio Ok mas suponhamos que o suplemento tá errado eu preciso PR trocar essa string eu posso fazer o seguinte um novo suplemento recebe a variável atual suplemento vamos supor
que eu não posso alterar a variável Mas eu posso criar uma nova variável e com o conteúdo desta alterada n eu vou dar um replace replace significa substituir em inglês e aqui dentro dos parênteses eu vou passar dois argumentos primeiro argumento o que eu quero substituir então eu quero substituir a a palavra a string magnésio vírgula pelo segundo argumento o valor que eu quero colocar no lugar do magnésio por exemplo suplemento zinco legal então eu quero tirar o magnésio e colocar o zinco e aí eu posso dar um print tanto no suplemento quanto no n
suplemento e a gente pode testar agora cloreto de magnésio e cloreto de zinco Olha só nessa segunda string uma das palavras uma das substrings da pal da da string anterior foi substituída isso é útil quando você tem um texto grande e precisa substituir determinadas palavras dentro daquele texto por outros termos ou letras ou simplesmente sequências específicas de caracteres ou códigos então o método replace é bastante útil nesse caso e falando em substituir e retirar Vamos fazer um exemplo bem interessante aqui que é trabalhar com espaços em branco muitas vezes a gente precisa remover espaços em
branco que esteja no início ou no final da string Eu já vi muito isso usuário vai digitar por exemplo nome de usuário ou uma senha ou entrar com um texto qualquer num formulário e dar espaços no começo ou 10 espaços no final e aí esses espaços podem causar problemas na hora de gravar num banco de dados ou de fazer algum processamento Então vamos supor que eu tenha uma frase essa frase foi digitada assim ó vários passos e aí vem a palavra em si a frase em si ã ômega três é bom para a saúde tem
vários espaços no final se eu D um print nessa frase Olha só como é que ela vai aparecer aqui embaixo ômega-3 é bom para saúde olha os espaços aqui no comecinho e aqui no final também tem espaços ó consigo inclusive selecioná-los aqui ó que eu posso fazer faz para eliminar esses espaços eu posso simplesmente usar o método lstrip aplicado na minha frase frase. lstrip e também posso utilizar outros métodos como o r strip e simplesmente strip aí a gente vai entender a diferença entre os três métodos é simples l de Left esquerda R de right
direita e o strip é tanto esquerda quanto direita Então lstrip vai eliminar os espaços a mais à esquerda o rstrip elimina os espaços a mais à direita e o strip vai eliminar tanto a esquerda quanto a direita ao mesmo tempo então ao executar olha só que interessante aqui eliminou os espaços à esquerda mas a direita continua existindo aqui Manteve a esquerda mas eliminou a direita aqui não tem mais nada e o strip eliminou Tanto à esquerda quanto à direita agora tá só essa frase aqui da letra O até a exclamação então bastante útil também esses
três métodos para você poder tratar as Strings Principalmente quando as Strings chegam na sua aplicação vindas da internet de um banco de dados de um formulário de um input seja de onde for muito bom que mais vamos lá tem mais coisas a gente também pode trabalhar com alinhamento de texto para exibição vamos supor que eu tenha a variável fruta e a fruta é o abacate beleza eu quero imprimir na tela essa fruta então se eu imprimir na tela a fruta Olha que interessante abacate normal tranquilo agora olha o que que eu posso fazer eu posso
dar um print nessa fruta usando um R just que é o right justify justificar à direita e aí aqui dentro dos parênteses eu posso passar um argumento que é o número de caracteres a usar por exemplo 20 significa use 20 espaços para escrever a palavra abacate e alinhe a direita a palavra Como assim assim 20 espaços no total e a palavra justificada à direita desses 20 espaços ótimo para você por exemplo montar menus e alinhar textos na tela além do arj eu também tenho como centralizar isso aqui para isso eu uso passando o número de
espaços que você quer pode ser o número que você quiser com Center olha só a palavra abacate fica no meio alinhadinha no centro e claro também posso fazer a mesma coisa à esquerda E para isso eu uso LJ o LJ é o alinha ar esquerda que é o padrão parece que não não alterou nada na verdade existem 20 espaços até aqui que foram criados a gente também pode passar um caracter diferente pro preenchimento se a gente quiser por exemplo nesse LJ depois do número 20 eu poderia ter colocado uma vírgula E aí entre aspas colocado
um caráter qualquer vamos supor um traço E aí o que vai acontecer Olha que legal escreveu a palavra com 20 espaços alinhou à esquerda e preencheu em vez de usar espaços preencheu com esse caracter que é o wien isso aqui é particularmente útil se a gente usar eh com o método Center porque aí olha o que a gente consegue fazer Center executo Olha que bonitinho ótimo para um título de uma tabela por exemplo de um menu ou alguma coisa do gênero ficou alinhadinho com os caracteres dos dois lados então aliamento de texto com rjust rjust
e Center deixa eu comentar temos mais uma coisinha a gente também pode trabalhar com prefixos e sufixos Suponha que eu tenho uma variável o p qualquer e aqui em p a gente tem bosom Treinamentos e a gente consegue verificar se a string inicia ou termina com uma sequência de caracteres qualquer print P pon vou usar o método start Swift start Swift significa começa com E aí eu passo aqui dentro uma uma sequência qualquer por exemplo bo com acento isso aqui na verdade é uma pergunta estou perguntando dentro dessa variável p o texto que tá lá
começa com essa sequência de caracteres sim ou não true começa agora se eu perguntar se começa com um B minúsculo false Não começa com B minúsculo começa com b maiúsculo Se eu colocar o b maiúsculo aqui ele vai dizer agora true começa com b maiúsculo e da mesma forma a gente também pode verificar se a sequência termina com uma sequência de caracteres usando o método endswith endswith fina eh finaliza com termina com s essa sequência sim ou não true sim eh termina com o por exemplo não Claro que não termina com s então ele retorna
false a gente consegue verificar por exemplo se um código Está correto se caractere específico esperado tá no início ou no final de um código de uma string qualquer então método bastante útil para esses casos e finalmente um último recurs de string Existem muitos e muitos recursos de Strings a gente tá vendo uma pequena porcentagem dele só aqui tá existe um recurso chamado de Doc Strings doc Strings o que que são as doc Strings são Strings literais no código fonte que a gente usa como se fosse um comentário mas na verdade ela é usada para documentar
tá trechos específicos do código como módulo classe função são coisas que a gente ainda vai estudar então não são simples comentários para explicar eh um iten Zinho o significado de uma variável alguma coisa simples Na verdade é um texto mesmo que pode ter várias linhas para explicar a função geral de Um item maior dentro do código as doc Strings elas são criadas sempre usando 1 2 TR eh aspas uma sequência de três aspas Tanto faz ser simples ou dupla veja que eu coloquei três aspas e o vs code Já fechou para Minas três aspas E
aí é só a gente digitar aqui dentro a nossa doc string que a gente quer documentar então doc string é uma espécie de documentação que podemos inserir dentro de um módulo função ou classe no Python entre outros locais ela Pode ocupar múltiplas linhas e também vai respeitar indentações respeita e deslocamento do texto e é multi linhas Olha que interessante Então isso aqui é uma doc string é uma string de documentação veja que ela não fica na cor verde de texto normal mas quando eu executo veja não aparece evidentemente nenhum erro porque ela não é interpretada
como um comando tá e a gente também pode fazer o seguinte a gente pode atribuir uma doc string a uma variável por exemplo eu poderia criar a variável texto igual e dizer que é tudo isso e aí mandar imprimir esse texto normalmente na tela olha que interessante quando eu mando imprimir aparece todo meu conteúdo aqui ó vendo doc string é uma espécie de documentação que podemos inserir que errei inseri Faltou um n dentro de um módulo função classe entre outros locais ó respeitando os deslocamentos é multilinha etc tá então isso é uma doc string aí
recomendação não use doc string como um simples comentário para isso use comentários use doc Strings quando você for criar classes módulos funções que precisam de uma uma explicação longa a respeito de sua funcional idade de seus constituintes etc e a gente vai criar funções posteriormente a gente vai criar classes E aí a gente vai usar em alguns momentos doc Strings também Beleza então tá aí vimos muita coisa sobre Strings nessa aula foi uma aula um pouco mais longa porém extremamente importante porque a gente usa Strings a todo instante em programação outra estrutura de dados muito
usada em Python são os dicionários que permitem armazenar sequências de dados em pares chave e valor como funciona isso vamos ver então criando aqui um novo arquivo que eu vou chamar de dicionários ppy a gente vai dar uma estudad básica nos dicionários e conhecer algumas de suas funcionalidades Então os dicionários eles permitem armazenar dados em pares chave valor e eles são similares aos arrays associativos que existem em outras linguagens ou hashmaps e possuem algumas características próprias por exemplo não permitem itens duplicados mas os itens podem ser de qualquer tipo bom como é que a gente
cria um dicionário a gente vai criar da seguinte forma vamos supor que eu queira criar um dicionário para armazenar informações sobre um elemento químico eu vou chamar Esse dicionário de elemento E aí a gente vai atribuir abrindo Chaves os pares chave e valor a chave é uma string que dá acesso a um valor armazenado por exemplo vamos supor que eu quero armazenar o número atômico do elemento número atômico é simbolizado pela letra Z então eu vou criar uma chave Z dois pontos e aí eu vou dizer qual que é o valor associado a essa chave
por exemplo três vírgula se você quiser colocar mais informações então o dicionário ele permite que você tenha vários pares chave e valor ao mesmo tempo vamos supor que eu queira colocar o nome do elemento então nome veja que eu tô criando essa chave utilizando aspas E aí eu vou colocar dois pontos e na frente vem o valor em si que eu quero armazenar no caso é o lítio usado para fazer as baterias aí dos seus celulares do seus tablets notebooks etc veja que pro lítio eu usei aspas porque é uma string mas pro número atômico
não usei porque é um número um número inteiro no caso vírgula se você quiser adicionar mais informações eu vou adicionar mais o grupo dois pontos sempre para fazer a associação e o grupo é metais alcalinos alcalinos e mais um para finalizar esse dicionário vou colocar densidade deste elemento que é um número também mas um número real no caso 0.534 veja que também não utilizza aspas nesse caso então este código aqui cria um dicionário uma estrutura de dados na memória é acessível a partir do nome elemento que contém todas essas informações três lítio metais alcalinos e
o e esse número 0.53 4 acessíveis a partir destas Chaves aqui a gente não pode ter aqui dentro eh de um dicionário mais de um valor pra mesma chave ou seja você não pode ter Chaves repetidas aqui e as chaves elas são imutáveis então você pode usar string valor numérico ou até mesmo tuplas como Chaves mas não itens que sejam mutáveis por exemplo listas você não pode usar como chaves dentro de um dicionário depois de criado o dicionário o que que eu posso fazer com ele bom eu posso acessar os itens ali dentro utilizando anotação
de chave valor então vamos supor que eu queira imprimir o nome do elemento então eu vou usar um print e aí eu vou imprimir o nome do elemento vou usar uma f string eu vou escrever assim elemento dois pontos e aí eu vou imprimir o nome do elemento dentro desse meu dicionário e eu vou acessar esse nome assim elemento que é o nome do dicionário E aí eu vou utilizar aquela anotação de colchetes que a gente já usou anteriormente para listas e para tuplas só que aqui em vez de colocar o número de posição você
vai colocar o nome da chave que tem o valor associado que você quer acessar no caso se eu quero o nome do elemento é só colocar a palavra nome que é a chave que contém o nome desse elemento E aí eu fecho aqui no no final aqui ele tá reclamando para mim provavelmente das chaves então aqui é o seguinte essa chavinha aqui tá a mais beleza tranquilo então vamos rodar isso aqui pra gente ver se funciona rodando tá lá elemento dois pontos lítio veja que ele traz o valor associado a chave nome ele não escreve
nome aqui e sim o valor que tá associado a ela a gente pode fazer o mesmo pras outras Chaves que nós temos nesse dicionário vou fazer mais um aqui só de exemplo por exemplo eu quero a densidade deste elemento então densidade está na minha chave densidade beleza rodando elemento lítio densidade 0.534 Nós também podemos saber ou consultar o tamanho do dicionário o número de itens de dados usando a função Len mais ou menos da seguinte forma vou dar um print e vou escrever uma mensagem do tipo o dicionário possui e aqui dentro eu vou colocar
o número de itens dele para isso é só você chamar o Len que é uma função e passar como argumento para essa função o nome do dicionário no caso o meu dicionário chama elemento certo e aí eu vou finalizar minha mensagem com Element com a palavra elementos então quando eu executo ele vai dizer o dicionário possui quatro elementos que são os quatro pares chave valor o nome o grupo a densidade e o número atômico Z vamos supor agora que eu quisesse alterar ou adicionar novos itens a esse dicionário consigo fazer isso de forma simples vamos
supor que eu queira atualizar ou modificar atualizar uma entrada desse dicionário vamos supor que o grupo aqui eu chamei o grupo de metais alcalinos eu queria chamar só de alcalinos então eu vou alterar esse valor associado ao grupo como é que eu faço isso nome do dicionário entre colchetes a chave o nome da chave que no caso é grupo E aí você atribui um novo valor por exemplo alcalinos alcalinos Beleza se você der um print no elemento direto dessa forma aqui você vai ver na tela o dicionário inteiro neste formato veja que ele traz as
chaves e traz cada um cada uma das chaves cada um dos pares chave valor no caso grupo foi mudado para alcalinos como você pode ver aqui a gente CONSEG fazer alteração de um valor associado a uma chave dessa forma você não CONSEG alterar a chave em si eu posso adicion uma nova entrada de forma bem simples então adicionar uma entrada para adicionar um item basta você acessar de novo o dicionário e dentro dos colchetes colocar o nome da chave que você quer adicionar então vamos supor eu quero colocar o período período e aí você atribui
o valor que você quer guardar nessa chave o período aqui é um por exemplo E aí é só você dar um print elemento de novo print elemento veja que nesse caso vai aparecer agora o período aqui no final tá então se você colocar o nome de uma chave que existe é atribuir um valor O valor é alterado se você colocar o nome de uma chave que não existe e atribuir um valor a chave ela será criada será inserida nesse dicionário e da mesma forma se a gente pode adicionar itens a gente também pode excluir os
itens então exclusão de itens em dicionários a gente pode fazer isso de várias formas a gente pode usar por exemplo a função Dell para remover uma entrada vamos supor que eu queira remover vê o tal do período você faz assim ó Dell nome do dicionário e entre os colchetes o nome da chave que você quer remover Claro O valor vai ser removido junto no caso olha aqui o o vscode até me reconhece o conteúdo desse dicionário me coloca uma lista para eu poder selecionar Eu quero remover o período aí se a gente der um print
nesse elemento Olha o que acontece aqui o período foi adicionado nessa linha anterior só que na próxima linha depois de executar o Dell ele já desapareceu então a gente conseguiu remover outra coisa que a gente pode fazer também é apagar todos os itens E para isso existe o método Clear se você simplesmente executar elemento pon Clear que é o primeiro método que apareceu aí todo o conteúdo do dicionário é apagado E aí se você der um print ele vai mostrar o dicionário vazio olha só abriu e fechou chave sem tem nada dentro mas o dicionário
continua existindo ainda existe uma área alocada na memória RAM do computador para esse dicionário de modo que é possível você adicionar itens a ele se desejar agora se você quiser apagar o dicionário de uma vez sumir com ele da memória você pode usar a própria função D só que passando o nome do dicionário e sem especificar o nome de nenhuma chave e aí neste caso o dicionário vai desaparecer inclusive se você tentar imprimir o elemento provavelmente vai aparecer um erro aqui embaixo que é o que eu vou fazer agora e tá aí ó ele me
traz o name error nome elemento não está definido por quê porque após executar essa instrução o dicionário deixou de existir os dicionários vão ser bastante úteis mais paraa frente quando a gente estiver trabalhando com aplicações um pouco mais complexas principalmente para armazenar esse tipo de dado que vem nesse nesse formato de par né tem um nome e o valor associado a esse nome a gente vê muito isso em aplicação web Por exemplo quando você preenche um formulário com com dados e envia para um servidor né os dados chegam no servidor no formato de par chave
valor sendo que a chave geralmente é o nome do campo do controle n o nome nome senha data de nascimento etc e o valor é o valor que a pessoa preencheu ali dentro então os dicionários TM bastante utilidade em casos assim bom existem alguns outros métodos úteis em dicionários antes da gente finalizar isso aqui eu vou comentar todas essas instruções de exclusão beleza aí a gente vai recriar o dicionário verificar se ele recriou recriou o dicionário beleza e aí a gente pode fazer umas coisas interessantes aqui por exemplo existe um método que é o método
pon items a gente pode escrever aqui dentro do print elemento que é o nome do nosso dicionário pon items e isso aqui vai nos retornar os itens do dicionário ele vem nesse formato dict item na forma de uma lista de itens e na verdade é uma lista de tuplas como você pode verificar aqui veja os coetes abrindo e fechando indicam que esse conteúdo todo é uma lista e cada item tá dentro de uma tupla indicado por essa por esses parênteses aqui nesse formato chave vírgula valor chave vírgula valor então a gente consegue visualizar os itens
dessa forma e aí a gente pode fazer o seguinte usar um laço for uma variável qualquer de controle e elemento pon items e dá um print nesse I que vai ser o nosso elemento nesse caso olha o que ele vai mostrar as tuplas separadas as tuplas expandidas Esse é o termo que a gente usa separamos as tuplas uma em cada linha e fica mais fácil para você acessar individualmente essas informações todas E além disso temos outros métodos um outro método que eu também vou mostrar aqui que é bem interessante é o método Keys Então a
gente vai escrever simplesmente kys Chaves e como você deve estar imaginando ele vai mostrar somente as chaves do dicionário então mudei aqui elemento pon Kis elemento pon Kiss quando eu executo aí ele vai trazer para mim as chaves que estão aqui embaixo então elemento pon pon Kis trouxe dict kys achave do dicionário uma lista com os nomes das chaves e com laço fora eu consigo iterar por elas acessar cada uma delas individualmente se assim eu precisar e da mesma forma que a gente pode fazer isso com as chaves a gente também consegue fazer com os
valores e basta mudar esse método de Items para ves e aqui vou mudar também nesse laço for para ves aí quando você executa o que você vai obter é isso aqui um dict p vos uma lista com os valores ou acessando individualmente com o laço for a gente consegue visualizar cada um deles e interagir com cada um deles se for necessário e finalmente a gente pode fazer o seguinte a gente pode desempacotar as chaves e os valores simultaneamente porque aqui a gente acessou separadamente valores Chaves e quando a gente rodou o o método items a
gente visualizou as listas de duplas de pares chave e valor Mas a gente pode fazer algo mais interessante usando um laço for e duas variáveis de controle que eu vou chamar de i e j você pode chamar do que você quiser in elemento pon items e aí eu mando imprimir vou usar uma f string no caso não precisaria E aí eu vou imprimir esses dois itens aqui dentro eu vou colocar o i e aqui dentro eu vou colocar o J aí vamos deixar um espaçozinho aqui também vamos ver o que que ele vai mostrar para
nós aqui Deixa eu subir um pouquinho o terminal rodar aí ele mostra nesse formato Olha que legal Z 2.3 nome lítio grupo alcalinos densidad 0534 e período 1 ou seja na forma de uma tabelinha um resuminho um pequeno relatório então trabalhando dessa forma com o laço for usando duas variáveis de controle cada uma delas vai receber e um dos elementos que a gente tem dentro desse dicionário no caso o i vai receber a chave e o J recebe o valor associado a cada uma daquelas Chaves a gente consegue tratá-los separadamente simultaneamente Tranquilo então tá aí
dicionários em Python uma pequena introdução a esse assunto e a gente vai usar essa estrutura de dados na construção de aplicações mais complexas futuramente existe ainda uma outra estrutura de dados e que pode ser utilizado em Python que são os sets ou conjuntos em português Vamos estudar os sets portanto criando um arquivo novo que eu vou chamar de sets ppy que que são os sets os sets são conjuntos coleções não ordenadas de valores únicos que a gente usa para armazenar múltiplos itens dentro de um objeto os sets eles armazenam apenas itens não duplicados e interessante
eles suportam operações matemáticas sobre conjuntos União intersecção etc as operações básicas que a gente aprende na escola a gente não consegue ficar os itens dentro de um set mas a gente consegue adicionar novos elementos Portanto o set em si o conjunto ele é mutável e a gente pode armazenar elemento de qualquer tipo dentro de um set tudo misturado como é que a gente cria um set ou um conjunto a gente usa Chaves vamos vamos supor o seguinte fazer um exemplo agora astronômico eu vou criar um set chamado Planeta Anão e o meu planeta an não
vai receber um conjunto de itens que serão esses nomes aqui Plutão que já foi planeta e agora é planeta não séries Eris almea Olha que nome interessante make make e e só esses são os planetas anões que há no sistema solar e a gente pode dar um print nesse planeta a não planeta Ah não Ok vamos ver como é que ele vai nos mostrar isso aqui tá aí ele mostra com essa anotação dentro de Chaves dizendo para você que se trata de um conjunto de um set especificamente Cuidado para não confundir o set com o
dicionário que também utiliza Chaves no caso do dicionário sempre serão pares de valores chave e seu respectivo valor associado no set não você tem só os valores e a gente consegue saber o tamanho de um set utilizando a função Len Então se por exemplo se eu colocar aqui na frente Len e passar o nome do meu set como argumento ele vai dizer quantos itens eu tenho ali dentro no caso eu tenho cinco itens bem tranquilo função Len funciona para para todos os tipos de estruturas de dados a gente pode também eh aplicar algumas operações interessantes
sobre conjuntos como por exemplo verificar a associação que é verificar se o conjunto tem ou não um valor específico vamos supor que eu queira verificar se dentro desse conjunto está o planeta an não séries então séries em planeta não e aí ele vai me dizer se está ou não nesse caso ele vai me retornar true porque séries está lá agora se eu colocasse lua aqui lua lua não é um planeta não é um satélite ele vai me dizer false não está ou eu posso também utilizar o not in perguntando lua não está no planeta não
Aí sim é verdadeiro não está no conjunto então a gente consegue utilizar esse tipo de operação sobre um conjunto E a gente também consegue evidentemente fazer iteração sobre ele vamos iterar com um laço for então para Astro em planeta não print O Astro e a gente pode fazer o seguinte vamos supor que eu queira imprimir tudo em maiúsculo a gente já aprendeu alguns métodos que podem ser aplicados sobre Strings um deles é o método ponto uper que vai colocar toda todo o meu conteúdo conteúdo da string em letras maiúsculas E você também já aprendeu que
a gente pode modificar a o caracter de finalização de linha do print para por exemplo ele não mudar de linha basta colocar um end igual e essas aspas sem nada dentro nesse caso ele vai colocar todo o conteúdo na mesma linha nesta forma certo claro que a gente poderia ter colocado aqui um um espaço para separar um do outro então bastaria para isso concatenar o espacinho aqui mas veja que eles ficaram todos na mesma linha juntinhos Ah eu quero um em cada linha Então é só você não usar isso aqui e aí normal ele vai
jogar um embaixo do outro e veja todos em letras maiúsculas da mesma forma a gente também consegue criar conjuntos a partir de outras sequências Olha que interessante vamos supor que eu tenho uma lista quero transformar num set num conjunto para isso uma função buil team uma função interna chamada set Então deixa eu comentar aqui vou criar uma lista pra gente fazer esse teste vou criar a lista de astros e essa lista ela vai ter os nomes de alguns astros por exemplo a lua quem mais Vênus Sírius que é uma estrela mais o planeta Marte E
aí eu vou fazer uma coisa interessante eu vou colocar de novo a lua aqui certo então Isso aqui é uma lista se eu der um print nessa lista print astros end igual Se eu der um print aqui o que a gente vai ver é uma lista com os itens tá vendo veja que a Lua aparece duas vezes nessa lista agora Suponha que eu queira criar um um conjunto A partir disso O conjunto astr set Opa Astro set então eu vou usar a função interna set e passo para ela a minha lista de astros aí eu
vou transformar essa lista em um conjunto E aí eu posso dar um print em astro e 7 vamos ver o que aparece apareceu aqui olha só ele não mudou de linha porque eu usei esse end igual nada aqui em cima Marte sirus lua e Vênus veja que interessante a lua não aparece duplicada aqui ela aparece duplicada só na lista Essa é uma das características que eu citei no comecinho da aula nos conjuntos você não terá valores duplicados então se você tentar colocar o mesmo valor duas vezes no Conjunto O Python simplesmente ignora coloca uma vez
só automaticamente Então tá ali a lua não não foi duplicada por conta disso e por quê é da Matemática isso valores iguais no conjunto se referem ao mesmo valor então duas vezes lua é a lua em si então basta que ela apareça uma vez Beleza a gente também pode fazer comparações entre conjuntos deixa eu comentar isso aqui tudo aí eu vou criar um outro conjuntinho pra gente testar eu vou usar esses mesmos elementos aqui para criar o nosso conjunto Então vamos lá eu vou chamar de astros 1 e astros 1 terá esse conteúdo aqui aí
eu vou criar astros 2 e astros do vai ter esse conteúdo aqui com um item a mais vamos colocar aqui também Cometa de raley pronto então tenho dois conjuntos que não são iguais entre si e aí a gente pode verificar se eles são iguais comparando um com o outro tá então astros um é igual a astros 2 sim ou não quando eu executo isso aqui ele diz false não são iguais esses dois conjuntos posso perguntar se eles são diferentes entre si aí ele vai dizer sim true são diferentes entre si porque eles têm elementos que
diferem uns dos outros e existem outras operações do tipo de comparação que a gente também pode aplicar sobre os conjuntos outra coisa que a gente pode fazer é a união de conjuntos como que é união de conjuntos você utiliza este caracter o Pipe para juntar os dois conjuntos aí nesse caso se a gente executar ele vai mostrar Marte lua Sírius Vênus e Cometa de rally Ah mas não apareceu duas vezes lua Vênus Sírius e Marte claro lembre-se que é nos conjuntos os valores não aparecem repetidos então ele pegou os elementos do primeiro e somou e
juntou com os elementos do segundo que não estão no primeiro criando assim um novo conjunto e uma outra forma de fazer isso é utilizar o método Union a gente poderia ter feito assim também ó print astros um por exemplo ponto Union astros 2 legal isso aqui é a mesma coisa tá ele vai juntar os dois e criar um novo conjunto então a gente chama isso de união de conjuntos e a gente também pode fazer a intersecção de conjuntos é um conjunto que tem apenas os elementos em comum como é que a gente faz a intersecção
a gente vai usar o operador end ou o método intersection então eu vou simplesmente copiar esses dois prints e mudar o operador então operador end isso aqui é intersecção de conjuntos ou aqui a gente escreve intersection intersection aí ele vai trazer pra gente somente os elementos que estão em ambos os conjuntos que no caso você sabe Venos Martes SOS e Lua e uma outra coisa que a gente pode fazer é verificar a diferença simétrica de conjuntos Como assim vamos lá diferença simétrica é com este operador aqui o assento circumflex ou você pode usar o método
também se metric und difference Nossa que que faz isso né esse esse nome estranho basicamente isso aqui ele traz os elementos que não aparecem em ambos os conjuntos é a diferença entre os conjuntos Então veja Cometa de rally é o único elemento que não aparece eh Em ambos os conjuntos aparece só em um deles se eu acrescentar um outro item aqui no no primeiro conjunto vamos supor eu vou colocar aqui agora uma lua de Júpiter io e executar o código aí ele vai mostrar io e Cometa de raley são os dois elementos que não estão
em ambos os conjuntos é a diferença entre os conjuntos diferença simétrica no caso a diferença de a para b e também de B para a bom E se eu quiser adicionar elementos a um conjunto como é que eu faço consigo deixa eu comentar isso aqui tudo para não atrapalhar a gente Eh vamos supor que eu queira acrescentar agora em Astros um mais um elemento como é que eu faço isso basta você chamar astros 1 p adicionar E aí você adiciona o elemento que você quer por exemplo Urano vamos adicionar outro astros 1.ed e a a
gente adiciona aqui o sol beleza e aí a gente dá um print print em Astros um vamos ver o que vai aparecer ali dentro tá lá Vênus Urano e o sol Sírius lua e Marte veja que a ordem que eles aparecem aqui é uma ordem aleatória não tá nem em ordem alfabética nem ordem numérica é uma ordem aleatória Isso é uma outra característica importante dos conjuntos quando você os acessa os elementos vêm numa ordem qualquer se eu quiser remover um dos elementos também consigo vou remover Antes desse print aqui astrom p remove E aí você
diz qual elemento que você quer remover por exemplo eu quero remover io e quando eu executo io não aparece mais aqui na minha lista de itens e se eu tentar remover um elemento que não está no conjunto por exemplo eu quero remover não I mas eu quero remover digamos Plutão nesse caso tentou remover Um item que não está no conjunto ele vai dar um erro de chave não existe esse cara aqui certo apareceu esse erro você sabe tentou e remover um elemento que não está dentro do conjunto e uma outra opção de remoção é o
método discard você pode executar o discard E no caso do discard se o elemento não estiver no conjunto ele não dá aquele erro olha só Aí você pode pensar em usar ou remove ou desard dependendo do caso Vamos tentar descartar o elemento lua beleza removeu a lua do meu do meu conjunto veja que cada vez que eu executo os elementos vem numa ordem diferente outra coisa que a gente pode fazer interessante é remover um ento arbitrário para isso existe o método pop pop e para ele a gente não passa nenhum argumento tá então quando eu
executo o método pop ó ele removeu um dos elementos do conjunto que no caso foi Vênus é isso Vênus é que tá faltando se eu executar de novo ele ele elimina outro elemento no caso aqui ele eliminou o sol e Vênus está de volta então é é um um método bem interessante porque ele remove de forma aleatória Você não sabe o qual ele removeu ISO pode pode se aproveitar essa característica em vários tipos de aplicações como por exemplo em jogos e finalmente Se eu precisar limpar todo o meu conjunto existe o método Clear você pode
simplesmente escrever Clear E aí ele limpa tudo e quando eu dou um print no meu conjunto vai aparecer simplesmente escrito set e e os parênteses vazios indicando que não tem mais nada lá dentro daquele conjunto Beleza então tá aí conjuntos ou sets em Python mais uma estrutura de dados interessante que é legal a gente conhecer porque nos permite de mais pra frente criar aplicações mais complexas com mais facilidade que é o que faremos nas próximas aulas Vamos iniciar agora o estudo das funções em Python um dos assuntos mais importantes na verdade em qualquer linguagem de
programação eu vou criar um novo arquivo pra gente poder começar a falar sobre as funções vou chamar de funções Beleza então é o seguinte que que são as Fes que a gente até já usou aqui mas sem formalizar uma função é um bloco de código que executa uma determinada tarefa Então você programa essa tarefa dentro de um bloco de códigos dá um nome para esse bloco que vai ser o nome da função eventualmente pode ter uma lista de parâmetros e um valor de retorno dependendo do tipo da função e aí você pode usar essa função
quantas vezes você quiser no seu programa ou até mesmo importar na forma de um módulo em outros programas e as funções são muito úteis importantes por vários motivos os principais motivos são a modularização Ou seja você consegue tornar o seu código modular criando um bloco de códigos que realizam uma determinada função e usando posteriormente eh Portanto promovendo o reuso de código assim você não precisa codificar diversas vezes as mesmas funções as mesmas funcionalidades dentro do seu código você codifica uma única vez e simplesmente usa e isso ajuda no final das contas a melhorar a legibilidade
do seu programa certo então esses são os principais motivos pra gente trabalhar com funções a gente pode imaginar as funções como sendo uma espécie de uma caixa preta como essa ilustração que você tá vendo na qual você fornece um valor de entrada lá dentro essa caixa preta esse valor é trabalhado é processado e um valor produzido é exibido na saída ou retornado na saída não necessariamente você precisa saber como é que funciona essa caixa preta por dentro a gente usou muitas funções aqui no curso já como a função print por exemplo e a gente não
sabe como a função print funciona internamente a gente sabe o que ela faz ela escreve na tela os valores os textos as mensagens que a gente passa pra função na verdade existem dois tipos de funções duas grandes categorias as funções internas buin e as funções definidas pelo usuário print é uma função interna da linguagem já as funções definidas pelo usuário são aquelas que Nós criamos e a gente pode criar funções quando uma funcionalidade específica não está presente não existe numa biblioteca no módulo por exemplo ou a gente deseja modularizar essa funcionalidade e como é que
a gente cria funções em Python a gente cria as funções usando a palavra-chave Def de define a gente vai definir a função e a ideia é assim Def você vai dar um nome para essa função opcionalmente você vai ter argumento ou uma lista de argumentos Quando eu digo opcional é porque às vezes você vai usar às vezes não dois pontos e aí indentado aqui você vai ter as instruções o bloco de códigos que essa que essa função vai realizar instruções certo então a instrução Def cria um objeto atribui um nome a ele você codifica esse
objeto colocando um bloco de códigos aqui dentro vamos ver um exemplo de uma função Bem Simples então eu vou definir uma função que eu vou chamar de mensagem toda função vai ter os parênteses então é obrigatório você colocar os parênteses aqui na frente às vezes vai ter alguma coisa dentro dos parênteses às vezes não nesse caso não vai ter porque a função não vai receber nenhum parâmetro então dois pontos enter veja que automaticamente o cursor foi indentado isso é importante tá essa indentação é para indicar o que está dentro dessa função e o que não
está e aqui a gente pode colocar vários tipos de de de outras instruções de comandos etc por exemplo ex eu quero chamar uma outra função inclusive como print e colocar uma mensagem do tipo boson treinamentos em tecnologia aí eu posso colocar quantas instruções eu precisar colocar um outro print aqui embaixo por exemplo curso completo de Python as duas instruções estão dentro dessa função mensagem se a gente executar isso aqui não vai acontecer nada perceba que nada apareceu aqui na saída por quê Porque a função foi definida foi criada tá na memória mas não foi usada
então a ideia das funções é essa você define a função você a cria e ela fica guardada armazenada esperando o momento correto de ser utilizado para usar você chama a função como é que você chama uma função fora da função evidentemente você chama o nome da função com os parênteses e se houver algum argumento um valor que você precise passar paraa função processar você coloca dentro dos parênteses se não houver como é o caso É só abrir e fechar parêntese executar e ver as duas mensagens aparecendo simultaneamente aqui Inclusive tem um erro aqui se o
é minúsculo rodar de novo tá lá então as duas instruções foram executadas ao mesmo tempo na sequência mas dentro da mesma função porque elas foram definidas como um bloco de código bom essa função não recebeu nenhum argumento argumento é um valor que você passa pra função realizar o seu trabalho bom eu vou criar agora uma função que recebe um argumento ou mais Então vou comentar isso aqui e agora vamos criar uma função com argumentos função com argumentos por exemplo vamos supor que eu quisesse ter uma função que soma dois números certo Def vou dar um
nome para ela soma e aqui dentro dos parênteses eu vou dizer quais são os valores que serão somados na forma de argumentos os argumentos nada mais são do que variáveis São muito parecidos com variáveis eu vou dar o nome de a e b e a gente separa os argumentos por uma vírgula a vai receber um valor B vai receber outro valor e esses valores são transferidos para dentro da função então esses argumentos sab são como como se fossem porteiros que recebem a informação e levam para dentro então a gente vai colocar aqui dois pontos enter
E aí a função vai fazer alguma coisa com esses valores no caso eu quero que ela some os dois valores e por exemplo Imprima na tela esses valores Então vou colocar print aí eu escrevo a + b então vai imprimir o somatório desses dois valores aqui para usar essa função você chama a função e passa os dois valores que você quer somar aqui dentro por exemplo Suponha que eu quero somar 12 E7 então escrevo 12,7 ao chamar essa função o valor 12 automaticamente é copiado pro argumento a e o valor 7 automaticamente é copiado pro
argumento B que na verdade se transforma em variáveis dentro da função e aí o somatório desses valores será impresso na tela vamos executar para ver tá lá ó 19 12 + 7 19 então agora sempre que eu quisesse somar dois números eu posso usar essa função de soma que obviamente é uma função super simpl não precisaria dela mas a ideia é a gente começar a entender como é que se criam as funções passo a passo desde as mais simplesinhas até as funções mais complexas veja aqui neste exemplo o valor que foi calculado é simplesmente impresso
na tela eu não consigo fazer mais nada com ele Além de olhar esse valor no terminal mas talvez eu precisasse desse valor para continuar realizando um cálculo mais complexo um cálculo que tem vários Passos ou eu precisasse armazenar esse valor em algum lugar nesse caso eu posso fazer com que a minha função retorne o valor para dentro de uma variável ou para outra função e isso a gente consegue utilizando a palavra-chave return Então vou vou comentar isso aqui e fazer um outro exemp com return vamos supor que eu queira uma função que multiplique dois números
então eu vou criar essa função com Def o nome dela vai ser Mult por exemplo e ela vai receber os argumentos x e y os nomes dos argumentos pode ser podem ser os nomes que você quiser respeitando as normas de nomenclatura para variáveis tá dois pontos e aí a gente faz o seguinte return a + b aliás a+ b não X mais Y então o que que vai acontecer x vai ser somado com y e esse valor será retornado pela função para ser guardado ou utilizado em um outro processo em vez de simplesmente ser escrito
na tela e sempre que que for encontrada a instrução return na função a função encerra mesmo que você tenha mais código depois escrito aqui esse código não será executado se a instrução return for executada é muito comum a gente ter por exemplo condicionais dentro de uma função que fazem testes lógicos e determina o que que vai ser executado na sequência tá E assim que a instrução return ela é encontrada a função retorna O valor e encerra e para de fazer os outros testes Então vamos usar a nossa função para multiplicar dois valores Digamos que eu
tenho os valores nas variáveis a por exemplo 5 e B por exemplo 8 e aí eu quero armazenar em c o resultado dessa multiplicação como é que eu faço C recebe mul e aí eu passo os argumentos a e B as variáveis a e b então o que está dentro da variável a vai ser copiado pro argumento x o que está em B vai ser copiado transferido pro pro argumento Y veja que você não precisa na hora de chamar a função usar os mesmos nomes aqui dentro que você usou na hora de criar não é
necessário isso podem ser nomes diferentes O importante é a ordem o primeiro valor aqui vai ser copiado pro primeiro argumento o segundo valor vai pro segundo argumento E aí como essa função tem a instrução return O valor vai ser calculado aqui eu coloquei mais mas é vezes né gente multiplicação x ve Y eh então O valor vai ser multiplicado e retornado e esse retorno se dá na forma de um operador de atribuição que vai guardar esse valor na variável c e aí a gente pode imprimir na tela uma mensagem do tipo produto de A e
B é C beleza vamos testar Então vou executar o programa o produto de 5 e 8 é 40 beleza 5 x 8 40 claro que o usuário poderia ter fornecido esses números poderiam ter de um banco de dados enfim não importa de onde vieram o que importa é que ao executar esta linha Aqui Esta função foi chamada E aí o código dentro dela que foi executado retornando o valor paraa variável c Vamos fazer um outro exemplo de função Simples então vou comentar essa função aqui vamos supor uma função que divide dois números tá então eu
vou criar uma função com Def vou chamar ela de div e ela vai pegar o número k e dividir pelo J por exemplo você pode usar os nomes que você quiser aqui beleza div kj aqui a gente tem um problema quando você vai dividir um número pelo outro você vai dividir por exemplo k por j k é o numerador J é o denominador o problema é o seguinte a gente pode fazer qualquer tipo de divisão que a gente queira porém se o denominador o número que vai embaixo na fração for zero você não consegue realizar
essa divisão porque na matemática convencional a divisão por zero não é definida isso vai retornar um erro Vamos fazer um teste eu vou dar um return k dividido por J Então beleza minha função inha tá aqui ó tá definida agora vamos dar uma incrementada eu vou usar essa instrução if name igual igual e aí entre aspas Main que a gente já viu em uma outra aula do curs outra parte do curso um pouquinho para trás eh eu vou usar isso aqui para separar a área onde a gente cria as funções classes etc da área que
efetivamente vai executar o código e de agora em diante a gente pode trabalhar dessa forma usando ifname igual a mame para para indicar o ponto principal de entrada no programa e separar isso organizando melhor o código Deixando as declarações de funções e outros tipos de elementos fora dessa área mas eu vou usar a função aqui dentro e vou usar assim eh a int input vou pedir pro usuário digitar o número então digite um número beleza e aí B de novo a mesma coisa digite outro número copiar e colar digite outro número tranquilo agora eu vou
dizer aqui o resultado igual a minha função div que vai vai receber o a e o b e aí vamos escrever na tela a dividido por B é igual a r de resultado certo vamos testar esse programinha aqui executando digite um número 6 digite outro número 3 6 di 3 = 2.0 lembre-se que esse aqui é o operador de divisão real funciona mas veja o que acontece se eu passar 0 como denominador 6 Dio por 0 pronto gerou um erro zero Division error é o nome do Nosso Erro divisão por zero essa divisão aqui lá
Não não vai ocorrer is gera um erro veja que ele diz até onde foi o erro foi na instrução return k dividido por J mas paraa frente a gente vai vai aprender a fazer o trat de exceções ou tratamento de erros em Python da forma mais adequada mas aqui a gente já consegue fazer alguma coisinha pensando em termos de um condicional Então na hora de criar essa função Vamos colocar uma condição aqui dentro que impeça a divisão por zero caso o usuário tem de fazer esse cálculo então A ideia é a seguinte quando que essa
divisão vai ocorrer quando J for diferente de zero Então o que a gente tem que fazer é o seguinte botar um if J diferente de zero E aí vamos alinhar isso aqui direitinho return k sobre J caso contrário ELS aí a gente manda retornar uma mensagem por exemplo impossível dividir por zero então já é um tipo de um tratamento primário que a gente tá fazendo na nossa função veja que a função agora tem quatro linhas de código vamos testar rodando vamos supor usuário digitou nove e depois digitou 5 então 1.8 é o resultado perfeito vamos
executar de novo agora usuário digitou 9 e digitou zero nesse caso ó 9 divido por 0 ig a impossível dividir por zero então o programa não travou mais e a função tem duas instruções return para tratar os dois casos o caso em que a divisão é possível e o caso em que a divisão é impossível portanto a gente pode usar o return Quantas vezes a gente precisar mas só um deles é que vai ser efetivamente executado vamos fazer mais um exemplo comentar tudo isso aqui e agora a gente vai criar um outro programinha para calcular
vamos ver valores de quadrados os quadrados de números e veja números no plural então eu vou definir uma função que eu vou chamar de quadrado e essa função vai receber como argumento um valor esse valor não vai ser um valor único vai ser na verdade uma sequência de valores por quê Porque as funções podem receber como argumentos não só valores únicos como o A ou B ou x ou Y mas na verdade a gente pode passar também sequências inteiras uma lista inteira de valores uma tupla inteira de valores para serem trabalhadas dentro da função aqui
dentro da função eu vou criar uma variável quadrados quadrados que vai ser uma lista vazia certo e aí para cada x dentro do valor que foi passado para essa função na minha lista vazia de quadrados eu vou usar o método a e vou colocar lá dentro X elevado ao quadrado que o elevado é o asterisco asterisco depois que essa lista estiver preenchida a gente dá um return e manda retornar a lista de quadrados então eu já posso ter lá for dentro da função Posso ter o que eu quiser dentro da função inclusive chamar outras funções
para serem trabalhadas aqui dentro bom então vamos lá agora o programa principal if name igual M se o nome invocado for principal ou seja programa principal e aqui lembre-se são dois undor são dois caracteres tá e o m entre aspas Então se o name for igual a m a gente vai ter uma lista por exemplo vou chamar de valores e vou colocar nessa lista aqui alguns valores 2 5 7 9 12 e aí eu vou ter uma variável resultados que vai receber o retorno do chamado dessa função quadrado passando como argumento Opa com parênteses e
a lista de valores valores eu vou passar a lista inteira e essa lista vai ser tratada dentro da função calculando o quadrado de cada um dos valores usando esse laço for e anexando cada um desses quadrados em quadrados e o que vai ser retornado justamente o conteúdo desta lista que eu posso com outro laço for for G em resultado chamo do que eu quiser isso aqui aí eu mando imprimir o valor de G vamos ver o que aparece aqui para nós executando 425 49 81 144 que são os quadrados desses números aqui portanto a função
conseguiu trabalhar tranquilamente com todos os valores que foram passados Tranquilo então isso é o básico de funções como criar uma função a gente viu nesse vídeo como a gente declara com a palavra Def os nomes das funções a gente agora sabe que existe existe uma lista de parâmetros ou argumentos que é opcional você vai usar se precisar ou não e as funções vão executar os blocos de código que você coloca dentro delas que podem ter quaisquer tipos de códigos e opcionalmente você pode retornar valores e quando eu digo opcionalmente não é que você escolhe retornar
ou não que às vezes a gente retorna às vezes não depende como a função vai operar e quando você precisar retornar valores você utiliza a função return e essa função return e retorna O valor que vai ser usado em algum outro processo por exemplo nesse caso aqui armazenando dentro de uma variável as funções podem receber quaisquer tipos de valores variáveis de qualquer tipo de dado e inclusive sequências de valores como a gente viu nesse exemplo aqui e também vimos como começar a fazer uma separação uma modularização melhor do nosso código utilizando ifname igual M separando
da área de declaração de funções e eu posso ter quantas funções eu quiser declaradas aqui as funções que eu declarei anteriormente eu poderia comentá-las em cont control cuu Olha só descomento uma função descomento a outra tranquilo e todas elas estão agora acessíveis dentro do meu programa aqui posso chamá-las à vontade e uma função pode chamar outra função se precisar do auxílio de algum bloco de programação É só isso que a gente tem para ver sobre funções não temos mais coisas para estudar sobre funções o que faremos logo logo enquanto isso tente criar funções simples para
realizar tarefas triviais só números fazer pequenos cálculos matemáticos trabalhar com Strings fazer operações em cima de sequências e Execute Essas funções para você poder treinar essa técnica de programação que é extremamente útil e muito importante outra coisa importante que a gente precisa saber sobre as funções é que é possível a gente utilizar parâmetros opcionais e valores padrão também ao criá-las acontece Às vezes da gente não ter a necessidade de passar um parâmetro pra função e a gente pode então usar um valor padrão previamente codificado Como assim vejamos alguns exemplos eu vou prosseguindo aqui eu vou
apagar esse código do ifname iG M vou comentar essa função aqui de cima e aí eu vou criar uma nova função aqui eu vou criar uma função de Contagem vou chamar essa função de contar que que essa função vai fazer ela vai escrever na tela um caracter X número de vezes vamos supor que por padrão eu sempre precise escrever na tela um caracter 11 vezes então eu crio um parâmetro que eu vou chamar de de número e atribuo o valor 11 a ele aqui dentro na chamada da função e aí eu vou dizer qual é
o caracter caracter igual e aí entre aspas porque é um caracter sinal de mais e aí inicio minha função então aqui é o seguinte o argumento num ele é inicializado com 11 significa que ao chamar a função se eu não passar nenhum valor diferente será usado o valor 11 aqui dentro do corpo da função a mesma coisa pro caracter ele foi atribuído o sinal de mais o símbolo de adição se eu não passar nenhum outro caracter quando eu chamar essa função vai ser usado esse sinal aqui vai ser usado para quê vamos codificar eu vou
criar um laço for e vou dizer for e in Range de um até o valor de número ou seja de 1 até 11 e eu mand imprimir na tela o caracter certo veja que interessante o nome que eu uso aqui dentro é o mesmo nome que eu usei aqui mas na hora de chamar não precisa ser o mesmo nome Vamos fazer um teste aqui eu vou primeiramente chamar a função contar sem nada veja que essa função não tem instrução return então ela não retorna valor ela só executa uma tarefa que vai aparecer na tela então
eu vou executar com o contar Deixa eu subir um pouquinho aqui o terminal executo E aí olha só ela escreveu 11 10 vezes na tela o sinal de mais de 1 a 11 usando o Range poderia usar uma função desse tipo para criar padrões a serem exibidos na tela uma moldura por exemplo né já deixo codificada a função que monta automaticamente isso pra gente agora vamos supor que eu quisesse passar um caracter diferente em vez de passar o sinal de mais a nesse caso na hora de chamar a função em vez de colocar contar aqui
dentro do parêntese eu especifico que o parâmetro caractere é igual a alguma outra coisa por exemplo um e- comercial e veja que aqui isso é muito importante aqui eu usei o nome do parâmetro ou do argumento não é o nome de uma variável qualquer então aqui neste caso neste exemplo Obrigatoriamente o nome que eu ponho aqui tem que ser o mesmo nome que foi declarado na função e quando eu executo isso aí ele coloca na tela SS 10 vezes o meu caracter novo O caracter que foi passado aqui então se não passa nada ele usa
este caracter Porque ele é o valor padrão e como é que a gente sabe que ele é valor padrão porque ele é atribuído dentro da lista de argumentos na hora de criar de definir a função mas se eu quiser eu posso atribuir outro valor e esse outro valor é que vai ser usado Ele vai substituir o valor padrão daqui a mesma coisa para contagem de números vamos supor que não é 11 eu quero passar um número menor então eu posso passar num igual a 5 por exemplo e nesse caso é número não vai aspas então
ao executar quatro vezes o sinal de mais de 1 a c significa quatro vezes porque o c não conta você deve lembrar isso da aula sobre função Range E aí Finalmente eu posso passar Claro os dois valores se eu quiser então vamos supor eu quero de 1 a 8 ou seja sete vezes só que o caracter que eu quero passar caractere é vamos sup o arroba então executo E aí ele mostra o arroba para mim aqui as sete vezes que eu passei Beleza então isso aqui a gente chama de valores padrão agora na prática eu
não preciso especificamente escrever os nomes dos argumentos aqui se eu os passar na ordem correta ou seja na mesma ordem que eles foram criados na hora de definir a função não preciso escrever seus nomes então eu poderia simplesmente escrever assim seis por exemplo e o caracter pode ser @r mesmo é dessa forma assim aí quando eu executo ele funciona da mesma forma tá vendo eu só sou obrigado a escrever os nomes dos parâmetros aqui quando eles estiem fora de ordem aí não tem jeito se eu colocar o ar primeiro e o seis depois a gente
vai ter problemas porque o primeiro parâmetro é um número não é um caractere e o segundo é um caractere e não um número então o que que vai acontecer Vamos testar se eu passar fora de ordem vamos supor passei este caractere e depois um valor numérico como oito quando eu executar aí ele vai dar esse erro aqui de tipo os tipos estão errados tá string não pode ser interpretada como inteiro certo então tem que passar na ordem correta Além disso eu também posso fazer mesclagem desses parâmetros nesse caso os dois parâmetros aqui são opcionais porque
a gente pode ou não atribuir um valor na hora de chamar a função e o valor vai ser usado ou que eu atribuí ou o valor que tá aqui dentro na própria declaração mas eu poderia fazer o seguinte por exemplo Deixar o n iG 11 e em vez de colocar caracter igual a mais colocar só caracter nesse caso Ele reclama comigo por quê Porque aqui também existe uma ordem correta este caracter aqui na verdade ele tem que est no comecinho então eu vou tirar ele daqui cont contrl x vou colocar antes do num vírgula e
vou apagar essa vírgula do final veja que interessante agora não aparece o erro Então primeiramente eu coloco a lista de todos os parâmetros que são obrigatórios obrigatório significa na hora que eu chamar a função Obrigatoriamente eu tenho que passar um valor para ele porque não tem nenhum valor padrão definido então precisa ter o valor e depois da lista de parâmetros obrigatórios eu posso vir com os parâmetros opcionais que são esses que já T um valor padrão atribuído então no caso o número eu posso ou não passar o valor fica a critério da chamada da função
então por exemplo eu poderia chamar assim ó somente passando o primeiro parâmetro que é obrigatório que é o caracter aí executo ele imprime lá na tela é as 10 vezes o caracter hashtag que eu acabei de passar tá aí 10 hashtags perfeito se eu quiser passar um valor diferente eu também posso aí no caso eu ponho a vírgula e coloco o número diferente por exemplo dois eu executo e ele mostra para mim ali de um a dois é uma vez só então só só mostrou na tela um caracter se colocar três ele vai colocar dois
caracteres e assim sucessivamente se eu quiser nomear os parâmetros aqui na hora de Pass pass também posso Sem problema caractere igual alguma outra coisa e número igual alguma outra coisa E aí nesse caso ao nomear eu posso alterar a ordem deles eu posso dizer que o caracter vem depois e o número vem antes Olha que interessante como eles estão nomeados aí a ordem não importa vai funcionar do mesmo jeito Vamos fazer um último exemplo disso aqui para fixar bem esse esse conceito todo deixa eu comentar essa função aqui de cima que eu não vou usar
exemplo essa linha aqui eu vou apagar e a gente vai fazer o seguinte e vou criar três variáveis que vou chamar de X vou atribuir o valor 5 Y eu vou atribuir 6 e z pode ser três por exemplo aí eu vou definir uma função Def que eu vou chamar de soma und Mult soma ou multiplicação essa função vai receber os argumentos a b e c porém C terá um valor padrão Zero Certo a e b não tem valor padrão são obrigatórios então Obrigatoriamente eu tenho que fornecer os valores de A e B quando eu
chamar essa função mas eu não preciso sempre fornecer o valor de C somente quando ele for diferente de zero dois pontos aí eu vou fazer um teste se C for igual a 0 então faça multiplicação return a x b senão else return a soma dos três valores a + b + c Então olha que interessante se o usuário passar só a e b c será assumido como zero e aí quando c é zero ele multiplica os dois números se o usuário passar os três valores aí será feita a soma então é uma função interessante já
porque o comportamento dela vai depender dos valores que o usuário passar e do número de argumentos que o usuário passar Então dependendo do que o usuário fornecer pra função na hora de chamar a função vai ter um comportamento distinto fazendo cálculos distintos inclusive isso é um tipo de comportamento que a gente vai ver bastante quando a gente for estudar orientação objetos em Python um pouco mais para frente tá então eu vou ter uma variável res de resultado que vai receber e soma Mult em cima dos valores A B e C E aí eu vou imprimir
na tela o resultado beleza vamos supor que primeiro eu chamei essa função somente com x e y são as variáveis que a gente criou aqui em cima lembre que a gente tem as variáveis x y e z x é 5 Y é 6 então chamei só com x e y 5 e 6 vamos ver o que ele nos retorna retornou 30 que que é 30 5 x 6 então quando eu passei só dois argumentos foi feita multiplicação por quê Porque o terceiro argumento que seria o c não foi passado lembrando os nomes que eu passo
aqui não não precisam necessariamente ser iguais aos nomes da declaração da função os valores serão copiados certo de uma de uma variável pro seu argumento correspondente na ordem só vou usar os mesmos nomes se eu tiver trabalhando com os argumentos nomeados como no exemplo anterior agora olha só Imagine que eu passe também o valor de Z né essa outra variável aqui é tr vamos ver o que ele faz agora passei os três valores nesse caso em vez de 30 Ele trouxe 14 número menor por quê Porque ele somou os três números tá 5 + 6
11 + 3 14 então o comportamento da função muda de acordo com o número de argumentos que são passados e olha só que interessante agora você sabe como criar funções que podem receber números diferentes de argumentos e ter comportamentos diferentes de acordo com esses argumentos passados em Orient objetos como eu já citei lá na frente a gente vai estudar isso e o nome que se dá a esse tipo de comportamento É polimorfismo e aqui em funções é simplesmente o valor padrão com parâmetros opcionais e obrigatórios vimos tudo que há sobre funções em Python Ainda não
Ainda tem mais algumas coisinhas pra gente tratar sobre funções nas aulas seguintes mas enquanto isso faça seus próprios exemplos tente criar funções que usam parâmetros eh opcionais e obrigatórios e parâmetros em quantidades distintas para você chamar Essas funções posteriormente e assim treinar o assunto complementando o nosso estudo de funções vamos falar um pouquinho sobre escopos de variáveis vou criar um arquiv para isso pra gente poder estudar este tal de escopo vou chamar de escopo ppy que que é esse escopo o escopo ele vai indicar a visibilidade de uma variável dentro do código ou seja dentro
desse código ou onde essa variável é visível e acessível existem dois grandes tipos de escopos o escopo global e o escopo local Então os escopos são escopo global e local uma variável local ou seja de escopo local ela é geralmente criada dentro de uma função de uma rotina e ela existe somente dentro dessa função onde ela foi declarada sendo inicializada toda vez que a função é chamada e você não consegue acessar diretamente essa variável de fora da função ou seja ela é uma função uma variável que funciona apenas localmente dentro da função já uma variável
de escopo global ela é declarada ou seja criada fora das funções e pode ser acessada em toda a parte do seu código por todas as rotinas que existem no código ou no módulo onde ela é definida e também dá para acessar variáveis globais em outros módulos Se eles forem importados para dentro dentro do script atual geralmente a gente usa variáveis globais para armazenar valores que são constantes no programa acessíveis para todas as funções Mas uma coisa importante para ser dita logo de cara é que a gente tem sempre que tomar cuidado quando trabalharmos com variáveis
globais e sempre que possível usarmos apenas variáveis locais e a gente vai ver alguns exemplos agora para entender melhor o funcionamento disto então vamos lá eu vou criar uma variável aqui que eu vou chamar de var global que é para ficar bem claro do que se trata essa essa variável e vou vou atribuir a ela e uma frase curso completo de Python Então essa aqui é é o conteúdo da minha variável Global também vou definir uma função que eu vou batizar de escreve texto essa função como el Como o próprio nome diz Ela escreve um
texto na tela dentro dessa função eu vou declarar outra variável que eu vou chamar de var local e essa variável vai ter um texto diferente por exemplo eu vou colocar meu nome aqui e aí eu vou usar o comando print duas vezes para imprimir na tela os conteúdos dessas variáveis Então primeiramente a variável global e a gente escreve var und Global aqui beleza aí o vou copiar essa linha e vou alterar aqui embaixo para a variável local e aqui a gente altera o nome da variável para var local tá aqui a minha função escreve texto
Note que a var Global tá fora da função e a var local dentro da função agora vamos criar a rotina principal do nosso programa if name igual Main que que a gente vai fazer Vamos colocar uma mensagem Executar a função escreve texto e aí na linha seguinte a gente chama essa função para chamar função é só colocar escreve texto passar os parênteses e pronto ela não recebe nenhum argumento Então é só isso executou a função Agora eu vou usar o print para tentar acessar as variáveis diretamente Vamos tentar acessar as variáveis diretamente a gente sabe
que se eu trabalhar E se eu executar essa função escreve texto a variável local aqui dentro provavelmente vai estar acessível e provavelmente a Global também a gente já vai testar isso já já agora Se eu tentar acessar as variáveis diretamente Vamos ver eu vou deixar um print aqui PR gente acessar a variável Global aliás para que digitar né só copiar isso aqui de cima porque são os mesmos comandos que eu vou executar só que fora da função veja que na mesma hora em que eu escrevo essa linha de acesso à variável local fora da função
o editor de texto já marca var local e colocando o cursor do mouse em cima aparece a mensagem var local is not defined variável local não está definida bom eu vou comentar essas duas linhas para começar não vou executá-las no momento e vou executar agora o código pra gente ver o que aparece Olha só Executar a função escreve texto variável Global curso completo de Python beleza essa variável aqui ela foi lida dentro da função e foi escrita na tela variável local Fábio dos Reis a variável criada dentro da função também obviamente é acessível e foi
escrita na tela agora vamos tentar acessar as variáveis diretamente para isto eu vou eu vou descomentar essa primeira linha da variável global e executar quando eu executo aparece aqui variável Global curso completo de Python perfeito ou seja a variável Global pode ser acessada de qualquer parte do programa de dentro da função de fora da função do módulo principal de onde eu quiser agora se eu descomento a variável local Olha o que acontece erro aparece um erro aqui embaixo é um name error Esse é o tipo do erro dizendo que a variável local não está definida
ele o editor inclusive Me dá uma dica você não tá querendo dizer que é variável Global por acaso então a variável local não é acessível fora da função ela só pode ser usada aqui dentro da função é claro que os valores que ela retorna que ela armazena a gente consegue acessar com um print ou com uma instrução return mas acessá-la diretamente somente dentro da função porque ela é do tipo local beleza sabemos então que não dá para acessar direto a variável local eu vou simplesmente apagar essa linha aqui porque ela não faz sentido agora vamos
fazer o seguinte vamos fazer uma modificação nesta função na função escreve texto vamos supor que eu crie uma outra variável dentro dela chamada var Global com o mesmo nome daquela variável que eu queri ali fora e vou atribuir um valor diferente por exemplo bancos de dados com SQL agora a pergunta é a seguinte quando eu executar esse print aqui que que vai aparecer escrito na tela ó esse aqui vai aparecer curso completo de Python ou bancos de dados com SQL e mais quando eu executar este outro print aqui fora da função da variável Global o
que que vai aparecer escrito curso de Python ou bancos de dados vamos testar rodando Então o que vai acontecer é o seguinte Olha só variável Global bancos de dados com SQL mas aqui embaixo variável Global curso completo de Python então o que que aconteceu presta atenção a variável global que eu alterei dentro da função teve seu valor alterado mas a variável Global externa a original teve o seu conteúdo mantido isto significa na verdade que ao atribuir um valor paraa variável Global dentro da função esse valor não foi atribuído para esta variável aqui na verdade o
que aconteceu é que foi criada uma nova variável dentro da função com escopo local de mesmo nome da variável externa Global Então eu tenho duas variáveis chamadas var Global agora no meu programa e são diferentes entre si uma é acessível só dentro da função escreve texto e outra é acessível em qualquer parte do programa porque ela é Global Então tem que tomar muito cuidado com isso porque o que aconteceu aqui é o seguinte eu atribuí o valor achando que ia alterar o conteúdo da variável Global mas não alterou criou uma nova variável local e muito
provavelmente não é esse o comportamento que a gente queria no programa senão a gente teria utilizado um nome diferente de variável Então como é que a gente faz para alterar o conteúdo de uma variável global de dentro de uma função a gente vai ter que dizer explicitamente pro Python que a gente quer acessar a variável de fora da função e não criar uma variável nova dentro dessa função isso a gente faz da seguinte forma é bem simples antes de atribuir o valor para variável Global a gente vai escrever a palavra-chave global e vai especificar o
nome da variável var Global com esta instrução a gente tá dizendo pro Python que este nome aqui var Global se refere na verdade a uma variável global que foi criada aqui fora e portanto na próxima linha quando eu atribuir um valor para ela esse valor vai ser atribuído para esta variável aqui de fora não será criada uma variável nova de modo que agora sim eu consigo acessar aquela variável externa e alterar o seu conteúdo veja que acessá-la para ler o conteúdo eu já conseguia fazer antes mas para poder alterar o seu conteúdo eu preciso explicitamente
declarar que ela é global e sintaticamente importante essa instrução Global var Global tem que vir antes da atribuição e não na mesma linha você não pode escrever Global var Global igual bancos de dados com SQL isso não vai funcionar então primeiro você diz que a variável é Global depois você faz a atribuição de valor bom Vamos testar para ver se isso aqui funciona mesmo então vou executar o programa que que a gente espera agora que ambas tenham o mesmo conteúdo certo então vamos ver variável de dentro da função bancos de dados com SQL a variável
local Fábio dos Reis tentando acessar as variáveis diretamente variável Global bancos de dados com maisq com SQL Olha que interessante agora a variável externa realmente teve seu conteúdo alterado por meio desse comandinho Global Agora sim a gente consegue fazer a manipulação da variável global e da variável local de forma adequadas Tranquilo então vimos nessa pequena lição as diferenças entre variáveis globais e locais como a gente declara essas variáveis como a gente usa essas variáveis dentro e fora de funções também e é importante lembrar dessa lição que as variáveis globais são para valores que você usa
ao longo do programa e as variáveis locais para rotinas internas dentro de uma função que só vão ser utilizadas ali dentro e no máximo retornadas para algum algum outro processo qualquer no programa terminamos o assunto de funções não ainda tem coisa sobre funções pra gente estudar e a gente vai fazer isso nas próximas lições nas aulas anteriores ao rodar diversos programas muitas vezes ocorreram erros que foram mostrados embaixo no terminal esses erros são na verdade exceções eventos que ocorrem durante a execução do programa que interrompem o fluxo normal da operação e agora a gente vai
aprender como fazer o tratamento dessas exceções como tratar esses erros Vamos criar um arquinho novo que eu vou chamar de exceções ppy e aqui a gente vai aprender a tratar de forma básica as exceções então o que que é uma exceção uma exceção é um objeto que representa um erro que ocorreu durante a execução do programa então um objeto que representa um erro que ocorreu ao executar o programa isso a gente vai chamar de exceção e quando que a gente precisa tratar a exceção quando a gente suspeita que algum trecho de código algum bloco de
código pode ser afetado por algum tipo de situação de erro a gente tem que se precaver manipulando as possíveis ex que podem ocorrer para evitar dos erros explodirem na cara do usuário quando ele estiver utilizando o programa E para isso a gente vai utilizar uns blocos try except então esses aqui serão os comandinho que a gente vai trabalhar try accept try de tentar e accept de exceção então o que que é um bloco try accept é um bloco no qual você vai dentro do try colocar o código que você suspeita que pode ocasionar um erro
e e dentro do except você vai colocar o tratamento a captura desse eu e por exemplo uma mensagem ou algum tipo de tratamento para esse erro você tá vendo na tela aí uma série de exceções padrão biam que o Python já nos fornece são objetos que já existem e que automaticamente capturam e determinados tipos de erros ou são lançadas quando determinados tipos de erro ocorrem Então a gente vai ter por exemplo Exception que é a classe base para todas as exceções é a exceção genérica um erro que a gente não sabe do que se trata
ou a criação de outros erros a gente vai ter overflow error um cálculo por exemplo ECD o limite máximo de um tipo zero Division error tentou fazer divisão por zero ISO não pode name error um nome de identificador não foi encontrado esse a gente já viu acontecer algumas vezes aqui erro de indentação erro de tipo e assim por diante existem vários tipos de erros que são exceções padrão Betim no Python o que a gente não vai fazer aqui é tratar syntax error erro de sintaxe que é um tipo de erro lançado quando existe um erro
de sintaxe no código que basicamente é um erro de digitação você escreveu o código errado então você vai corrigir isso antes de entregar o programa pro usuário mas outros tipos de exceções são mais difíceis de detectar por isso a gente utiliza o bloco try except chega de falar vamos fazer um exemplo então vamos fazer um exemplo para tratar a divisão por zero vamos supor que eu tenha uma variável N1 na qual o usuário vai digitar um valor então Dea colocar um input aqui pedir pro usuário digitar um número digite um número beleza aí eu vou
pedir pro usuário digitar um segundo número então vou criar a variável n2 e vou pedir para ele digitar outro número bom primeiro eu vou utilizar uma variável r e vou usar a função round dá a divisão de N1 por n2 usando duas casas decimais E aí eu vou imprimir na tela o conteúdo desta variável Então vamos lá resultado e r vamos rodar esse programinha para ver como ele como ele se comporta digite um número 9 e outro número cinco beleza resultado 1.8 molezinha agora vamos ver o que acontece quando a gente coloca o zero como
denominador então 9 e zero pum Olha o erão na cara do usuário o programa trava Esse é o grande problema não é simplesmente exibir um erro é que o programa ele para quando ocorre um Erro interno o programa para de funcionar e o Python diz que nesta linha nós temos um problema que é justamente zero Division error Division by zero a exceção é essa daqui isso é um objeto interno do Python e Division by é explicação do que aconteceu B eu não quero que isso apareça pro usuário que que eu faço então Vamos tornar o
programa mais amigável tratando essa exceção para isso o que a gente vai fazer é o seguinte eu vou usar um bloco try vou escrever try dois pontos e aí dentro desse bloco try eu vou colocar essa minha instrução R = round N1 sobre n2 por quê Porque essa instrução que pode ocasionar um erro quando n2 for zero Então faço esse tratamento aqui beleza eu posso colocar quantas instruções eu quiser pode ser um bloco inteiro de código aqui posso chamar funções o que eu precisar E aí eu vou capturar a exceção eu vou escrever except e
na frente eu posso ou não escrever o nome da exceção se eu não escrever o nome de uma exceção ele captura qualquer exceção que ocorra exceção genérica basicamente ocorreu um erro não sei qual o erro mas ocorreu o programa não vai travar mas eu não vou saber qual é o erro especificamente Mas eu posso especificar a exceção escrevendo o nome zero Division error E aí se ocorrer essa exceção aí sim eu vou colocar uma mensagem personalizada do tipo print não é possível divir dividir por Zero Não É possível dividir por zero então se for digitado
o valor Zero no denominador que é a variável n2 em vez de explodir um erro desse tipo na cara do usuário vai aparecer essa mensagem mais amigável certo agora se o usuário digitar os números corretos o que a gente vai ter é um bloco else aqui no final e o bloco else ele é usado para para executar o comando que tá aqui dentro caso nenhuma exceção tenha ocorrido ou seja se não ocorreu nenhum erro ao tentar executar essa instrução o que tá no else vai ser executado se ocorrer erro o que tá no else não
será executado e o que o que vai ser executado na verdade é o que tá no except que é o zero Division er Então vamos executar de novo para testar primeiro eu testo com números normais 9 di 8 1.12 perfeito agora vamos colocar o zero para ver o que acontece 9 dividido por 0 Olha só não é possível dividir por zero então o usuário Agora ele foi bem informado do que aconteceu não apareceu nenhum tipo de código fonte para ele nenhuma instrução que ele não vai saber do que se trata e o programa Na verdade
não travou Se eu tivesse mais instruções paraa frente o programa continuaria operando normalmente Então essa é a ideia do tratamento de exceções usando os blocos try except e else lembrando dentro do try vai o código que eu suspeito que pode ocasionar um erro dentro do except Eu capturo a exceção que pode ocorrer e trato e no ELS eu coloco o código que vai ser executado caso não haja nenhum erro né dentro do try o else ele é opcional na verdade não necessariamente eu preciso utilizá-lo eu posso capturar múltiplas exceções de V formas por exemplo eu
posso colocar várias exceções separadas por vírgula nessa linha e todas elas são capturadas e um código é executado para elas todas mas o mais adequado é criar uma linha de exceção para cada tipo de erro que pode ocorrer e tratá-los separadamente eu vou fazer um exemplo mais elaborado para mostrar isso agora então vamos lá vou mudar bastante coisa nesse código aqui vou até limpar e matar esse terminal e vamos lá para cima bom que que eu vou fazer fazer eu vou começar aqui em cima declarando uma função que eu vou chamar de divisão função div
que vai receber Du dois parâmetros k e j ou o nome que você quiser e vai dividir um pelo outro então eu vou dizer que return E aí eu vou arredondado vou arredondar dentro da própria função o valor k dividido por J com duas casas decimais certo só isso que essa função vai fazer Bem simplesinha para não nos atrapalhar ok agora aqui no meu corpo principal da função if name igual Main que que a gente vai fazer aqui a gente vai capturar os números que o usuário vai digitar e a gente vai tentar tratar essas
exceções eu vou fazer o seguinte eu vou criar um laço while um laço infinito true E dentro dele eu vou colocar o meu bloco try n neste bloco try eu vou colocar essas duas instruções para digitar o número que a gente tem aqui embaixo então eu vou tiraras daqui e colocar no bloco try Beleza então ele vai tentar ler o número e aí eu vou colocar um Break aqui embaixo bom o que que eu fiz aqui é o seguinte Ele vai tentar ler o número o programa Vai tentar ler o número que o usuário digitou
e guardar nas variáveis N1 E n2 agora o que acontece se na hora de digitar os números usuários sem querer digitar um uma letra ou um símbolo ou esquecer de digitar um número e apertar enter direto nesse caso a gente vai ter um erro que não é um erro de divisão por zero é um erro diferente é um erro de valor então este é o erro que eu vou tratar aqui com o meu except e o nome do erro é value error beleza e aí eu coloco um print aqui com uma mensagenzinha para tratar esse
erro do tipo ocorreu um erro ao ler o valor dente novamente isso aqui finaliza o meu laço oio Então vamos entender o que que tá sendo feito aqui o I true é um laço infinito o usuário vai digitar o primeiro segundo números se os números estiverem Ok ou seja se o try funcionar a instrução Break é executada também e finaliza o laço while aí o programa Vai fazer outras coisas que a gente já vai programar agora se o usuário em N1 ou n2 digitar um valor que não é um número Nenhuma das três instruções vai
ser executado que vai ser executado é o except Então vai aparecer essa mensagem na tela e o laço while prossegue ou seja vai pedir pro usuário digitar de novo os números veja que interessante esse tratamento então enquanto o usuário não digitar dois números válidos o programa Vai ficar dizendo para ele que ocorreu um erro ao ler o valor e vai pedir para ele tentar novamente a partir do momento que ele digitou os números corretos agora a gente vai fazer os nossos cálculos então eu vou tirar a identação voltar o cursor Aqui para baixo do Wi
e aqui eu vou usar outro Block try agora eu vou pedir para ele tentar fazer a divisão ou seja resultado igual minha função div passando os valores N1 e n2 Então essa instrução vai tentar realizar a divisão de N1 por n2 chamando a nossa função aqui a gente sabe que existe o problema da divisão por zero Então a gente vai capturar uma exceção except e aí eu vou escrever zero Division error veja que ele já traz para mim que é exceção aí eu vou colocar essa mesma mensagem aqui de baixo não é possível dividir por
zero beleza e se ocorrer algum outro erro desconhecido algum erro que eu não Previ então eu vou colocar uma outra exceção só que genérica a exceção genérica significa eu não vou escrever o nome da exceção aqui eu vou escrever só except e aí eu coloco um print com uma mensagem do tipo e ocorreu um erro desconhecido e no else eu coloco um resultado aí vou copiar e vou recortar esse código aqui e jogar para cá Aí ele vai tentar realizar a divisão se der certo aí ele exibe o resultado na tela Isso aqui embaixo eu
posso eliminar beleza temos dois Blocks try um na hora de ler o número com sua exceção value error e um na hora de fazer o cálculo com a sua exceção zero Division error Além disso tem uma exceção genérica também E aí eu posso finalizar ainda isso aqui usando uma outra palavrinha chave que é a palavrinha finally que que é o finally o finally ele vai ter um bloco de código associado que vai sempre ser executado Independente de ocorrer ou não um erro Independente de ter ou não uma exceção capturada do ELS ser executado ou não
o finally será executado então eu vou colocar aqui uma outra mensagem print eh fim do cálculo / n fim do cálculo claro eu tô colocando mensagens para exemplificar mas não precisam ser só print você pode colocar o código que você precisar aqui dentro inclusive fazendo outros cálculos chamando outras funções classes enfim o que for necessário para tratar o erro bom tá aí nosso código tá pronto vamos executar para ver o que acontece tem que fazer vários testes aqui primeiro teste digitando os números corretos os números esperados então um número inteiro outro número beleza do zer
fim do cálculo rodando de novo digamos agora que o usuário foi digitar um número digitou bonitinho aí sem querer ele digitou ou esbarrou numa tecla de símbolo ou de letra e digitou Sei lá uma letra F ocorreu um erro ler o valor tente novamente veja não travou a aplicação O que aconteceu é que foi capturada essa exceção erro de valor foi impressa a mensagem na tela e aí o programa ele continua funcionando ele pede pro usuário digitar o próximo número porque isso aqui tá dentro de um laço Y que só sai quando os códigos efetivamente
forem executados com sucesso então eu vou digitar outro número mais outro e agora o cálculo foi realizado com sucesso e veja que o fim do cálculo aparece aqui essa instrução sempre tá Independente de funcionar ou não e agora vamos fazer o teste da divisão por zero então executo de novo dig o primeiro número 6 segundo número zero não é possível dividir por zero agora foi capturada a exceção aqui embaixo zero Division error não é possível dividir por zero Beleza capturamos então essas exceções todas eu posso fazer mais um último teste ainda vou rodar digite um
número 9.0 na mesma hora ocorreu um erro ler o valor por quê Porque aqui em cima a nossa função no nosso bloco try ele tá configurado para converter para inteiro o valor só que a gente digitou um valor 9.0 de ponto flutuante ele não conseguiu fazer essa conversão direto do input tá ele espera um número inteiro veja não travou a aplicação digite novamente 6 e 7 e tá aí 0.86 número bonitinho arredondados da função de divisão né com a função round e o programa está agora funcionando perfeitamente Então é assim que a gente trabalha com
com a manipulação de exceções no Python utilizando try pro Bloco de código que a gente quer tentar executar os except para capturar as exceções o else para sempre mostrar eh um código caso não ocorra nenhum erro e o final para sempre mostrar um código Independente de ter ocorrido o erro ou não agora tem mais uma coisa que a gente pode fazer ainda com relação a exceções que é forçar o levantamento ou lançamento de uma exceção então a gente pode usar uma palavra-chave especial chamada Rais para forçar o lançamento de uma exceção se uma condição específica
ocorrer Então não precisa esperar o Python detectar um problema para lançar excessão eu posso forçar a hora que eu quiser como é que eu faço isso deixa eu limpar o terminal e fechar aqui a gente vai fazer um exemplinho da instrução Raise para isso eu vou inclusive criar um novo arquinho que eu vou chamar de exceções do ou melhor exceções Raise nesse aqui a gente vai trabalhar com com o Suponha que a gente tem um programa que realiza um cálculo esse cálculo só funciona se forem fornecidos valores positivos se for digitado um valor negativo ocorrerá
um erro que pode travar minha aplicação B nesse a gente pode lanar forçosamente uma exceção no momento adquado vamos fazer esse exemplo então eu vou começar importando da biblioteca math o sqrt Vamos trabalhar com raiz quadrada então A ideia é a seguinte existe raiz quadrada de número negativo convencionalmente não então a gente não quer que o usuário forneça um número negativo para evitar um erro na hora de calcular essa raiz quadrada importei aqui no meu programa principal ifname iG M aqui dentro lembre-se que a gente tá fazendo essa separação para para modularizar e organizar melhor
o nosso código eu vou dar um try E aí aqui a gente vai tentar capturar o número que o usuário vai digitar eu vou usar a variável num para receber esse valor convertido para inteiro e a função input vai colocar a mensagem que queremos exibir digite um número positivo avisei pro usuário tem que ser um número positivo mas não significa que ele vá levar isso a sério então se o número digitado for menor que zero ou seja se ele for negativo eu vou forçar o lançamento de uma exceção de um erro para isso a gente
usa a palavra Raise Raise levantar e aqui na frente eu coloco o nome do erro vamos supor que eu queira o arithmetic error ó já apareceu is é um Erro interno do Python existe esse erro mas não necessariamente ele vai ser lançado se o usuário realizar esse tipo de cálculo então eu quero forçar que ele seja lançado se o número for menor que zero Raise isto E aí eu vou capturar a exceção não adianta só mandar o Raise se você não capturar a exceção para tratá-la então except arithmetic error se ocorrer esse erro mesmo aí
eu vou colocar um print na tela com uma mensagem do tipo foi fornecido um número negativo e não pode tem que ser positivo sen não se não ocorrer o erro aí a gente calcula a raiz Quad um e calcular a raiz quadrada a ra qu quadrada de número fornecido é a eu chrt em cima do número não pruse n um bloco de fim de cálculo então print fim do cálculo usuário saber que acabou então tá aí o nosso programinha forçando um erro a ser lançado caso uma condição específica bem especial mesmo do meu programa seja
encontrada Então vamos rodar para testar Então olha só Digite o número positivo vamos supor 144 ra qu 144 é 12 beleza fim de cálculo vou rodar de novo agora agora Digite o número positivo aí o usuário vem e digita -9 foi fornecido um número negativo fim do cálculo em vez de travar a aplicação na cara do usuário apareceu uma mensagem dizendo ó usuário você forneceu um número negativo certo fim do cálculo beleza e o que você poderia ter feito aqui também seria colocar isso aqui tudo dentro de um laço while como a gente fez no
exemplo anterior e pedir pro usuário digitar de novo o valor caso ele forneça o número negativo inclusive pode ficar como exercício se você tentar fazer essa modificação neste programa mais uma coisinha pra gente fechar essa aula de tratamento de exceções bem básico agora a gente consegue criar as nossas próprias exceções Então em vez de usar as exceções internas do Python a gente pode criar as nossas próprias exceções para serem capturadas em momentos bem específicos e que não existem previstos dentro do programa A gente chama isso de exceções definidas pelo usuário para isso a gente precisa
criar uma classe derivada da classe interna Exception E aí é o seguinte eu vou criar uma classez minha super simples agora você não se preocupe se você não entender como funciona a classe porque o meu objetivo é mostrar que a gente pode criar uma exceção e utilizá-la para capturar os erros e nas próximas aulas a gente vai ter eh o estudo de classes objetos orientação objetos em Python tá então como é que a gente cria uma exceção eu vou usar esse mesmo programa aqui em vez de usar esse arithmetic error que pode não ser totalmente
adequado para esse caso eu vou criar uma função uma uma exceção específica para para exibir a mensagem de números negativos como é que eu faço isso então aqui em cima depois desse from math Import sqrt eu vou pular uma linha e vou criar uma classe para isso eu uso o comando Class A palavra chave Class o nome dela vai ser número negativo error por padrão a gente põe error no final quando a gente cria exceções próprias mas não é obrigatório número negativo com os nes MA minúsculos aqui isso aqui é derivado da classe Exception então
a gente precisa escrever dentro dos parênteses Exception dois pontos e aqui a gente coloca o código dessa classe essa classe na verdade não vai fazer nada não vou codificar Basicamente nada dentro dela vou colocar um um metodo Construtor com Def und und init self Não se preocupe com isso você vai aprender tudo isso aqui no curso para criar classes complexas inclusive e como essa classe não vai fazer nada eu só coloco um pass aqui poderia até colocar o pass sem declarar esse n self p é uma instrução que diz o seguinte Olha não tem nada
aqui Ignore e passe adiante é da mesma família do continue e do Break a gente usa o p geralmente quando você tá criando algum tipo de de bloco de código mas naquele momento exato você ainda não vai preencher o código do bloco mas precisa testar a aplicação sem erros Então você bota a palavrinha P no caso aqui a gente não precisa preencher nada é só pra gente ter a classe número negativo error E aí aqui eu altero o meu programa para em vez de dar um raising arithmetic error Olha eu vou apagar e vou escrever
número negativo error veja que o editor já detecta que isso é uma classe de exceção e já coloca no Intel sense então só dou um Tab ele preencheu para mim aí eu faço a mesma coisa aqui embaixo em except número negativo error Beleza então agora se acontecer do usuário digitar número negativo o que o erro que vai ser lançado É esse aqui a mensagem eu vou vou manter a mesma Mas aí o tratamento que a gente pode dar é diferenciado a gente pode inclusive programar essa classe para fazer outras coisas e aqui dentro do except
também a gente pode programar para ele funcionar de forma distinta e vamos testar então executando Digite o número positivo Primeiro vamos ver se ele continua calculando a raiz quadrada direitinho 555 raiz quadrada é esse neroz todo aí aí beleza vamos executar agora com o número negativo vamos supor -81 tá lá foi fornecido um número negativo fim do cálculo então foi lançada a exceção personalizada que eu criei e a mensagem foi exibida de forma amigável para o usuário sem travar a nossa aplicação Então é isso manipulação de erros e exceções no Python um pouquinho longo mas
extremamente importante você com certeza vai usar isso aqui muito na criação dos seus scripts para que seus programas sejam a prova de falhas ou que apresentem o mínimo possível imaginável de falhas na hora que o usuário tiver usando a aplicação complementando um pouquinho mais nosso estudo sobre funções em Python vamos falar sobre recursividade recursividade é um método para simplificação de problemas que consiste em dividir um problema em subproblemas menores mas sempre do mesmo tipo os subproblemas são resolvidos e os resultados de cada subproblema são passados pro problema um pouquinho maior combinando esses resultados até que
o problema geral tenha sido resolvido e uma função que usa recursividade uma função recursiva uma função que chama a si própria quando ela é invocada para entender melhor isso vamos criar um programinha para tratar de recursividade recursividade Esse já é um assunto um pouco mais avançado então não se preocupe se ficar um pouco difícil de entender com o tempo e com a prática você vai entender como funciona a recursividade como um professor meu na faculdade costumava dizer não se se preocupe parece mágica no começo mas funciona para entender melhor a gente vai criar um exemplinho
de cálculo recursivo criando uma função que calcula o fatorial de um número fornecido de forma recursiva Então recursividade como que é o fatorial de um valor recursivo a gente vai ter uma fórmula geral pro fatorial então fórmula geral para o fatorial que é a forma como o fatorial é calculado fatorial um conceito lá da Matemática A ideia é a seguinte o fatorial de um número Ele é igual a 1 se o número for igual a zero ou se o número for igual a 1 isso é uma regra tá se for se for fornecido 0 1
o fatorial é 1 já o fatorial do número de um número qualquer ele vai ser igual ao número multiplicado pelo fatorial do próprio número men1 ou seja seu antecessor isso para números maiores do que 1 veja que eu não tô multiplicando o número por número menos um e sim o número pelo fatorial do anterior do seu antecessor E aí para você saber o fatorial do antecessor você precisa multiplicar esse antecessor pelo antecessor dele até chegar em um esse valor um que já traz o valor direto sem precisar fazer nenhum tipo de cálculo a gente chama
de de caso base Esse é o caso base esse aqui é o caso que nos dá um resultado direto então paraa recursão funcionar a gente tem que identificar um caso base se você não identificar um caso base não adianta querer criar o algoritmo recursivo porque ele não vai funcionar caso base é o que vai finalizar efetivamente eh esse esse cálculo recursivo e aqui tá o caso recursivo caso recursivo que é o caso que vai chamar se próprio só que por uma versão menor do problema diversas vezes sucessivamente até chegar no caso base então por exemplo
se a gente quiser calcular o fatorial de do número 4 vamos supor como que é feito isso o fatorial do número 4 que é simbolizado assim 4 e a exclamação isso aqui significa 4 fatorial isso aqui é igual a 4 que multiplica o fatorial de 4 Men 1 que é 3 por quê Porque tá na regra aqui se o número for 1 o fatorial se o número for zero ou for um fatorial 1 acabou só que 4 não é um é maior do que 1 então para números maiores do que um você vai tomar o
número e multiplicar pelo fatorial dele menos 1 do seu antecessor 4 - 1 é 3 então isso aqui é a mesma coisa que 4 vezes fatorial de 3 mas quanto é o fatorial de 3 Então nesse caso a gente vai ter 4 vezes o fatorial de 3 é 3 que multiplica o antecessor dele fatorial de 2 e quanto é o fatorial de 2 aí você vai continuar tendo 4 x 3 xes o fatorial de 2 É 2 que multiplica o fatorial do seu antecessor fatorial de 2 - 1 que é 1 o fatorial de 1
é conhecido se o número for um o fatorial é 1 então aqui no lugar desse fatorial de 1 a gente vai ter o número um basicamente então então o que que a gente tem no total no final das contas que o fatorial do número 4 4 fatorial é igual a 4 que multiplica 3 que multiplica 2 que multiplica o fatorial de 1 que é 1 pronto Chegamos no caso base agora a gente só tem números simples é só fazer um cálculo bastante facinho 4 x 3 12 x 2 24 x 1 24 então o fatorial
de 4 é 24 bom essa aqui é a ideia da recursividade veja que a gente fica chamando a própria função que calcula o fatorial diversas vezes e cada vez que ela é chamada É para um valor menor mais simples até chegar no caso base chegou no caso base a gente retorna o valor o valor desse caso base e esse valor vai alimentar a própria função Até que a gente tenha o resultado final calculado é meio complicadinho né mas recursividade é isso é um processo mental mais complicado requer prática como eu citei o ideal Quando você
quiser utilizar recursividade para criar algum tipo de função é sempre escrever dessa forma por extenso e montar todo o esquema do cálculo que você precisa fazer ou da operação que você precisa fazer não precisa ser necessariamente só cálculos matemáticos e porque isso aqui depois vai te facilitar na hora de codificar a aplicação que é o que a gente vai fazer agora vamos codificar isso aqui em Python criar um fatorial recursivo em Python e eu falo fatorial recursivo porque o fatorial pode ser calculado de outras formas de de forma iterativa por exemplo usando laços de repetição
então a recursividade não é um recurso obrigatório você usa se você achar que ela vai simplificar o seu código o seu programa Tá mas é importante conhecer saber que existe esse recurso Vamos criar então um fatorial recursivo para isso a gente vai definir uma função que eu vou chamar de fatorial e essa função ela vai receber um número e vai retornar o fatorial deste número e a a gente vai aplicar essas as regrinhas aqui de cima são duas regrinhas Então se o número for igual a um ou se ele for igual a zero retorne um
então a gente escreve isso como em em Python é if número igual a 0 or número igual a 1 return 1 é isso retorna um agora vamos traduzir vamos traduzir o caso recursivo caso recursivo é o seguinte else sen não se não for é igual a zero ou igual 1 o número fornecido return quem o próprio número multiplicado pelo fatorial do seu antecessor número -1 é exatamente o que eu escrevi aqui exatamente o que a gente fez nesse exemplo do número quatro veja que quando for invocada essa instrução é chamada de novo a própria função
fatorial que vai agora operar em cima de um valor um pouquinho menor e ela vai ser chamada de novo e de novo e de novo até chegar no caso base quando o valor um é retornado E aí o valor um vai compor o cálculo final para retornar o resultado desejado Então tá aí esta é a função fatorial recursiva já está programada é só isto veja que ao mesmo tempo que ela é bem simples somente um if e um else com uma linha de código em cada um ao mesmo tempo ela também é complexa porque entender
a recursividade não é trivial tá então tem que treinar agora vamos usar essa função no programinha então eu vou criar um um corpo principal pro meu programa ifname igual Main e aqui eu vou pedir pro usuário digitar o valor pro qual ele quer calcular o fatorial vou guardar isso na variável X então x recebe fatorial de números inteiros tá então a gente vai converter para inteiro a entrada do usuário eu peço para ele digitar um número então digite um número inteiro positivo para calcular seu fatorial Beleza o seguinte podem ocorrer erros mas eu não vou
tratar o erro nesse instante Primeiro vamos tentar simplesmente chamar a função fatorial e guardar o variável o resultado numa variável chamada então recebe o fatorial de x e aí a gente vai escrever na tela o resultado print Vamos colocar aqui uma mensagem do tipo fatorial X é resultado deixa eu colocar entre Chaves beleza e agora a gente vai testar esse programinha simplório então rodando Digite o inteiro positivo para calcular seu fatorial vamos supor o fatorial do número 4 que a gente fez no exemplo o fatorial de 4 é 24 perfeito Vamos tentar com número um
pouquinho maior vamos supor o fatorial de 8 fatorial de 8 é 40.320 veja que a gente aumenta um pouquinho o valor o fatorial já aumenta exponencialmente tá porque é uma uma série de multiplicações sucessivas então o número pode ficar grande tá pronto a gente conseguiu criar a nossa função inha recursiva para tratar o fatorial agora eu vou dar uma melhoradinha no meu programa por quê porque olha o que acontece se eu digitar por exemplo o número e vamos supor 150 enter ó ele calculou esse número enorme Olha o tamanho disso aqui será que ele calcula
números maiores ainda 1000 pum deu erro 1000 é grande demais então o que aconteceu Ele tá dizendo que tentou repetir isso aqui 996 mais 1 997 vezes porque a função fica chamando a ela própria E aí ocorreu um recursion error erro de recursão profundidade máxima de recursividade excedida então ele ficou chamando a função chamando a função chamando a função uma dentro da outra tantas vezes que o programa não deu conta do cálculo e aí retornou esse erro e esse erro também vai ser retornado Se eu tentar calcular o fatorial de um valor negativo olha -8
mesmo esquema também eh excedeu a profundidade máxima da recursividade Então a gente vai tratar isso aqui criando uma manipulando uma exceção e o problema tá aqui ó na hora de executar o fatorial então isso aqui a gente vai colocar dentro de um bloco try simplesmente escrevo try dois pontos aí eu faço a identação aqui bonitinho legal então ele vai tentar calcular o fatorial se der uma exceção desse tipo recursion error a gente vai captar essa exceção aqui com accept recursion error E aí nesse caso a gente põe uma mensagem do tipo o número fornecido é
muito grande ou negativo E aí no else se não se não deu nenhum tipo de problema a gente mantém essa mensagem com o valor do fatorial tá então agora a gente tá tratando também desse erro de recursividade que pode ocorrer bom Vamos testar para ver se realmente tratou Então vou executar o código vamos ver primeiro se ele continua calculando o fatorial normal então fatorial de 8 40.320 beleza fatorial de 1000 que a gente tentou antes pum o número fornecido é muito grande éo negativo na mesma hora já disse que que tá de errado E se
eu tentar com um número negativo - 12 por exemplo mesmo esquema a mesma mensagem porque ele captura a mesma exceção então o espírito da recursividade é esse é criar uma função que chama a se própria e cada vez que ela que ela chama se própria ela trata um problema um pouquinho mais simples uma versão um pouquinho mais simples do problema original e ela só para quando chegar num caso base por isso o primeiro passo é sempre identificar o caso base que é o caso no qual o problema é tão simples que a resposta já é
direta no caso do fatorial se o número fornecido for zer ou 1 a resposta já é direta é por convenção toma o fatorial é um Então esse é o caso base e aí o caso recursivo vai ser o caso das chamadas sucessivas e aí sempre tomar cuidado na hora de executar de usar a função recursiva criada porque ela pode gerar essa exceção recursion error erro de recursividade E aí você precisa tratar essa exceção capturando usando um bloco try except muitos outros problemas podem ser resolvidos utilizando esse esquema da recursividade existem alguns tópicos adicionais sobre funções
que são interessantes e bastante úteis e nós vamos estudá-los agora para isso vou criar um arquiv novo que eu vou chamar de funções especiais ppy Bom o negócio é o seguinte vamos começar falando sobre funções lambda Olha que interessante funções lambda também conhecidas como funções anônimas que que são funções lâmbda ou anônimas são funções que não TM nome e que podem ser criadas e usadas no mesmo momento então a gente não define uma função previamente para usar depois você define na verdade você cria e usa na mesma hora a função lambda trata--se aqui de uma
expressão única numa instrução e ela pode ser empregada em em lugares no código onde a gente não conseguiria usar uma função def comum por exemplo dentro de uma lista ou até dentro da chamada de outra função é como se fosse uma espécie de um atalho de função e as funções lambda elas podem simplificar alguns cenários de codificação Por exemplo quando a gente precisa executar funções que são simples dentro de algum trecho de código como que é a sintasse de uma função lambda então a sintasse é a seguinte lambda argumentos dois pontos ão argumentos são os
argumentos que a função recebe e expressão é o que ela vai executar vamos ver alguns exemplos vamos supor que eu queira criar uma função lambida que retorne o quadrado de um número eu posso fazer assim quadrado Isso aqui vai ser uma variável que vai receber essa função igual e aí eu crio a função escrevendo lambda o argumento é x que é o número que vai ter o seu quadrado calculado dois pontos e aí a operação que vai ser realizada x quadrado Prontinho então eu posso usar essa palavra quadrado quando eu quiser calcular o quadrado de
um número porque ele é uma função lambda vamos supor que eu quisesse calcular e os quadrados de uma faixa de números posso usar um laço for e em Range vamos supor 10 números de 1 a 11 eu posso dar um print e mandar imprimir o quadrado do valor I Então olha que interessante quando eu executo esse código que vai aparecer são os quadrados desses números de 1 a 10 1 4 9 16 25 até o 100 então uma função bem simplesinha Não precisei fazer uma definição de função formal e numa única linhazinha eu resolvi esse
problema poderia inclusive ter declarado essa função lambda dentro de outra função ou dentro de um outro local qualquer do código Vamos ver outro exemplo deixa eu eu comentar isso aqui vamos supor que eu precisasse de uma função rápida para verificar se um número é par eu vou chamar vou vou atribuir a função a uma variável veja que isso aqui não é o nome da função não é função par isso é uma variável que se comporta como uma função porque ela vai receber o retorno de lambda x que é o meu argumento e para verificar se
o número é par é só verificar se o resto da divisão por 2 é igual a zer ou seja x mod 2 é igual 0 quando isso for true o número é par aí a gente dá um print e chama essa variável par passando o valor que você quer verificar vamos supor o número 8 é par verdadeiro ou falso true é verdadeiro e o número 9 o número n é falso não é par tá então rapidinho a gente escreve uma funin para usar mais um exemplinho deixa eu comentar aqui vamos supor agora função Zinha para
converter temperatura de graus fahenheit para celsus você comprou um aparelho importado ele veio com a com a a escala de temperatura em Fahrenheit vale quanto em Célsius então a gente faz assim eu vou chamar de FC uma variável que vai receber o retorno e a função lambda vai receber um valor em fahenheit que eu chamei de F E vai aplicar a seguinte fórmula a fórmula É fahenheit men 30 32 que multiplica 5/9 essa a fórmula geral para converter um valor de Fahrenheit para celsus os graus fahenheit menos 32 e multiplica por 59 e beleza é
só a gente usar essa função eu vou chamar a variável FC e vou passar para ela o valor da temperatura por exemplo 212 fahenheit vale quanto isso em celsus Vale 100º c e 32 fahenheit vale quanto em celsus 0 GC Beleza então isso aqui é uma função lambda uma função é bem curtinha de uma linha só sem definição de nome que você pode atribuir uma variável e utilizar Quando você precisar um outro tipo de função bem interessante que a gente pode usar é a função map deixa eu comentar então a função map função map o
que que faz a função map essa é uma função interna do Python tá E essa função ela permite aplicar uma uma outra função a cada elemento de um objeto iterável e retorna um objeto do tipo map contendo os resultados É bem interessante porque a função map é uma função que aplica funções e ela às vezes ou muitas vezes ela é usada junto com expressões lambda para criar funções mais poderosas mais curtinhas e a sintaxe básica da função map é a seguinte map a você passa dois argumentos para ela a função que ela tem que tem
que executar e o iterável que é o objeto que vai receber essa função isso significa que a função que eu passar aqui vai ser aplicada a cada item dentro desse objeto iterável que pode ser por exemplo uma lista e essa função pode ser uma função normal definida com a palavra Def ou pode ser uma função lambda vejamos um exemplo vamos supor eu quero multiplicar cada valor de uma lista por dois e eu tenho uma lista de números que eu vou chamar de n e essa lista aqui ela vai ter vamos supor 1 2 3 4
5 6 7 8 tem oito números eu quero multiplicar cada um deles por dois e guardar o resultado numa variável chamada dobro como é que eu faço eu vou utilizar a função map função map vai receber a função que vai ser executada e o iterável que que vai receber essa função posso usar um lambda aqui por exemplo vou fazer com Lambda lambda x x x 2 Olha só um lambda que recebe um valor x e multiplica por 2 isso aqui multiplicaria um número por dois mas eu quero multiplicar todos da lista então eu passo a
lista como argumento da função map que que vai fazer essa função vai aplicar o map que é uma função vai aplicar a função lambda para cada um dos valores de num separadamente e vai guardar isso em dobro só que a função map retorna um objeto do tipo map e a gente quer uma lista Então a gente vai converter isso aqui paraa lista usando a função list pra gente poder ler isso aqui com facilidade por exemplo usando um print e aí quando eu executo esse código que que a gente vai obter Olha só uma lista com
os valores duplicados da lista Inicial então a função meb pegou essa função minha lambda e aplicou um a um para cada elemento individual desta lista que poderia ser uma tupla ou outro objeto e qualquer uma string por exemplo vamos ver o exemplo com string já que eu citei Strings vou comentar esse exemplo aqui Suponho o seguinte eu eu tenho uma lista de palavras n uma lista de Strings e quero converter a lista inteira para letras maiúsculas então eu tenho as minhas palavras Isso aqui é uma lista com algumas palavras por exemplo Python é uma linguagem
de e mais uma palavrinha programação vamos supor que quero converter tudo isso aqui para maiúsculas não importa de onde vi as palavras podem ter vindo de da internet de um banco de dados de uma barr dura numa página não importa eu tenho uma lista com as palavras separadas para converter todas para maiúscula o que eu posso fazer o seguinte vou criar uma variável maiúsculas que vai ser a variável que vai receber é a lista convertida E aí eu vou usar a função map para fazer o seguinte aplicar strpper que é a função no caso é
o método aplicado a cada item da lista de palavras então cada palavra dessa individualmente vai receber a função STR puper string uper que você sabe leva a palavra ou as letras para maiúsculas e eu não posso esquecer que isso tem que ser convertido para uma lista para objet obeto do tipo lista para eu poder trabalhar com mais facilidade E aí eu posso mandar imprimir essas maiúsculas aqui então vamos ver o que aparece executando tá lá Python é uma linguagem de programação tudo em maiúsculas Então essa função inha foi aplicada individualmente a cada item da minha
lista de palavras que o meu citei anteriormente poderia ser uma tupla ou outro objeto iterado Então deixa eu comentar beleza vimos dois exemplos portanto da função Map a ideia da função lambda e do Map são são ideias que vêm da programação funcional que é um paradigma de programação distinto da programação procedural ou orientada a objetos e o Python ele tem suporte a programação funcional por isso ele tem essas funções disponíveis a função map especificamente é uma função que a gente chama em programação funcional de função de ordem superior que é uma função que pode receber
outras funções como argumento ou e ou retornar outras funções como resultado então funções de ordem superior caso você vai estudar programação funcional um dia você vai se deparar com essa terminologia você já tem uma pequena noção do que se trata bom uma outra função que geralmente é usada em conjunto com o mep ou como complemento do Map é a função Filter que que faz a função Filter ela filtra elementos de uma sequência então ela vai iterar sobre uma sequência e vai extrair elementos dentro dessa sequência de acordo com o critério que a gente estabelece então
sua sint é a seguinte Filter função a ser aplicada e a sequência que vai receber essa função então uma função de filtragem aplicada em cada elemento de uma sequência e essa função de filtragem são os critérios uma função que define os critérios vamos supor por exemplo que eu tenho uma função tradicional criada com def vericar é par ou não vou chamar essa função de números pares que recebe um argumento n e retorna com return n módulo 2 iG 0 ou seja se o resto da divisão por do for zero retorna O valor verdadeiro ou falso
tá então uma função para verificar se o número é par ou não E aí eu tenho uma lista de números que eu vou chamar de números contendo vários nú Vamos colocar alguns números aqui 1 2 3 4 5 6 7 8 9 10 11 12 13 pronto vários números e eu quero extrair dessa lista os valores que são pares como é que eu faço para extrair esses valores então números pares vou chamar de par igual para extrair da lista só os pares eu posso usar a função Filter e eu uso assim Filter E aí aqui
dentro eu passo a função de filtragem que é um critério que no caso vai ser essa função de cima ó números pares então eu vou escrever o nome da função aqui sem os parênteses tá e na frente a lista de números que é a lista que vai que vai receber o tratamento da função Então veja eu não coloquei os parênteses aqui para passar o argumento mas o argumento vai ser passado o argumento tá aqui na frente eu vou passar essa lista inteira de uma vez só pra função números com a função Filter Eu Vou extrair
quem é par e quem não é e isso aqui de novo a gente precisa converter para um objeto do tipo lista ou tupla se você preferir tá porque ele retorna um objeto do tipo Filter que é mais difícil da gente tratar com print por exemplo ou com com outros métodos E aí é só dar um print nesses números pares num par vamos ver o que acontece aqui vou executar o código aparec lá 2 4 6 8 10 e 12 somente os números pares foram extraídos da minha lista certo então a função Filter aplicou a função
eh números pares para cada elemento dentro da lista e sempre que o valor dessa função foi verdadeiro porque essa função retorna true ou false Então sempre que foi true o item em si é que é retornado convertido em objeto de lista e gravado dentro da minha lista de números pares n Então extraí os elementos lá de dentro poderia trabalhar também com lambda aqui em vez de criar uma função com Def normal Vamos fazer um exemplo com lambda então eu vou comentar isso aqui na verdade essa lista de números eu vou usar de novo então deixa
eu copiar ela aqui para baixo beleza ten uma lista de números quero extrair vamos supor eu quero extrair os ímpares agora né os ímpares Então como é que eu faço num ímpar a minha variável vai receber eu vou usar uma a função para converter paraa lista nem sempre você vai converter para lista Às vezes você vai mandar o retorno do Filter para para um outro processo uma outra função tá nesse caso eu vou converter pra lista então eu vou dar um Filter E aí a gente vai criar a função lambda que verifica se o número
é ímpar ou não como é que é essa função lambda de X sempre que x mod do for diferente de zero então a gente verifica se o número é par verificando se o resto da divisão por 2 é igual a zero se não for igual a zero se for diferente é porque ele é ímpar Então agora eu vou extrair os ímpares E aí eu passo a lista que vai receber essa função então Esta função aqui vai ser aplicada para cada elemento dessa lista E aí eu vou extrair somente os valores pros quais isso aqui for
verdadeiro ou seja o resto da divisão por do for diferente de zero efetivamente ou seja os números ímpares E aí eu posso dar D um print nesses meus números ímpares executando tá lá 1 3 5 7 9 11 13 está aí o da mesma lista mas agora somente os números ímpares Beleza a gente pode aplicar o Filter não só com números Mas você também pode trabalhar com Strings como a gente viu anteriormente um exemplo com o map daí com qualquer tipo de dados que você queira número real número inteiro número complexo e assim por diante
a ideia geral é a função Zinha é aplicada sobre uma lista de valores e para cada vez que a função ser aplicada retornar verdadeiro o valor em si é que é retornado não é o true ou falso que é retornado é o valor em si Então você filtra extrai de dentro de uma sequência de itens os valores desejados vamos ver mais um recurs então mais uma função Zinha existe uma outra função também bem interessante que é a função reduce no português reduzir essa também é uma função embutida só que ela tem que ser importada ela
tá num um módulo específico Na verdade o módulo funk Tools e o que que ela faz ela realiza operações cumulativas em sequências de elementos ela também age numa sequência de elementos só que o funcionamento dela não não é muito similar ao do Filter omap na verdade ela acumula valores na sequência e e retorna um único valor no final veja que o map e o Filter Retornam conjuntos de valores já a função reduce retorna um valor só que é o valor total da aplicação de uma função em cima de cada item de uma lista ou de
uma sequência qualquer a sintaxe dela é assim então é reduce a função a ser aplicada a sequência na verdade a sintaxe é parecida com as anteriores e eventualmente Você pode ter um valor inicial a vai ver uns uns exemplos simples disso aqui para entender paraa gente poder usar a função reduce a gente tem que importar então do módulo funk tools a gente importa a função reduce ou você pode importar o módulo todo fica seu critério certo então importei o reduce Então vamos fazer alguns exemplos vamos supor que eu tenho uma função que multiplica dois números
eu vou definir uma funin básica Def vou chamar de Mult e essa função trabalha com x e y o que que ela faz simples retorna x x y só isso uma função bem simpl tá então from f Import reduce e a função Zinha aí eu vou ter uma lista de números números eu vou criar uma lista um pouquinho menor tá números igual 1 2 3 4 5 e se mais um pronto tem uma lista com seis números Então agora eu quero multiplicar todos os números o que que eu quero fazer exatamente eu quero multiplicar um
número pelo outro até o final então quero multiplicar um pelo do o resultado diss mulp pelo 4 e assim sucessivamente até o final por isso que eu disse operação cumulativa a operação vai executada item por item acumulando valores sendo executada nos próximos it então um pouquinho mais complexo do que só fazer uma simples multiplica então a fun Red vai nos ajudar nesse caso eu vou ter uma variável total para guardar o resultado E aí eu vou chamar o reduce passando para ela dois argumentos a função a ser executada cumulativamente e a lista de itens ou
a sequência de itens que no caso é a minha lista de números então a função reduce vai aplicar Esta função cumulativamente em cada item desta lista e vai guardar o resultado na variável total que depois eu vou imprimir na tela Então vamos ver o resultado que nós vamos obter 720 então se eu multiplicar os números de 1 a 6 é 720 na verdade é até fácil verificar isso porque isso é 6 fatorial 6 x 5 x 4 x 3 x 2 x 1 tá então aqui sem querer eu fiz uma função que também retorna o
fatorial por conta dos números passados mas se eu se eu modificar um numerozinho aqui dentro por exemplo em vez de cin aqui for oo aí a gente vai ter um resultado bem diferente 1152 Vamos fazer um outro exemplo do reduce eu vou comentar isso aqui mas vou deixar o from fun Tools porque eu vou precisar da da função importada tá E aí a gente vai fazer o seguinte vamos supor que eu quero fazer uma soma cumulativa dos quadrados de elementos Nossa como assim e usando expressão lambda ainda vou até escrever aqui na tela para pra
gente não se perder eu quero uma soma cumulativa dos quadrados de valores usando expressão lambda Então vamos supor que eu tenha essa lista aqui vou chamar de números também só que eu vou colocar somente quatro números 1 2 3 4 o que eu quero agora é uma soma é uma soma cumulativa dos quadrados então eu quero fazer 1 qu + 2 qu certo então algo mais ou menos assim ó 1 qu + 2 quadrado e eu quero que isso aqui cumulativamente seja somado com o próximo valor que é o 3 A quadrado e quero que
isso aqui cumulativamente seja somado com o próximo valor que é o 4 a quadrado é isso que a minha função inha deve fazer veja que complicou agora né como é que a gente implementa isso aí usando as funções comuns ou laços comuns é um pouquinho mais difícil usando reduce o negócio fica muito simples vai ficar assim total minha variável que vai guardar o resultado é igual reduce para aplicar cumulativamente a minha função qual é a função a função eu não declarei ainda mas eu posso usar uma função lambda então eu vou escrever lambda x que
é o é um dos valores Y porque são dois valores o lambda pode aceitar mais de um argumento aqui então eu vou trabalhar com x e com y porque é um número mais o outro ao quadrado são dois valores então X e Y e o que que vai ser aplicado a x e y x qu + Y qu é isso aqui que vai ser feito e isso vai ser feito para cada um dos itens da minha lista de números da minha sequência de números então a função reduce vai aplicar essa função que é a soma
dos do dos quadrados para cada item dos números vai guardar o valor e aplicar de novo com o próximo valor fazendo exatamente o que a gente quer fazer aqui e aí eu posso mandar imprimir na tela o total quanto será que vai ser esse Total aqui a gente pode até tentar fazer de cabeça esse valor então O resultado é 172 aqui também ficou faltando um quadradinho Olha só para entender melhor tá um monte de quadrados então 1 qu + 2 qu qu + 3 qu tudo isso a quadrado + 4 qu esse aqui na verdade
é o cálculo que ele vai realizar e o valor final é 172 e a gente pode verificar isso aqui chamando a calculadora e fazendo o cálculo aqui 1 qu é 1 2 qu é 4 então 1 + 4 5 isso ao quadrado dá 25 25 + 3 qu que é 9 dá 34 isso ao quadrado dá 116 + 4 qu que é 16172 exatamente o valor que a gente tem aqui embaixo certo então então a função lambda facilitou esse cálculo para mim que é relativamente complexo e com a função reduce a gente também pode trabalhar
com Strings se você assim eu precisar certo então vimos Nesta aula algumas funçõe inhas especiais relacionadas a programação funcional vimos o que são as funções lambda vimos como usar map Filter e reduce em Python você não necessariamente não precisa usar Essas funções Mas elas são úteis em determinados cenários por exemplo para simplificar o código para realizar operações mais complexas de forma mais simples também E aí para treinar tente converter funções que você já tinha criado anteriormente e da forma convencional com Def para funções lambida e tente utilizar funções map Filter e reduce para fazer outros
exemplos bem estudamos então funções lambda map Filter e reduce existe uma outra técnica que a gente pode usar para aplicar uma funcionalidade em cima de elementos variados de uma sequência ou de uma lista que se chama compreensão de lista e a compreensão de lista é uma técnica bastante concisa elegante até de criar e executar tarefas sobre listas usando Python e essa técnica permite que a gente derive uma lista nova a partir de uma outra lista geralmente de forma concisa como a gente vai ver a sintaxe geral de uma compreensão de lista é expressão for item
em lista nesse caso expressão é a expressão que a gente vai avaliar para cada elemento dentro de uma lista e tem é uma variável de controle que vai representar cada elemento da dessa lista sequencialmente e sobre a qual a expressão vai ser aplicada retornando no final uma lista de itens Hum parece meio complexo mas na verdade não é vamos ver alguns exemplos Vamos criar um arquivo novo bonitinho vou chamar de compreenção de lista beleza pon py primeiro exemplo vamos supor vou fazer com map Primeiro vamos supor que eu queira um algoritmo para encontrar os quadrados
dos números de uma lista eu tenho uma lista de números Legal vamos colocar alguns números aqui 1 4 7 9 10 12 e 21 tem alguns números aqui eu quero encontrar o quadrado de todos eles se eu fosse usar map como é que eu faria faria algo assim quadrados igual map a gente poderia usar uma função lambda por exemplo aqui dentro lambda num num elevado a quadrado para cada item da lista de números números e aí Lembrando que a função map retorna um objeto map então a gente não consegue ler diretamente o conteúdo de quadrados
por isso a gente ainda vai converter para lista usando a função list e agora sim a gente consegue dar um print nesses quadrados quadrados vamos executar para ver então beleza Tá aqui os quadrados daqueles números estão aqui 1 16 49 tá tudo bonitinho perfeito bom fizemos isso aqui usando e a função map com list com lambda com um pouquinho complexo e tem bastante itens aqui como é que seria uma versão disso usando na tal da compreensão de lista seria assim quadrados recebe eu vou apagar isso aqui tudo a gente vai criar uma lista Então a
gente vai usar anotação de colchetes a gente vai dizer que eu quero num elevado ao quadrado minha variável de controle para cada num na lista de números é isso o que que vai acontecer os valores da lista de números eles vão ser atribuídos um a um um por vez durante as interações pra variável num e o conteúdo dessa variável vai ser elevado ao quadrado e Guardado na lista de quadrados aqui é automático ele vai gerando os valores vai acrescentando a lista ele vai fazendo o append automático e assim no final do processo Olha o que
que a gente vai ter os valores da lista ao quadrado novamente só que como uma sintaxe um pouco mais concisa não precisei usar lambda Não precisei usar map Não precisei sequer converter de volta paraa lista usando list n Eu só coloquei o a a expressão que vai ser executada para cada item variável de controle dentro da minha lista original de números que é essa lista aqui de cima então isso aqui a gente chama de compreensão de lista e veja que ela gera uma nova lista quadrados é uma lista que a gente mandou imprimir Vamos fazer
outro exemplo agora então eu vou comentar esse primeiro exemplo beleza no nosso segundo exemplo eu quero criar uma lista de números pares pode ser pares de 0 a 10 por exemplo Então quero uma lista de números pares de 0 a 10 essa lista vai chamar pares Então essa lista pares recebe aí usando a compreensão de lista num não precisa ser num pode ser o nome que você quiser aqui pode ser n por exemplo for num in aí eu faço um Range vou usar a função Range aqui dentro de 0 a 10 significa 11 lembra que
o último número não entra na sequência e pra gente poder filtrar os números pares eu vou usar um if ou seja uma condição aqui dentro da minha compreensão de lista e qual que é o a condição pro número ser par o resto da divisão por dois tem que ser zero então num mode 2 = 0 é isso isso aqui vai retornar e vai criar uma lista com os números pares de 0 a 10 número para cada número dentro de Range de 11 Range é uma lista de valores lembre-se disso essa função R vai criar uma
sequência de valores numéricos de 0 até 10 e aí para cada número dentro dessa lista se o número mod do for zero ele é retornado pra lista de pares e aí a gente pode imprimir essa lista na tela vamos ver o resultado á 0 2 4 6 8 e 10 bem tranquilo Se em vez de 11 eu colocasse aqui vamos supor 10000 Olha que legal instantaneamente temos a lista de pares até 1198 então é bem tranquilo trabalhar e com a compreensão de lista para esse tipo de retorno de valores comentar e fazer outro exemplo vamos
fazer agora um exemplo com texto dá para trabalhar também com com caraes textuais eu quero criar um programinha que conte a quantidade de vogais dentro de um texto Olha só pra gente começar a fazer análise linguística pode ser uma frase um parágrafo enfim tanto faz então eu vou criar uma frase nessa frase eu vou escrever alguma coisa aqui dentro vamos supor A lógica é apenas o princípio da sabedoria e não o seu fim e aí eu vou criar uma lista de vogais para poder trabalhar com os filtros então vogais igual e aqui a gente vai
colocar as vogais então a e i o o e u na verdade nessa frase Nós também temos vogais acentuadas e elas são caracteres diferentes das vogais normais então é legal a gente também acrescentar as vogais acentuadas aqui então vou colocar no final por exemplo o a acentuado e o e acentuado temos também o i acentuado e finalmente eu vou colocar o o acentuado e o u também colocar verão de todas elas acentuadas Bele temos essa lista de vogais guardadinha agora eu quero a partir dessa lista contar quantos desses caracteres aqui são vogais como é que
a gente faz um negócio desse vamos lá lista de vogais igual e aí a gente cria a nossa compreensão de lista então abrimos colchetes aí eu vou usar minha variável de controle vou chamar de v bem simples v v for V em frase ou seja para cada item na frase lembrando uma string é uma sequência de caracteres a gente consegue iterar pela string caracter por caracter se você não lembra disso recomendo que volte um pouco o curso e dê uma revisada nas aulas de sequências e principalmente na aula sobre manipulação de Strings então V por
V for V em frase se if V também estiverem vogais Olha só Acesso as duas listas é isso então o que que essa que que essa sequência vai fazer para cada V na frase ou seja para cada letra que vai ser atribuída essa variável de controle V se V também estiver nessa lista de vogais aqui vai ser retornada pra minha lista final e aí é só a gente imprimir na tela por exemplo eu vou colocar uma mensagem print a frase possui Len lista vogais vogais ainda vou colocar dois pontos embaixo eu vou imprimir também a
lista lista vogais Print então vamos executar para ver o que aparece vamos lá a frase possui 24 vogais e aqui estão elas na sequência caso você queira utilizá-las Então essas são as vogais que estão dentro dessa frase veja que que Teoricamente não é muito fácil você pensar no algoritmo que retorna esse tipo de dado mas usando a compreensão de lista facilitou simplific ficou é só esse pedacinho aqui isso aqui já retorna pra gente a lista o importante é pegar o jeito de escrever as compreensões de lista porque a princípio logo de cara assim parece que
não é muito intuitivo mas se você quebrar el em pedacinhos e pequenos fica mais fácil de entender sempre lembrando lembrando essa variável de controle vai receber cada item dentro dessa sequência E aí você pode aplicar um filtro como apliquei aqui se esse filtro aqui for true então o valor aplicado a variável vai ser retornado pra lista e a lista final que você pode trabalhar e fazer o que você quiser com ela posteriormente eu vou fazer mais um último exemplo aqui então vamos lá nesse exemplo também vou trabalhar com duas listas Então deixa eu comentar isso
aqui vou trabalhar com duas listinhas duas listinhas pequenas eu quero fazer o seguinte eu quero usar dois laços for juntos dentro de uma de uma compreensão de lista ou abrangência de lista também você também pode chamar assim e vai realizar a multiplicação dos números de uma lista pelos números da outra eu quero fazer uma operação distributiva entre os números de duas listas Então vamos lá distributiva entre valores de duas listas e eu quero que isso fique na variável distributiva Então essa variável vai receber eu vou chamar o primeiro valor de k e o segundo valor
de m então a a distributiva é um valor vezes o outro certo o valor de uma lista vezes o valor da outra lista eu vou chamar um valor de k e o outro de m então k X M for k na primeira lista e eu posso criar a lista aqui dentro Olha que legal aqui dentro eu vou criar criar minha listinha com três números 2 3 e 5 por exemplo E aí eu coloco outro for minha outra variável m e a outra lista que eu vou criar aqui como sendo por exemplo 10 20 e 30
então esta operação ela vai ser aplicada para cada item k nessa lista e para cada item M nessa lista fazendo assim uma distributiva entre os valores e aí a gente pode dar um print na variável distributiva E aí rodando tá lá 20 40 60 que seria 2 x 10 2 x 20 2 x 30 depois 30 60 90 3 x 10 3 x 20 3 x 30 e finalmente 50 100 150 que é multiplicação dos cinco por cada um dos itens separadamente então aqui temos uma compreensão de lista usando dois laços for para retornar uma
lista de valores combinando duas listinhas que eu passei aqui dentro mais claro eu poderia ter essas listas fora com muitos valores tá se forem muitos eu não vou digitar aqui dentro capturo fora e só coloco o nome das listas aqui dentro Tranquilo então tá aí compreensão de listas uma dica final é seguinte eh recomendo não criar compreensões de lista se elas começarem a ficar muito complexas então Então se o código aqui começar a ficar muito grande difícil de entender é melhor não usar eh você vai acabar criando Na verdade uma incompreensão de lista o código
fica difícil de ler entender e debugar posteriormente nesse caso se começar a ficar muito complexo é melhor usar um laço de repetição convencional aqui por exemplo poderia ter sido resolvido com e dois laços fora encadeados inclusive você pode tentar fazer e esse mesmo exemplo aqui com laços tradicionais um laço dentro do outro então Como regra geral recomendo quando for fazer algum tipo de de algoritmo Nesse naipe você pode começar a escrever o código usando a compreensão de lista e se ele ficar curtinho se ele ficar fácil de entender finalize usando se ele começar a ficar
muito complexo ou difícil de ler você converte para laços de repetição tradicionais is é a melhor abordagem para você trabalhar com as com as compreensões de lista ou não mas a gente sabe não existe Bala de Prata em desenvolvimento de sistemas em programação então não existe uma única solução que dê conta de tudo às vezes é melhor usar uma solução às vezes é melhor utilizar uma diferente então tá aí compreensões de lista em Python vamos tratar agora de forma introdutória de um assunto bem interessante que são as classes e objetos em Python mas precisamente orientação
a objetos básica em Python Vamos criar um arquiv para isto que eu vou chamar de p.py Poo programação orientada a objetos que que é esse negócio de orientação a objetos orientação a objetos isso aqui é um paradigma de programação que é um paradigma de programação é um estilo uma forma de você programar utilizando determinadas estruturas tipos de dados e funcionalidades o Python é uma linguagem multiparadigma significando que ela suporta vários paradigmas distintos paradigma estruturado que é o que a gente vem usando na maior parte dos vídeos paradigma funcional que a gente também já utilizou e
o paradigma orientado objetos que na verdade a gente também já utilizou porque já usamos muitos métodos da linguagem os métodos fazem parte da programação orientada a objetos a ideia aqui é a gente trabalhar com um conceito de classes e objetos as classes são modelos abstratos que vão apresentar itens do mundo real dentro do software e os objetos são as ocorrências dessas classes são essas classes carregadas na memória efetivamente existindo para valer então a grande ideia aqui é a seguinte como é que eu represento dentro de um software uma entidade do mundo real quando eu preciso
realizar algum tipo de programação como é que eu represento uma pessoa como é que eu represento um animal uma conta corrente dentro do software para isso o paradigma de orientação objetos é bastante útil e aqui a gente vai ver uma introdução a assunto porque ele é muito extenso e na verdade o Python não é uma linguagem com suporte 100% a orientação a objetos é uma linguagem multiparadigma como eu citei mas é importante conhecer alguns conceitos e saber como criar uma classe instanciar um objeto criar um método porque isso sim pode ser bastante útil na hora
de criar os seus scripts vamos lá então para demonstrar esse paradigma eu vou criar uma classe usando a palavra-chave Class eu vou criar uma classe para modelar vamos supor V veículos então eu quero trabalhar num programa que consegue operar com veículos então eu vou chamar essa classe de veículo e a ideia é sempre que as classes tenham letra maiúscula por padrão então a gente escreve classe veículo dois pontos e aí a gente começa a programar essa classe que que a gente vai colocar dentro dessa classe ela vai ter basicamente duas grandes partes atributos e métodos
os atributos são propriedades da classe Ares meio de longe a variáveis ou seja estruturas que guardam valores e os métodos são as funcionalidades ou ações que a classe pode realizar ou sofrer são similares a funções por exemplo todo veículo se movimenta então a gente pode criar uma ação de movimentar-se para esse veículo E para isso a gente Define um método que eu vou chamar de movimentar você pode chamar do que você quiser o método Claro e aí com os dentro dos parênteses a gente vai colocar a palavra self e essa palavrinha aqui ela é importante
porque ela tá aqui para dizer que quando eu criar um objeto baseado nessa classe esse movimento se refere aquele objeto em particular e não a outro objeto derivado da mesma classe porque a gente cria a classe para ser uma espécie de modelo como se fosse uma planta e essa classe pode ser usada para criar vários objetos diferentes ou seja eu programo uma vez essa classe mas na na minha aplicação eu posso usá-la diversas vezes para criar um monte de veículos diferentes Então essa é a grande sacada da orientação objetos porque ela também permite reuso de
código então o meu veículo ele vai se movimentar eu vou colocar dois pontos e Vou definir essa função que quando está dentro de uma classe A gente chama de método aqui eu vou fazer de forma bem simples eu vou colocar só uma mensagenzinha do tipo sou um veículo e me looco só para demonstrar a funcionalidade então este método movimentar imprime na tela a frase sou um veículo e me desloco existe um tipo especial de método que geralmente a gente cria para as classes que é o método que aqui no P A gente chama de método
init e que em outras linguagens de programação a gente vai chamar de método Construtor que é o método que inicializa a classe Ou seja quando a gente criar um objeto baseado nessa classe quando a gente fori efetivamente ter um veículo na aplicação a gente vai fornecer alguns dados alguns parâmetros para que esse veículo venha a existir já com algumas informações então Vamos definir o método init especial esse método é definido assim und und init und und e aí dentro dos parênteses a gente vai colocar algumas informações a gente sempre vai colocar o primeiro parâmetro self
que é para dizer que ele se refere ao próprio objeto quando ele for criado na na prática não precisa ser a palavra self pode ser uma outra palavra qualquer que você queira usar desde que seja a primeira palavra eu vou usar self porque é padronizado então vírgula e agora a gente vai colocar os argumentos ou parâmetros que vão inicializar efetivamente o veículo então o veículo por exemplo ele tem um fabricante e um modelo então eu posso dizer que para inicializar esse objeto eu vou fornecer dados de fabricante e de modelo então são os três parâmetros
que vai ter pode ter quantos parâmetros você precisar dois pontos e agora eu vou programar esse método init e agora eu vou criar um atributo interno Esse atributo é uma espécie de variável interna da classe que vai guardar um valor E para isso a gente usa de novo a palavra self a mesma palavrinha que a gente usou aqui em cima e esse self ponto a gente vai dar um nome pro atributo interno pode ser fabricante fabricante vai receber o que for passado para esse este argumento fabricante aqui de fora então a gente escreve simplesmente fabricante
de novo não precisa ser o mesmo nome tá pode ser um nome diferente o importante é esse fabricante aqui é o é o argumento que tá sendo passado e esse aqui é o atributo interno da classe que vai guardar o valor efetivamente é muito parecido com função né Poderia ter uma variável guardando o valor que foi passado como como argumento e vou fazer a mesma coisa self pro modelo então self ponto modelo recebe modelo a gente também pode criar eh outros atributos aqui dentro internos que não necessariamente são passados na hora da inicialização mas que
já ficam disponíveis na memória por exemplo o veículo pode ter um número de registro dependendo do tipo do veículo então a gente pode criar um self ponto número de registro como esse número de registro não vai receber um valor eh fornecido externamente na hora de de instanciar eh essa essa Classe A gente tem que atribuir um valor para ele internamente aqui a gente vai atribuir o valor n para dizer ó não tem nada por enquanto mas depois a gente vai criar uma forma de fornecer esse número de registro beleza Esse é o básico do básico
de uma classe então aqui embaixo agora eu vou fazer o seguinte eu vou criar o meu programa principal if name igual M beleza e aqui agora eu vou criar um objeto baseado nessa classe então a classe ficou criadinha aqui ela é um modelo apenas tá e eu vou criar um objeto que significa pega esta classe e Monte na memória do computador esta estrutura especial aqui pra gente poder trabalhar com veículos eu vou chamar isso aqui de meu veículo esse aqui é o nome do objeto igual e para instanciar instanciar significa tornar a classe que é
um modelo real na memória do computador então a gente chama o nome da classe veículo e dentro dos parênteses a gente passa os parâmetros necessários que inclusive o próprio Idea já me disse fabricante modelo eu tenho que passar então eu vou passar o fabricante vamos supor GM e o modelo vamos supor cadlac Escalade Isso aqui vai criar um objeto na memória com essas duas informações já dentro dos atributos corres entes E aí após criar o objeto eu posso invocar seus métodos por exemplo ele tem o método movimentar não tem então meu veículo ponto já temos
aqui na disponível no Intel sense movimentar então movimentar com os parênteses como esse método não recebe nada além do selfie eu não preciso digitar nada aqui dentro é só executar o programa então vamos executar para ver o que aparece aqui a princípio tá lá apareceu a frase sou um veículo e me desloco que é justamente o que a gente programou Aqui dentro deste método movimentar Olha só então quando eu invoquei esse método esse código aqui foi executado certo bem tranquilo uma outra coisa que a gente pode fazer é acessar esses valores internos então por exemplo
eu posso dar um print e aqui no print colocar meu veículo ponto e puxar o fabricante ou modelo que já aparecem aqui inclusive Então e o número do registro também aparece mas não tem nada gravado lá dentro então eu vou chamar o fabricante que é um atributo por isso não vai ter parênteses para ele especificamente tá ele é um atributo é como se fosse uma variável E aí se eu executo esse código Olha só vai aparecer aqui a palavrinha GM depois ali do su veículo e me desloco eu tenho aqui GM que é o nome
que eu passei na hora que eu criei e a Instância dessa classe esse objeto meu veículo passei GM aqui tá dentro de fabricante agora isso aqui não é o ideal a gente conseguia acessar esses valores internos da classe não é o ideal por conta de questões de segurança por exemplo e de funcionalidade o ideal é que esses atributos aqui só sejam acessíveis por meio de métodos especiais no momento esses atributos eles são públicos públicos significa eu consigo acessá-lo diretamente usando esse formato aqui nome do objeto ponto nome do atributo Mas eu posso transformar esses atributos
em atributos privados que não são acessíveis diretamente para isso o que a gente faz é o seguinte aqui na hora de criar o atributo logo depois do selfie ponto e antes do nome do atributo a gente coloca dois undor und und e a gente vai fazer a mesma coisa pro modelo und und e a mesma coisa pro número do registro Pronto agora os três atributos são privados ou seja eles não são acessíveis mais diretamente isso aqui implementa um esquema eh de orientação objeto chamado de encapsulamento o dado está encapsulado aqui dentro e você não consegue
enxergá-lo diretamente e o que acontece se eu rodar agora o programa Olha só vou rodar e ele vai dizer isso aqui ó ele vai dar um erro para mim erro de atributo então ele executou o primeiro método beleza sou um veículo e me desloco mas na hora de tentar acessar esse atributo ele vai dizer o objeto veículo não tem um atributo fabricante erro de atributo Mas e se eu colocasse aqui embaixo o and und aí nesse caso ele vai continuar dizendo que não tem o atributo olha só então você achou que i aparecer o valor
não aparece tá esse und und é para dizer o atributo é privado ele não está acessível fora da classe ou diretamente fora da classe bom quer dizer que eu não consigo mais usar o fabricante ou o modelo não não é assim que funciona a gente consegue só que a gente vai ter que criar um método especial para isso esse método especial ele existe tem nome Inclusive a gente vai criar para poder acessar um elemento a gente usa um método especial chamado de getter então o que que é um getter é um método especial uma função
que permite acessar os atributos de dentro da classe ou acessar outros elementos dentro da classe Então a gente vai criar um getter eu vou definir esse getter que é uma função um método eu vou chamar de get fabricante modelo por exemplo vamos supor que eu queira é só fabricante e o modelo aqui e ele vai sempre receber o selfie para poder fazer a referência ao próprio objeto tá dois pontos e aí aqui dentro a gente coloca a informação que a gente precisa por exemplo vamos supor que eu queira só imprimir na tela o nome do
fabricante e seu modelo então eu boto um print e aqui a gente coloca uma mensagem do tipo modelo self ponto esse aqui é o modelo beleza e o facante será o self P fabricante que tá aqui beleza agora eu vou conseguir ter acesso a essas informações aqui certinho então deixa eu colocar só uma quebrinha de linha e a gente vai testar de novo só que agora não preciso mais desse print aqui embaixo pra gente usar esse getter o que a gente vai fazer é simplesmente executar esse método Ou seja eu tiro esse print chamo meu
veículo ponto e aí get Fabri modelo com os parênteses porque isso é um método vamos ver o que aparece agora vou rodar agora apareceu sou um veículo e me desloco modelo cadlac Escalade fabricante GM perfeito agora a gente conseguiu acessar os atributos internos só que usando um método Qual que é a vantagem disso a gente pode programar esse método de forma que os dados sejam acessíveis somente da forma que eu desejo preservando assim a integridade desses dados tá isso importante então recomendo sempree utilizar atributos privados com o und und e criar métodos getter para você
acessar esses atributos dentro de uma classe e o número do registro número do registro a gente tem que gravar eu tem que fornecer esse dado só que ele também é privado Então também não vou conseguir acessá-lo diretamente então pra gente poder acessar esse esse atributo interno e gravar um dado nele eu vou precisar de um outro tipo especial de método que é o método Setter o Setter é um método que permite gravar um dado dentro de um elemento na dentro da classe dentro do objeto no caso Então a gente vai definir um set número do
registro que vai receber e self e aqui a gente precisa dizer que ele vai ter um um atributo registro também porque eu tô fornecendo um dado para ele externamente tá E aí eu vou dizer que self ponto e eu vou procurar o número do registro tá aqui vai receber o registro que é o nome desse desse atributo aqui o valor interno vai ficar armazenado aqui então quando eu executar esse método passando o valor do registro o número de registro do meu veículo ele vai vai ficar guardado aqui e se eu quiser ler esse valor posteriormente
eu posso criar um getter para ele também então Def get num registro esse aqui recebe só o self porque não vai modificar nada e aí a gente pode dizer o seguinte vamos supor eu não quero imprimir na tela eu quero retornar esse valor para ser usado em outro processo Então em vez de escrever um print eu boto um return e mando retornar o self ponto e o número do registro que tá gravado lá dentro Prontinho agora eu tenho um getter pro número do registro e um Setter para ele também e agora a gente vai testar
isso aqui aqui embaixo depois de pegar o fabricante modelo eu vou fazer o seguinte meu veículo ponto S número do registro e vamos passar um número de registro vamos supor que o esse meu veículo tem o registro um número qualquer aleatório 4903 1 2 tracinho um pronto certo então esse valor vai ficar gravado dentro daquele atributo aí eu consigo depois acessar isso aqui por exemplo print e aí eu vou dizer o seguinte registro dois pontos e aqui eu vou colocar meu veículo ponto get num registro os parênteses porque isso aqui se trata de um método
beleza posso até colocar uma quebrinha de linha depois então aqui eu vou eu vou atribuir um valor para esse para esse atributo interno e depois eu acesso esse valor utilizando o getter Então uso set para gravar e o getter para obter o valor quando eu executo esse código ele vai mostrar registro 490 320 a gente conseguiu gravar o valor lá dentro e depois fazer a leitura deste valor tranquilo aqui 4903 2 0 não é o valor que eu passei Ah o que ele fez aqui foi fazer um cálculo ele fez isso menos isso e gravou
o valor lá dentro Então nesse caso como tem esse tracinho aqui eu preciso dizer que é uma string tá aí quando eu executar Aí sim vem o registro direitinho então aqui a gente tem o tipo de dado fazendo um papel importante mas tá funcionando tá tá funcionando tranquilamente tanto o getter quanto o Setter pro registro então beleza A gente pode dizer que a nossa classe aqui tá pronta Por que a gente tem para fazer aqui nessa aula mas tem outras coisas que a gente pode ver e um exemplo é o conceito de herança Qual é
a ideia da herança A ideia é a seguinte essa minha classe ela implementa um veículo mas um veículo pode ser qualquer coisa na verdade não necessariamente um carro uma motocicleta é um veículo um caminhão é um veículo um avião é um veículo uma espaçonave é um veículo então a gente pode ter categorias diferentes de veículos e cada um deles vai ter dados distintos vai ter métodos distintos por exemplo um avião voa um carro anda uma bicicleta não necessariamente vai ter um número de registro então para cada tipo de veículo a gente vai ter atributos ou
métodos distintos E aí que que a gente tem que fazer para poder trabalhar de forma adequada com esses casos a gente vai criar classes específicas para cada um deles só que essas classes que a gente vai criar elas elas têm muito em comum com os veículos porque são veículos então eu não vou precisar na verdade definir tudo isso aqui de novo para cada classe que eu criar que seja um veículo o que eu vou fazer é usar um conceito chamado de herança no qual eu reaproveito o que já foi codificado numa classe para criar uma
outra e depois só modifico aquilo que realmente for diferente de uma para outra como é que a gente implementa a herança bom vamos criar uma outra classe aqui vou criar uma classe carro por exemplo para para falar especificamente sobre carros então fora dessa classe fora ela eu vou criar uma nova classe que eu vou chamar de carro e aqui dentro dos parênteses a gente vai usar parênteses agora a gente vai escrever o nome da classe da qual ela vai herdar as características que no caso é a classe veículo dois pontos e agora a gente codifica
essa classe Então esse essa palavra veículo dentro dos parênteses tá dizendo Olha a classe carro é um tipo de veículo então tudo que tá programado lá dentro da classe veículo também tá disponível aqui então por exemplo eu não vou criar um método init específico para essa classe eu só vou deixar um comentário dizendo que o método que o método init será herdado pronto não preciso programar esse método mas eu vou criar um método movimentar distinto para esse carro então eu vou criar um novo método movimentar com o mesmo nome do método anterior isso é importante
senão você vai acabar com dois métodos diferentes então eu vou criar um novo método movimentar e esse método aqui é não posso esquecer do self ele vai implementar uma mensagem diferente por exemplo print a gente pode escrever sou um carro e ando pelas ruas então quando eu criar um objeto do tipo carro e invocar o método movimentar o que vai aparecer é isso aqui mas o resto é igual a da classe veículo vamos testar isso aqui tô aqui no meu programa principal vou pular uma linha e vou criar um objeto carro vou chamar ele de
meu carro Então o meu carro é o objeto da classe carro e eu preciso passar dois valores para ele o fabricante e o modelo porque isso tá tá codificado na minha classe veículo e o carro herda isso de veículo Então vamos colocar Um fabricante por exemplo Volkswagen e o modelo Polo por exemplo beleza criei meu carro aí se eu chamar meu carro ponto movimentar ele vai exibir a mensagem de movimento do carro e eu também posso chamar meu carro ponto e o método getter fabricante modelo vamos testar Então vou executar o código tá lá sou
um carro e ando pelas ruas modelo Polo fabricante Volkswagen Então temos um objeto diferente aqui deixa eu comentar esse pedaço de cima do meu veículo para não atrapalhar os nossos testes Então tá aí meu carro tá criado eu posso criar quantos objetos eu quiser usando a mesma classe por exemplo eu vou criar um segundo carro eu vou criar o seu carro agora também da classe carro e recebendo outras informações por exemplo fabricante Audi e é Volkswagen também certo e modelo pode ser um A5 Sportback beleza e a a gente pode chamar o seu carro ponto
movimentar que é o mesmo método e também posso chamar o seu carro Modelo E aí quando eu executo esse código olha só que legal Aqui tá o meu carro em cima sou um carro indo pelas ruas modelo Polo fabricante Volkswagen sou um carro andando pelas ruas modelo A5 Sportback fabricante Audi tenho dois carros na memória do computador representados agora Então veja o poder da orientação objetos com uma classe eu posso criar múltiplos objetos distintos entre si com seus próprios dados suas próprias estruturas e interagir com cada um deles separadamente Vamos criar mais uma classez inha
com heran eu vou criar agora aqui em cima volto para fora do meu if name e vou criar outra classe classe vamos supor motocicleta também vaiar de veículo e aí para essa classe motocicleta também vou heredar o método init e vou criar um método movimentar diferente para ela então Def movimentar self Não esque da palavra self para fazer a referência ao próprio objeto ISO isso que vai diferenciar objeto do outro quando você criar vários deles então é importante ter essa palavra self E aí vou colocar uma mensagenzinha diferente do tipo corro muito então quando eu
chamar movimentar pra motocicleta vai aparecer corro muito isso aqui é um exemplo de um outro conceito de orientação objetos chamado de polimorfismo no qual o mesmo item no caso aqui um método se comporta de forma diferente de acordo com a forma como ele é usado então se eu uso movimentar para esse carro que é um tipo de veículo aparece uma mensagem se eu uso para motocicleta aparece uma mensagem diferente e a gente pode aqui embaixo agora criar uma moto então moto igual motocicleta aí eu tenho que passar os o os dados de fabricante e modelo
então pode ser uma Harley Davidson Davidson beleza e o modelo dessa Harley pode ser uma night Special beleza e aí é só chamar moto. movimentar pra gente ver a mensagem o polimorfismo em ação e obter o fabricante modelo dela se a gente quiser fazer essa consulta Então vamos executar para ver deixa eu puxar aqui o terminal para cima rodando á corro muito modelo nightster Special fabricante Harley Davidson bom para finalizar eu vou criar mais uma classez distinta também usando do conceito de herança a gente vem encapsulamento vimos polimorfismo e herança Então vamos lá eu vou
criar uma classe agora avião bem diferente um tipo de veículo bem diferente desses outros também herdando de veículo certo e aqui pro avião eu vou fazer uma alteração no método init dele porque ao criar o objeto avião além do fabricante modelo eu também vou passar a categoria do avião então para isso eu tenho que ter o método in diferente então eu vou fazer um override em cima desse método init então Def aí eu programa de novo init self sempre a primeira palavra vai continuar tendo fabricante o modelo só que agora vai ter a categoria também
certo e aí eu vou dizer que self pon vou chamar de Cat para abreviar é igual a categoria ou seja o elemento interno Cat vai receber o que está em categoria E aqui a gente pode Claro deixá-lo privado com und und se for o caso passei a categoria tenho que passar também o fabricante o modelo E aí o seguinte eu poderia simplesmente copiar esse código aqui self fabricante fabricante modelo modelo mas é desnecessário fazer isso mesmo porque eu posso ter um monte de itens aqui para serem copiados o método n ele pode ser e executado
para fazer um monte de coisas e a é um é um é uma desnecessária de código então o que eu vou falar o seguinte eu vou usar um codozinho aqui que é para dizer que além desse self é diferente o resto é igual E para isso eu uso a palavra super e abre e fecha o parênteses super significa superclasse significa a classe da qual o avião herda portanto é uma referência direta à classe veículo Então eu quero que lá ó ponto aí eu vou chamar o meu init super init e vou dizer que eu quero
herdar o fabricante e o modelo então esses dois itens vem da vem Obrigatoriamente de veículo e o cat a categoria implementada dentro do avião assim eu não preciso criar aquelas linhas de código para capturar os dados de fabricante modelo de novo e além disso eu vou precisar de um método getter se eu quiser consultar a categoria do avião depois então eu vou criar um método getter específico para capturar a categoria do avião eu vou simplesmente copiar isso aqui Vou definir esse método eu vou chamar get categoria get categoria return self Cat então quando ele for
executado ele retorna a categoria que foi fornecida na hora que eu criei o avião e se eu quiser saber o fabricante o modelo o método já existe Ele foi herdado de veículo e é esse método aqui get fabricante modelo então quando executa esse método já tá programado eu não preciso fazer ele de novo lá embaixo porque é o conceito de herança então ele já tá disponível pro meu avião Então vamos testar agora eu vou criar um avião que eu vou chamar de meu avião que é o objeto avião é o nome da classe e aí
eu vou passar eh Os dados aqui no caso agora são três parâmetros fabricante Boeing vírgula eh o modelo pode ser um 747 vírgula e categoria é um avião para voos comerciais então comercial isso vai criar o meu avião Note que eu tô dando exemplos de com Strings Mas você poderia ter números aqui número real número inteiro até mesmo valores booleanos podem ser passados dependendo da funcionalidade que você quer implementar eu vou chamar o meu avião pon movimentar ponto movimentar eu vou chamar o meu avião PG fabricante modelo pra gente ver o fabricante modelo e eu
vou chamar o meu avião ponto get número de registro não categoria isso categoria vamos ver se tá tudo certo aqui ou se falta a gente fazer alguma coisa então deixa eu puxar isso aqui para cima vou comentar Esses códigos dos carros e das motos aqui para não nos atrapalhar então deixa eu selecionar tudo cont control KC comentou Então vamos lá vamos ver esse avião que será que aparece quando eu executar sou um veículo e me desloco modelo 747 fabricante Boeing beleza que que tá faltando aqui vamos lá falt algumas coisinhas que falta aqui é o
seguinte quando eu dei esse G categoria o get categoria que ele retorna O self C retornou para quem tá na memória da máquina não apareceu aqui na saída então neste caso eu vou dar um print Antes desse meu avião e aqui usando uma f stringz eu vou pedir para retornar este valor aqui a categoria dele vamos colocar categoria do avião e aí dentro das chaves eu coloco a minha categoria agora deve aparecer a categoria dele outro problema foi foi o movimento sou um veículo el me desloco Ele usou exatamente a mensagem que tá na minha
classe na classe p n na superclasse só que o avião ele tem um movimento específico então a gente pode implementar de novo né utilizando polimorfismo um novo método pro movimento do avião que é o método movimentar só que na são avião agora então esse método aqui ele vai imprimir na tela uma mensagem do tipo eu vo alto pronto tá ótimo já é suficiente então agora se eu executar olha só o que vai acontecer eu vou alto mudou né a mensagem por causa do polimorfismo modelo e fabricante aqui e a categoria comercial por conta do nosso
método get a gente conseguiu ler esse parâmetro que foi passado durante a instanciação do objeto a criação desse objeto a partir da classe avião e o resto tudo er dado da classe veículo Então tá aí Isso aqui foi um primer de orientação objetos em Python tem bastante coisa eu sei na verdade a disciplina de orientação objetos é muito mais extensa que isso dá para estudar um semestre inteiro só disso na na faculdade por exemplo mas com isso aqui a gente já consegue começar a criar aplicações e usar esses conceitos nos nossos scripts né Por exemplo
quando você precisar modelar algo do mundo real dentro da sua apliação e trabalhar com esse algo é muito mais amigável trabalhar usando esse conceito de orientação objetos porque você dá nomes PR as coisas pras ações e pros atributos da mesma forma que você usa no mundo real Independente de serem itens físicos ou itens abstratos Independente de ser um veículo ou uma conta corrente de usuário por exemplo Então tá aí nessa aula vimos o conceito de orientação objetos classe objeto método e atributo método especial eit setters getters e os conceitos de encapsulamento polimorfismo e herança em
oo tente criar outras classes para representar eh outras entidades do mundo real para você poder treinar e consolidar esse conhecimento na sua mente vamos abordar Nesta aula o módulo os um módulo muito empregado para realização de funções relacionadas a sistemas de arquivos arquivos em geral diretórios e outras funcionalidades de sistema operacional eu vou criar um arquiv pra gente trabalhar com esse módulo mas na verdade eu vou fazer a maior parte dessa aula utilizando o terminal Tá eu vou chamar de os.py tá lá o nosso módulo mas na verdade a gente vai usar o terminal para
fazer a maior parte dos Testes aqui para abrir o terminal contrl shift aspa a gente abre diretamente um terminalzinho aqui no vs code você também pode fazer esses comandos utilizando o promp de comandos do Windows o powershell direto se você tiver no Windows o terminal do Linux ou o próprio Idol Então deixa eu subir um pouquinho mais esse terminal beleza bom a gente tem que entrar no Python então p beleza estamos no Python e a primeira coisa que a gente vai fazer é importar o módulo os de operating System então Import os tá importado que
que a gente pode fazer com esse módulo uma série de tarefas relacionadas a arquivos diretórios pastas etc uma das coisas que a gente pode fazer é isso aqui ó os pname vai te trazer uma informação uma stringz inha que diz qual é o tipo do sistema operacional é útil quando o seu script ele for executado em Sistemas diferentes então por exemplo a string NT significa que estamos no Windows se fosse Linux ou macos apareceria escrito posix e para outros sistemas operacionais mais obscuros por assim dizer aparecem Strings específicas bom suponhamos que eu quero saber e
qual o diretório atual em que diretório está aberto isso aqui a gente vai usar o os.get cwd cwd de current working directory o diretório de trabalho atual como é um método a gente coloca os parênteses enter e ele vai mostrar o diretório em que estamos no momento C2 P bar Python projetos Note que as barras são duplas porque isso aqui é um caracter escapado se você colocar uma barra só ele vai entender que o próximo caracter é um caracter de escape e provavelmente vai gerar um erro então às vezes a gente vai ter que utilizar
essa barra dupla e a gente também pode usar um atalho que é os curar sem a sem os parênteses porque isso aqui é um atributo e ele vai dizer ponto que que significa esse ponto isso aqui é um atalho para o diretório atual então quando eu quiser realizar algum tipo de tarefa que faça referência direta ao diretório atual diretório aberto eu posso utilizar ou o ponto ou escrever os. curer current directory que é o mais adequado porque aí o próprio Python gerencia isso e a gente também pode visualizar o conteúdo do diretório utilizando o método
list de então os. list de como é Método tem parênteses Isso aqui vai nos mostrar todo o conteúdo do diretório atual Olha só todos os scripts que a gente já fez no curso até agora olha quanta coisa a gente já estudou tá tudo dentro dessa pastinha de projetos muito bem Clear terminal se a gente quiser visualizar o conteúdo de um outro diretório que não seja o atual a gente consegue também os list dear e aqui dentro dos parênteses a gente vai passar o caminho completo do diretório entre aspas Então a gente vai colocar aspas C
do pontos Eh vamos supor que eu quero saber o que tem na raiz então coloco Barra Barra tem que ser a barra dupla porque ela é escapada enter E aí ele vai mostrar para mim o que que nós temos ali na raiz essas aqui são são as pastinhas e arquivos que eu tenho na raiz do meu sistema Inclusive a pastinha Python projetos tá aqui olha só além de outras E aí a gente pode mudar de diretório com Change dear osos pon CH dirar e aí você passa de novo e o caminho do diretório que você
deseja que pode ser um caminho absoluto ou seja des lá da raiz Até chegar na pasta que você quer ou relativo que significa a partir do diretório atual entre na numa outra pasta que está aqui dentro nesse caso eu vou usar um caminho absoluto então eu vou escrever C2 pontos barra barra a barra tem que ser dupla tá se a gente usar barra simples Olha o que vai acontecer ele vai dizer ó eh literal de string não terminado é um erro de sintasse Então a gente tem que usar os.cd para esse comandinho C2 pont barra
barra caracter de escape E aí ele muda direitinho como é que eu sei que mudou os.get cwd aí ele vai dizer estamos agora na raiz do nosso sistema aqui aparece como C2 pontos porque eu tô no Windows se você tiver no Linux vai aparecer esta outra barra aqui invertida para dizer que você está na raiz do sistema é a mesma coisa tá para todos os efeitos e aí a gente pode criar uma pasta vamos criar uma pasta agora nesse diretório pra gente começar os nossos exemplos para criar a pasta a gente vai usar o mkd
os. mkd E aí dentro dos parênteses a gente passa ou o caminho completo Até a pasta ou só o nome dela para criar no diretório atual que é um caminho relativo então eu vou criar uma pasta que vou chamar de test veja entre aspas porque é uma string enter tá criado aí se eu der um os. list dear ele vai dizer que nós temos aqui dentro a pastinha teste Olha só apareceu já teste aqui e agora a gente vai entrar nessa pasta para fazer outros exemplos dentro dela então osch dear E aí caminho relativo dessa
vez não precisa escrever C2 pontos barra isso barra aquilo porque eu já estou no C2 pontos vou entrar na pasta que está dentro do diretório atual só põe o nome dela enter Beleza agora estou dentro da pasta teste se eu der um os. getcwd ele vai vai dizer que eu estou em C2 bar teste que mais a gente pode fazer a gente pode criar pastas fora do diretório atual também passando caminhos montando caminhos distintos por exemplo vamos supor que eu queira uma pasta teste do também na raiz mas eu não quero sair daqui onde eu
estou como é que eu faço a gente pode fazer o seguinte eu vou criar uma variável pasta nova que vai receber o nome da pasta test do é uma string eu vou criar a pasta Pie para dizer onde ela vai ser criada E aí eu vou passar string C2 P barra barra Veja a barra dupla ali e agora eu vou montar o caminho completo então caminho completo igual e aí eu vou utilizar o método pa. jooin da biblioteca os Então os pp. jooin ess aqui é o método interessante que permite montar um caminho na forma
de um objeto join significa juntar PA significa caminho então PF join aí eu passo a pasta P primeiro e depois a pasta nova pasta P aonde vai ser colocada essa pasta nova Beleza tem o caminho montado Se eu der um print nesse caminho print caminho completo ele vai mostrar para mim ó que vai ser criada essa pasta aqui e agora para criar a pasta É só usar o mkd os.mc dear e a variável com o caminho completo caminho completo Opa caminho coloquei Cainho então caminho completo beleza agora sim agora eu posso dar um os. list
dear lá no meu C2 pont Aí temos teste do criado vendo que beleza essa técnica de montar o caminho utilizando as variáveis e o pfj é útil quando o usuário precisa criar uma pasta dentro do do script fazendo algum tipo de processamento e claro você como programador não sabe qual é a pasta que ele vai criar então ele vai montar na hora a pasta você vai Juntando os pedacinhos e faz o procedimento vamos supor agora que eu quisesse renomear essa pasta não era para ser teste dois era para ser teste 10 como é que a
gente faz bom deixa eu dar uma limpada no terminal beleza Eh vamos supor que eu queira renomear E para isso eu vou usar o método os. rename tá o método os. rename permite trocar o nome de uma pasta como eu não tô dentro do C2 pontos eu vou colocar o caminho completo dela C2 P barra barra teste 2 esse é o nome atual E aí eu vou trocar esse nome para C2 bar test 10 Então vai trocar o nome de teste 2 para teste 10 se eu já estivesse dentro do C2 pontos Era só colocar
teste 2 e teste 10 direto então dou enter deve ter renomeado vamos lá os. list dear e agora a gente a gente acessa o C2 P C2 P barra bar vamos ver o que tem lá teste 10 tá aqui ó renomeada a pastinha com perfeição E aí a gente pode excluir essa pasta vamos supor que eu não vou mais usá-la como é que eu removo uma pasta os.rm dear remove directory aí você passa o caminho da pasta também ah teste 10 toma cuidado para não remover a pasta errada coloca o caminho direitinho da pasta que
você quer remover dá enter tá removida se a gente der o list dia de novo a o teste 10 desapareceu tá vendo ó já era Note que eu só consegui remover porque essa pasta tá vazia se ela não estiver vazia A gente não consegue remover a pasta e eu vou mostrar como fazer isso um pouquinho mais paraa frente deixa eu limpar aqui outra coisa que a gente pode fazer é verificar o nome do arquivo ou pasta a partir do caminho completo para isso a gente vai ter o peth pon basename E aí você passa o
caminho completo por exemplo vou passar o caminho do diretório atual eu não preciso escrever esse caminho é só chamar o s.get cwd isso aqui não retorna O Caminho atual então eu posso passar esse caminho atual para alimentar um um outro método aí nesse caso ele vai me dizer teste em vez de mostrar o caminho completo ser dois pontos barra isso barra aquilo até chegar em teste ele fala não nome atual é teste e se a gente quiser saber o o nome do diretório que contém e esse objeto atual aí a gente vai utilizar o dirname
então os.path.dir name E aí você passa o caminho completo do elemento que pode ser um arquivo também tá então os.get cwd para pegar do diretório atual então ele tá dizendo ó o diretório atual está dentro de C2 pontos o diretório atual se chama teste então a gente consegue obter separadamente essas duas partes do caminho de um arquivo ou diretório utilizando base name e dinê que é útil na hora de construir caminhos para gravar arquivos de usuário que é algo que a gente também vai fazer aqui no curso a gente também vai trabalhar com gerenciamento de
arquivos criar editar e excluir arquivos a partir de scripts bom a gente também pode criar diretórios de forma recursiva que que significa isso significa criar um monte de diretórios de uma vez um dentro do outro então em vez de criar um diretório entrar nele criar outro entrar nele criar outro eu posso fazer tudo isso de uma vez só para isso existe o método make dears Então vamos supor o seguinte ó eu vou criar uma pasta Pie que vai ser o caminho atual então os.get cwd ol que interessante eu uso bastante isso para não ter que
digitar o caminho completo então Peguei o caminho da pasta atual E aí eu vou criar e uma estrutura de novas pastas que eu vou chamar de novas pastas aqui eu vou escrever qual a estrutura que eu quero por exemplo eu quero pastas com nomes de lugares América barra barra Brasil barra barra e Ilhabela certo e aí fecha o ASP veja as barras duplas importante veja que eu não coloquei nenhum caminho completo aqui Eu só coloquei a estrutura que eu quero criar então eu quero criar essa estrutura com essas três pastas uma dentro da outra dentro
do diretório atual e agora eu vou montar o meu caminho então caminho você já sabe ospf join E aí a gente pega a pasta P E as novas pastas beleza Montamos o caminho você pode até dar um print no caminho para ver isso é isso que ele vai montar C do pontos bar test Barra América Brasil eaba e aí a gente vai criar estrutura de diretórios agora com os. make dears Olha o s no final plural tá E aí Passamos o caminho para ele Pronto ele criou recursivamente certo criou todas as pastas se a gente
abrir aqui o Windows Explorer Olha que interessante mostrar que o negócio realmente funciona pasta teste que a gente criou América tá dentro dela Brasil e Ilhabela E aí a Bela vazia Então tá aqui em cima o caminho completo que a gente acabou de criar usando o comandinho no Python muito bom esses métodos make de make dear também tem um outro argumento possível e que é o argumento modo eu poderia ter escrito assim caminho vírgula e especificado um modo que que é esse modo é o modo de permissão Ou seja a gente consegue ajustar como essa
pasta vai ser acessado esse esse arquivo no caso seriam pastas se o usuário atual vai ter permissão Total ou não se outros usuários vão ter permissão ou não aí eu recomendo consultar a documentação para entender como é esse moddo é um modo com numeração octal tá um pouquinho mais complicado mas pode ser interessante porém no geral criar dessa forma aqui já é suficiente tá criou a pasta agora a gente vai a gente pode gravar coisas dentro dela então deixa eu limpar o terminal e claro alguns erros podem ocorrer e Geralmente os erros que ocorrem são
do tipo os error então eles precisam ser tratados com blocos try accept então quando você for escrever scripts que usem esses comandos todos que a gente tá vendo esses métodos todos tem que lembrar que podem ocorrer erros do tipo os error certo muito bem então vamos prosseguir a gente pode verificar se um caminho existe ou não para isso .p. exist E aí você passa o caminho que você quer testar por exemplo C2 P barra tentar aqui uma barra simples test Barra América existe esse caminho ele vai dizer true existe ele reclamou né porque o caracter
de escape tá inválido mas ele conseguiu fazer a verificação por isso que é sempre importante usar o caracter de escape para evitar esse tipo de aviso que em algum momento pode se transformar num erro tá então os. paath p exists exists vamos lá C do pontos barra barra teste Barra Barra América beleza Agora ele só escreve true sem o aviso se eu testasse um outro caminho os pp. exists C2 P bar Barra teste barra barra Ásia por exemplo não queria diretório Então vamos ver o que ele retorna para mim false não existe então isso é
interessante Por exemplo quando você vai criar uma pasta usando um script verificar se ela existe antes de tentar criar para não levantar um erro a gente também consegue verificar se o item é um diretório ou se ele é um arquivo para isso a gente tem o os.pet pon is dear é diretório então se eu passasse dois pontos teste para ele true é diretório eu poderia p perguntar é arquivo para isso eu uso path P is file c dois pontos test isso aqui é um arquivo false não é um arquivo é um diretório legal o que
mais a gente consegue fazer a gente consegue também obter o nome de um arquivo e separar da sua extensão para fazer diversos tipos de trâmites interessantes então por exemplo deixa eu ver onde é que eu tô agora getcwd tô no diretório C2 bar teste É aqui mesmo que eu quero eu vou criar um arquivo aqui dentro como é que eu crio um arquivo eu vou usar um manipulador comando Open e vou criar um arquivo chamado ar. TXT um arquivo de texto vazio tá usando o parâmetro x de criação beleza e aí eu vou fechar o
meu manipulador pon Close Ah não entendi o que é isso não se preocupe a gente vai ter um vídeo inteiro extenso inclusive para falar sobre sobre gerenciamento de arquivos aqui eu tô simplesmente criando um arquivo de texto né o ar TXT que eu passei ali ele vai ser criado já foi criado inclusive Se eu der um s. list dear no diretório atual além da pasta América eu também tenho agora esse ar. TXT que é um arquivo se a gente olhar no Windows Explorer dentro de teste tá lá Arc documento de texto perfeito poderia ter criado
por aqui também pro nosso exemplo não tem problema tá Clear terminal agora eu posso obter o caminho do arquivo então eu vou chamar esse caminho de arquivo igual os pp. base name vou pegar o nome dele eu passo o caminho dele completo C2 pontos barra barra test barar PTT não pode esquecer da extensão beleza print arquivo pra gente ver o que ele gravou ali dentro o nome do arquivo E aí eu posso obter agora olha que interessante com osp pon splitext é um t só split text mas é um t só eu passo essa variável
arquivo e olha o que ele vai mostrar para mim Arc vírgula TXT ele divide o nome do arquivo de sua respectiva extensão e isso é muito útil porque com isso a gente pode por exemplo realizar operações em massa dentro de arquivos dentro de diretórios por exemplo Excluir todos os arquivos TXT ou copiar os arquivos aros que são de imagem ou ainda renomear os arquivos em massa então dá para fazer muita coisa legal e muito útil utilizando esse tipo de técnica Então guarde aí ospf split Text e aí se eu quiser excluir o arquivo também temos
os. remove lembre que o RM dir excluir diretório vazio e o remove vai remover o arquivo então como eu já estou no diretório que contém o arquivo É só passar o nome dele ar TXT e o arquivo Foi removido cdos list dear vai aparecer só o nome do diretório América bom o módulo os ele é bastante extenso tem muito mais do que isso que eu mostrei aqui eu recomendo que você consulte a documentação oficial indem doc.python.org Library os. HTML e aí você vai encontrar um monte de outros métodos e e atributos interessantes do do módulo
os para você estudar e agora uma palhinha em outros módulos que também permitem gerenciar arquivos e pastas um deles é o módulo pathlib que é uma bibl alternativa a biblioteca os eu vou importar o pef Lib Import pef Lib vou limpar aqui a tela o terminal e a gente pode por exemplo pegar um caminho caminho igual pef [Música] libpath e aí chamar o caminho cwd ele vai dizer o caminho atual C2 P bar test olha só é algo que a gente consegue fazer com essa biblioteca ele é alternativa na verdade a s e uma outra
bibliotec Zinha interessante que a gente pode usar é a biblioteca sh Util vamos supor que eu quisesse remover esse esse diretório teste de uma vez remover essa pasta indefinitivo do sistema como é que eu faria a gente poderia tentar por exemplo passar os. redir e informar a pasta C2 P bar test Só que nesse caso ele vai reclamar que o arquivo já está sendo usado por um outro processo deixa eu matar isso aqui e reabrir o terminal entrar de novo aqui porque tinha algum processo usando Import os Ok então vamos tentar de novo os.re deir
e aí C2 pontos test Então vamos tentar remover o a pastinha teste ó ele vai dar esse erro a pasta não está vazia tá vendo os error que eu tinha citado anteriormente então não dá para paraa gente excluir pastas não vazias se a gente usar o RM dear mas a gente consegue remover com outro outro módulo que é o SH u a gente importa esse módulo sh Util tá importado e agora a gente chama sh rm3 remover árvore de diretórios e passamos para ela no caso o caminho completo não vai passar o caminho errado senão
você remove um monte de coisa da sua máquina tá aí tá removido se a gente der agora um os. list Gear e chamar aí C2 P barra barra ele vai mostrar um monte de coisa exceto a pasta teste que foi excluída para sempre mesmo esquema também um é um módulo grande o SH Util recomendo que que você Consul a documentação oficial do Python tanto pro sh o quanto pro módulo pathlib tá são duas lições de casa para você fazer se aprofundar nesses dois módulos Então tá aí nessa aula a gente explorou um pouquinho o módulo
os para aprender a fazer o gerenciamento de arquivos usando o Python e na próxima aula a gente vai fazer um pequeno projetinho usando e um script e usando esses métodos da biblioteca os a gente vai criar um programinha bem útil que permite renomear todos os arquivos dentro de uma pasta vamos supor que você sei lá tirou um monte de fotos e gravou no computador ou baixou um monte de arquivos da internet de vários lugares colocou na máquina e gostaria de de renomear esses arquivos todos em massa colocando algum tipo de padrão por exemplo numerando os
arquivos ou alguma coisa do gênero a gente vai aprender a criar um scriptz inho que faz isso no próximo vídeo vamos resolver o seguinte problema então utilizando um script em Python quero renomear todos os arquivos de dentro de uma pasta usando um padrão específico que pode ser informado pelo usuário no momento de executar o script para isso o que eu vou fazer é o seguinte primeiramente eu vou criar uma pasta eu vou criar aqui dentro de C2 pontos vou usar o Windows Explorer mesmo para criar essa pasta vou chamar essa pasta de teste você deve
lembrar do vídeo anterior que a gente excluiu essa pasta do sistema utilizando o módulo os se você preferir você pode criá-la com o próprio módulo os para treinar então a pastinha tá aqui C2 P bar test aqui dentro eu vou criar um arquivo de texto qualquer vou utilizar o próprio Windows Explorer também ah novo botão direito novo documento de texto vou dar um nome qualquer para ele vamos supor que esse Arquivo ele foi obtido de uma fonte qualquer Baixada na internet Cop de algum lugar não importa de onde ele tem um nome estranho do tipo
ABC 13. TXT P TXT não preciso colocar porque já extensão o padrão do arquivo de texto então ele tem um nome qualquer E aí eu vou fazer várias cópias dele eu vou simplesmente dar cont control c para copiar com arquivo selecionado e cont control V na mesma pasta ele vai criar esses arquivos de cópia tá vendo Então vou fazer isso várias vezes ó Legal tem tenho 15 cópias desse arquivo Então vamos supor que o arquivo tá nesse formato e eu gostaria que ele estivesse com um nome de diferente por exemplo dados um dados dois dados
três e assim por diante com número sequencial mas com o nome mais adequado mais ajeitado como é que eu posso renomear isso aqui tudo de uma vez só porque veja renomear isso aqui um por um é trabalhoso E olha que tem aqui 15 mais o original 16 arquivos Imagine se fossem 1000 arquivos então ficar renomeando um por um é muito trabalhoso vou usar o Python para me ajudar nisso como é que eu vou fazer vou fechar o Windows Explorer e agora a gente vai criar um scriptz inho aqui V vamos utilizar para isto o módulo
os então Primeiro passo é importar o módulo os Import os aí eu vou mudar o diretório os.cd pro diretório Onde estão os arquivos que é o C2 P barra barra test coloque a barra dupla lembre-se porque tem que usar o caracter de escape eventualmente eu poderia pedir pro usuário digitar o diretório para acessar um diretório diferente mas nesse exemplo eu vou colocar direto o diretório no Script e posso eventualmente imprimir na tela o diretório para usuário certificar de que está no lugar certo então diretório atual E aí a gente usa os.get cwd que você já
conhece muito bom agora vamos criar o scriptz inho em si que faz esse esse esquema de renomear o usuário ele vai fornecer um padrão pro nome então eu vou chamar esse padrão de padrão und nome aí vou pedir pro usuário digitar alguma coisa do tipo qual o padrão de nomes de arquivos a usar sem a extensão ele não será não será necessário fornecer a extensão então o usuário vai digitar o padrão que ele quer e eu vou guardar isso dentro da variável padrão nome e o que a gente vai fazer agora é o seguinte a
gente vai fazer uma iteração por todos os itens que estão dentro desse diretório quando o item for um arquivo eu mando renomear esse arquivo como é que a gente faz a iteração com laço for só que é o seguinte o arquivo ele tem duas partes ele tem o nome e tem a extensão eu quero separar isso poder obter essas informações e além de tudo eu preciso de um contador para poder por exemplo numerar os arquivos Eu quero um formato do tipo dados um dados 2 dados 3 e assim por diante para isso eu vou criar
uma variável contador e uma variável Arc de arquivo e eu vou usar o operador in para ir buscar esses dados dentro de uma enumeração para isso eu vou usar um esquema chamado enumerate que é uma função interna do Python essa função vai receber uma lista de itens e vai retornar um objeto enumerável qual que é a ideia dessa função enumerate ela é muito usada em Loops para obter tanto os elementos que estão dentro de uma de uma sequência quanto os índices associados que é o numerozinho que identifica cada elemento dentro da sequência Então essa função
vai retornar um objeto numerado contendo pares de índice número de índice E o respectivo elemento onde é que tá a sequência que eu vou trabalhar é a listagem do diretório então eu chamo os. list dirar Isso aqui vai me trazer todos os elementos que estão dentro desse diretório E aí eu vou passar esses elementos pra função enumerate que vai separá-los e vai atribuir um contador e o nome de arquivo para cada um deles então dois pontos isso é um laço for aí eu vou verificar se o item é um arquivo isso é importante porque eu
não quero renomear os diretórios que estejam lá dentro quero renomear só os arquivos então if os.path.is file isso é importante isfile quem o arquivo o nome de cada um dos arquivos se for aí sim a gente faz o esqueminha e o que que eu vou fazer para começar eu vou separar o nome da extensão então o nome do arquivo vai ficar na variável nome Arc e a extensão na variável stain undar Claro que pode ser o nome que você quiser no caso e aí você vai vai lembrar que pra gente poder separar o nome do
arquivo de sua respectiva extensão A gente tem o método split text Então é só atribuir os.pet P splitext de quem do Arc o arquivo que tá sendo retornado pelo enumerate então lembrando Arc é o nome do arquivo ou dos arquivos porque tá no nosso for né de todos os arquivos que estão dentro do meu diretório no diretório pro qual eu mudei aqui em cima e aí desses arquivos eu vou separar o nome e a extensão e logo embaixo a gente monta o novo nome do arquivo o nome vai ser nome Arc igual o padrão que
o usuário forneceu mais ou seja uma concatenação é um espaço em branco mais o valor da variável contador convertido para string não pode esquecer de converter porque contador é um número tá então S contador e aqui você pode fazer uma série de jogadas né você pode começar a partir de um valor específico somando um número no contador você pode acumular enfim n coisas que você pode fazer e eu recomendo que faça para testar então o nome ar é esse padrão Aí só que esse ainda não é o nome novo do arquivo o nome novo agora
a gente precisa colocar de volta a extensão então o nome novo vai ser aí eu vou criar uma f stringz inha que eu posso criar fora do print vai ser a combinação do nome do Arc que a gente acabou de fazer com a extensão do ar aqui a extensão do arquivo Então essa combinação aqui será o novo nome e aí eu chamo o método rename do objeto os para renomear o arquivo lembre que Arc é o nome atual do arquivo Então vou renomear de Arc para nome novo como isso tá no laço for e esse
laço for percorre uma enumeração Isso vai acontecer para cada um dos arquivos dentro desse diretório aqui e finalizou aí fora aqui do laço fora e fora do IF eu posso colocar uma mensagenzinha final do tipo arquivos renomeados Claro que dá para melhorar isso aqui colocando por exemplo algum tipo de verificação de caminho ou tratando exceções né se o arquivo não se não existe nenhum arquivo na pasta alguma coisa do gênero mas a princípio isso aqui deve resolver o nosso problema então tudo que eu tenho que fazer agora tá salvo é rodar o script vamos ver
se não fiz nenhuma besteira nele aqui diretório atual C2 bar test beleza ele mudou o diretório certo Qual o padrão de nomes de arquivos a usar sem a extensão Então vamos supor quero que eles se chamem dados alguma coisa escrever a palavra dados enter arquivos renomeados vou abrir o Windows Explorer e vou olhar por aqui então c dois pontos teste ó lá dados de 0 até 15 perfeito todos aqueles arquivos com aqueles nomes bagunçados foram renomeados imediatamente todos estão direitinho com o nome e a extensão arquivos de texto tá veja que o text não aparece
aqui porque o sistema operacional tá configurado para não mostrar a extensão dos arquivos mas ela está lá começou em zero por quê Porque o contador do enumerate começa em zero você vai lembrar que a contagem de posições das sequências começa em zero se você quiser começar em um é só somar mais um na hora de fazer a contagem certo lá no scriptz inho Então tá aí esse aqui é um script bastante útil que você pode adaptar de n formas distintas recomendo que você Tente fazer isso vou dar umas ideias do que você pode fazer aqui
primeiro você pode mudar o valor desse contador para ele começar a numeração de outra forma e e uma outra ideia legal que você pode fazer é tentar filtrar por tipo de arquivo vamos supor que na pasta eu ten arquivos de imagem arquivos de texto vídeo planilhas etc eu quero renomear só as planilhas não planilhas do Excel XLS Então como é que você faz para filtrar isso dica com Split split text você consegue descobrir ou retornar a extensão do arquivo E aí você pode pode usar um um condicional if para verificar se a extensão que foi
retornada é a que tem que ser renomeada ou não Então fica uma dica aí para você tentar fazer esse exercício então experimentem com essas ideias tenham outras ideias atualizem esse codozinho e usem porque esse aqui é o tipo de script Python que é bastante útil no dia a dia e já que estamos falando em arquivos na sequência a gente vai aprender como a gente cria abre e edita arquivos de texto usando os scripts em Python agora nós vamos falar sobre manipulação de arquivos de texto simples com o Python a linguagem Python permite que a gente
grave ou Leia o conteúdo de arquivos de texto simples ou texto plano um TXT por exemplo ou outro tipo qualquer de arquivo que temha um texto não formatado e para demonstrar isso eu tenho aqui já criado um arquivo de texto que Eu batizei de arquivo.txt vamos dar uma olhadinha O que que tem dentro desse arquivo nesse arquivo Eu tenho quatro parágrafos de texto com um texto Zinho básico que eu escrevi inclusive um texto falando sobre arquivos e a gente vai utilizar a princípio esse arquivo para fazer a leitura via Python Ou seja eu vou carregar
esse texto que tá gravado no meu computador no meu HD para dentro de uma aplicação em Python o arquivo tá na mesma pasta do projeto então a princípio eu vou trabalhar com um arquivo que está na mesma pasta do meu script mas a gente também vai conseguir abrir arquivos que estejam em outras partes do computador então eu vou criar agora um script em Python que eu vou batizar de arquivos.py beleza a gente vai trabalhar com este arquivo aqui então manipulação de arquivos de texto bem básico a gente vai usar para isso uma função chamada Open
que é uma função que retorna um objeto especial chamado manipulador de arquivos um objeto que é iterável e que a gente vai usar para realizar as operações sobre o arquivo que a gente vai abrir quando a gente usa essa função Open que você tá vendo na tela agora uma tabela a gente tem modos de acesso e os modos vão dizer como que vai ser o acesso a este arquivo por exemplo o modo R é somente leitura você abre o arquivo carrega o conteúdo dele pra aplicação e consegue ler seu conteúdo sem no entanto alterar nada
o modo r+ leitura escrita e aí se você tentar inserir um texto no arquivo o texto vai pro comecinho do arquivo o modo w é escrita e esse modo ele é um pouco perigoso porque ele apaga o conteúdo atual do texto e substitui por outro e se o arquivo não existir ele será criado o modo a é um modo bastante usado que é o modo de escrita que preserva o conteúdo do arquivo é o modo append Ou seja você insere um texto novo no arquivo e esse texto vai pro finalzinho do arquivo existem outros modos
como modo binário para trabalhar com arquivos binários atualização de leitura escrita que é o sinal de mais de mais e o x que abre o arquivo para criação exclusiva para ler o conteúdo de um arquivo de texto A gente tem alguns métodos específicos Então vamos primeiramente ler o conteúdo de um arquivo a gente pode trabalhar com os métodos read readline ou read less então a gente começa criando o tal do manipulador o objeto Eu Vou Chamar esse objeto a princípio de manipulador até até ficar bem claro na mente do que se trata E aí para
esse objeto a gente retorna o resultado da função Open e a função Open vai receber alguns parâmetros um deles o primeiro parâmetro e o mais importante é o nome do arquivo que você quer abrir o meu arquivo chama-se arquivo.txt então entre aspas eu escrevo arquivo.txt Note que a extensão não precisa necessariamente ser TXT o que importa é o conteúdo do arquivo ser de texto simples mas poderia ter outra extensão ponto dat por exemplo é muito comum vírgula agora agora a gente vai dizer qual que é o modo de abertura do arquivo se eu quero abrir
somente pra leitura o modo é R entre aspas a princípio isso existem outros parâmetros que a gente vai pode passar aqui eu já vou passar mas primeiramente a gente vai olhar o que tem dentro do arquivo Então agora eu vou dar um print e aí a gente vai dizer que usando o método read nós vamos chamar o método read como é que a gente chama esse método objeto manipulador ponto e aí a gente escolhe o modo o método read é isso aqui então isso aqui vai fazer a leitura do conteúdo desse objeto que contém o
texto que foi aberto vamos executar para ver o que aparece tá lá tá aqui o conteúdo do nosso arquivo exatamente o mesmo conteúdo do arquivo TXT você vai notar o seguinte alguns caracteres vieram esquisitos aqui deveria ser um e aqui deveria ser um a com acento veja que os caracteres Eles vieram modificados por quê Porque o tipo de codificação do arquivo é diferente do tipo de codificação que esse terminal vai suportar por padrão então a gente tem que passar aqui no método Open o tipo de codificação que a gente quer usar geralmente é o tf8
então a gente vem aqui em cima depois do R vírgula e passamos mais um parâmetro encoding igual e aí entre aspas a gente escreve utf tracinho o E aí se eu executar de novo Olha que beleza texto vem perfeitinho nem sempre você vai querer usar o encoding o tf8 por isso que eu não mostrei logo de cara mas pro nosso idioma português e para outros idiomas que tem caracteres especiais geralmente a gente vai precisar Então esse é o método read ele traz o texto todo de uma vez para nós outro método que a gente pode
usar é o método readline que vai retornar é uma linha do texto por vez na ordem que elas aparecem no arquivo em vez de retornar o texto inteiro de uma vez só então a Olha que interessante se eu for trabalhar com o método read line eu vou copiar isso aqui read line e aí a gente escreve read Line aqui certo eu vou comentar o de cima e agora eu vou vou executar para ver o que aparece com o readline Então vamos lá rodando veja só com o método readline aqui Faltou um n com o método
readline veio uma linha só tá vendo então cada vez que eu executar o método Read Line uma linha vai ser retornada e sempre vai ser a linha seguinte então se eu se eu executar de novo esse mesmo método e o objeto ele sabe que tem que retornar a próxima linha não a mesma linha que já foi retornada Então olha só que interessante eu vou repetir o read Line aqui embaixo vou executar de novo o arquivo e agora aparecem os dois primeiros parágrafos ou linhas e veja que ele coloca uma distância entre elas Então existe realmente
um parágrafo entre uma linha e outra cada linha aqui é considerada um registro dentro do arquivo Tecnicamente falando então esse é o método readline e o outro método que é um dos mais usados é o readlines com s no final que vai retornar uma lista de valores com as Strings do arquivo cada string é uma linha do texto Então como é que funciona o readlines vamos lá vamos copiar isso aqui e criar um codigo Zinho pro readlines aqui eu vou usar uma linha só porque o read Line só precisa de uma linha a gente escreve
readlines no plural e o de cima a gente comenta vamos executar o read Lines para ver como é que ele retorna então rodando Olha só vem uma lista literalmente entre colchetes e tudo com todo o conteúdo do texto e aí você vai notar que tem as vírgulas que que estão delimitando cada um dos parágrafos ou seja cada linha do meu texto eh é um é um item de dentro dessa lista e aí como você sabe iterar e manipular listas você consegue iterar e manipular cada uma das linhas do arquivo separadamente muito bom que mais que
que a gente consegue fazer bom eu vou comentar isso aqui não necessariamente eu preciso usar esses métodos read readline dependendo de como você tiver acessando o arquivo você consegue ter acesso ao conteúdo dele diretamente eu vou demonstrar isso agora com um laço for pra gente fazer uma iteração pelas linhas do arquivo e outra coisa importante veja que a gente tá abrindo um arquivo que não tá dentro do script é um arquivo separado um arquivo que tá gravado no HD da sua máquina no seu SSD ou em uma outra pasta e por conta disso por conta
da gente estar manipulando um elemento externo ao nosso programa falhas podem ocorrer por exemplo o arquivo pode não tá disponível pode ter sido renomeado movido pode estar corrompido n problemas podem ocorrer que impedem o carregamento do arquivo e isso pode fazer com que o seu script trave Então como é que você vai evitar esse problema usando bom e velho try accept Então a gente vai tentar dar um try abrir esse arquivo Então esse manipulador aqui de cima eu vou mover ele daqui para dentro do try Então a gente vai tentar abrir o arquivo aí eu
vou usar um laço for para iterar por cada uma das Linhas dele então for vou batizar de linha minha variável em manipulador do arquivo aí eu posso imprimir a linha beleza e a gente vai capturar exceção agora então except Qual a exceção que pode ocorrer aqui é a exceção io error erro de entrada e saída Essa é a exceção mais comum que pode ocorrer na hora de acessar arquivos então io error E aí a gente põe uma mensagem se ocorrer essa exceção do tipo eh não foi possível abrir o arquivo e finalmente else se o
arquivo foi aberto e se de certa a leitura a gente vai fechar o arquivo a gente vai usar também o método close no final para fechar o acesso a esse arquivo e liberar os recursos da máquina liberar a memória e liberar o próprio arquivo que pode por exemplo ser acessado por outras pessoas se estiverem em rede então é importante no final sempre fechar o manipulador do arquivo agora o nosso código tá mais seguro mais funcional vamos executar para ver o que aparece tá aqui ó iter pelo arquivo e cada uma das Linhas está aqui embaixo
sendo exibida Note que tem um espaço entre uma linha e outra entre um parágrafo e outro isso aqui foi inserido pela função print que você sabe que o print ele insere uma quebra de linha então a gente já tem uma quebra de linha dentro do arquivo normal entre as linhas e o print inseriu outra por isso ficou essa distância se você não quiser isso sendo exibido a gente consegue tirar usando a funin de string rstrip então aqui dentro esse laço for antes de mandar imprimir a linha a gente pode fazer o seguinte olha só a
gente pode dizer que linha recebe o que já está em linha ponto R strip WR strip que que ISO ele vai fazer ele vai tirar o último caracter da linha Qual que é o último caracter da linha é a quebra de linha o Barra n que é invisível mas ele funciona porque você vê a linha sendo quebrada então agora se eu executar esse mesmo código de novo o texto aparece sem aquelas linhas adicionais perfeito o que acontece se eu tentar ler um arquivo que não existe vamos lá vamos supor que eu tivesse digitado aqui em
vez de arquivo tivesse digitado arquivos o nome de um arquivo que eu não tenho aqui na minha máquina aí eu tentei executar Olha só não foi possível abrir o arquivo em vez de travar a aplicação e ou exibir algum erro eh codificado na cara do usuário foi exibida essa mensagem porque foi capturada a exceção io error por isso que é importante quando a gente trabalhar com arquivos usar os blocos try except beleza e a gente também pode Ler arquivos que estejam em outros diretórios não necessariamente na mesma pasta do script por exemplo deixa eu abrir
aqui o meu Windows Explorer aqui na minha pasta de documentos eu tenho o arquivo dois eu vou abrir esse arquivo dois o bloco de notas ó arquivo gravado na pasta de documentos do usuário para acessar usar o caminho completo da pasta vamos supor que eu quisesse carregar esse arquivo no meu script mas Mas eu não quero mover o arquivo eu quero mantê-lo nesta pasta como é que eu faço nesse caso ten que usar o caminho completo Então vai funcionar assim aproveitando que eu tô aqui então vou fazer o seguinte eu vou clicar no arquivo com
o botão direito propriedades e aqui eu tenho o local dele Olha só C2 P bar users bar meu usuário Fábio dos Reis bar docum que é o nome da minha pasta tá então eu vou copiar isso aqui botão direito copiar ou você digita tanto faz vou copiar porque é mais rápido e a E aí eu vou fechar aqui e aqui dentro eu vou mudar este local em vez de abrir esse arquivos.txt eu vou colocar aqui aquele caminho e aí não posso esquecer evidentemente de colocar no final o nome do arquivo que é arquivo 2.txt Beleza
então agora eu tenho o caminho completo do arquivo Porém isso aqui não deve funcionar como assim não deve funcionar Vamos ver eu vou executar E aí ele vai dar um erro diferente esse erro aqui a gente não capturou com uma exceção é um erro de S syntax error unicode error aí ele vai reamar olha só do cinho do arquivo Ele marca Onde tá o erro é no caminho do arquivo então o caminho tem alguma coisa errada e aqui embaixo quando a gente lê essa mensagem maluca na verdade não é tão maluca porque ela tá dizendo
qual é o problema o problema é esse aqui ó unicode escape caracter de escape unicode esse caracter está errado que que significa isso significa que algum desses caracteres não foi interpretado corretamente qual deles com certeza não são as letrinhas do nome do arquivo ou dos nomes das pastas Muito provavelmente são essas barras aqui porque você vai lembrar de aulas anteriores que essas barras para serem interpretadas corretamente elas são elas precisam na verdade ser indicadas como caracteres De escape então é isso que a gente vai fazer aqui vamos arrumar isso como é que a gente transforma
essa barra em Barra mesmo para ela ser interpretada como uma barra é só você colocar outra Barra na frente aqui também aqui também e aqui também então eu estou dizendo agora pro Python que isso aqui realmente é uma barra para ter essa barra na string não é para ele tentar usar a letra U como caracter de escape por exemplo que é que ele fez aqui olha só truncate barra U esse U é desse users ele achou que isso aqui era um caracter de escape porque tem a barra como barra n ou barra T por exemplo
só que isso aqui não existe Então ele deu erro agora não vai dar mais porque agora estou dizendo que o caracter de escape é a barra em si bom vamos testar Olha só agora eu clico e aparece direitinho o conteúdo daquele arquivo arquivo gravado na pasta de documentos do usuário para acessá-lo usar o caminho completo da pasta perfeito outra coisa interessante que a gente pode fazer é fazer uma busca por termos dentro do arquivo isso é bem legal olha olha só o que a gente vai fazer eu vou voltar pro meu arquivo original arquivo. TXT
que tem mais conteúdo e aí é o seguinte arquivo TXT vamos ver se ele tá abrindo direitinho tá aqui ó abriu direitinho o meu arquivo arquivo área perir para arquivo de texto é isso que eu quero agora eu quero o seguinte eu quero saber se uma determinada palavra ou um grupo de de caracteres está presente dentro do arquivo Eu quero fazer uma busca no arquivo como é que eu faço isso a gente faz da seguinte forma eu vou pedir pro usuário digitar a palavra que ele quer buscar e vou guardar essa palavra numa variável chamada
texto por exemplo então texto é um input E aí eu pergunto pro usuário qual termo deseja procurar no arquivo então o usuário vai escrever uma palavra e esse texto vai ser procurado no arquivo onde onde a gente vai colocar esse código aqui dentro para a linha em manipulador a gente faz o rstrip direitinho para tirar o Barra N E aí a gente vai usar um if aqui dentro if texto em linha ou seja se aquela string que o usuário digitou estiver na linha atual aí a gente vai imprimir na tela alguma coisa como a string
foi encontrada então eu vou dar um print a string foi encontrada e na linha seguinte eu vou imprimir a linha especificamente Então vamos testar isso aqui deixa eu puxar para cima o terminal pra gente enxergar direitinho executar qual termo deseja procurar no arquivo vamos supor que eu estou procurando a palavra arquivo arquivo enter a string foi encontrada e aqui está a linha que contém essa palavra veja aqui na verdade ele encontrou a palavra arquivos porque eu pedi para procurar uma sequência então ele Procurou a sequência de caracteres arquivo e encontrou aqui arquivos é uma correspondência
próxima agora o que acontece se eu executar e tentar procurar palavra que não existe lá qual termo deseja procurar vamos supor mamão não retorna nada o if nem trata isso podia usar um if else para dier ol string não foi encontr no arivo ela não esteja presente a gente colocaria aqui o else print string não encontrada vamos rodar de novo para testar esse caso qual termo deseja procurar mamão string não encontrada e veja que ele rodou várias vezes por quê Porque ele faz a comparação para cada uma das Linhas cada uma das Linhas então ele
vai na primeira linha verifica se o texto tá lá vai na segunda linha verifica se tá lá vai na terceira verifica se tá lá e assim por diante por isso ele executou esse else diversas vezes o que você pode fazer para ele exibir uma mensagem só é usar uma variável Zinha do tipo sinalizador ou Flag aqui dentro para guardar um valor numérico por exemplo dizendo se foi encontrado ou não o valor e depois fora do laço for colocar as mensagens fica aí como exercício para você bom então é isso aprendemos a abrir e ler arquivos
de texto de forma simples usando o Python e o inverso a gente consegue fazer gravar escrever no arquivo de texto A gente também consegue e é o que a gente vai fazer agora para isso a gente vai usar eh o método principal write que significa escrever em inglês o método write usa aqueles mesmos modos de acesso que a gente viu na tabelinha no começo da aula RW a r+ etc só que em vez de abrir o conteúdo e mostrar na tela ele vai pegar um conteúdo que está no programa e vai transferir para dentro do
arquivo o que eu vou fazer agora é comentar tudo isso aqui para não nos atrapalhar e vamos trabalhar com a escrita em arquivos escrever em arquivos de texto bom a gente vai precisar de qualquer forma dessa dessas duas primeiras linhas aqui ó o bloco TR com manipulador e a gente vai precisar também da exceção e fechar depois esse manipulador isso aqui continua a mesma coisa um código semi pronto para trabalhar com esse material agora eu quero abrir o arquivo para escrita como é que eu faço em vez de R aqui a gente põe w pronto
isso vai abrir o arquivo para escrita e tudo que a gente passar pro arquivo vai ser escrito dentro dele o que eu vou passar pro arquivo vou passar na verdade com método WR Então vamos supor que eu quer escrever essa frase aqui boson treinamento então eu escrevo manipulador P WR e aqui dentro eu coloco o texto que eu quero passar bosom Treinamentos e você precisa colocar as quebras de linha senão o texto fica numa linha só isso é importante depois manipulador P de novo e vamos colocar mais uma linha e por exemplo como criar um
arquivo de texto com python beleza Tá bom isso aqui é mais do que suficiente quando eu executar isso aqui veja não deu erro aqui embaixo aqui embaixo não vai aparecer nada no meu terminal porque eu não mandei escrever na tela mas se eu olhar o arquivo que tá aberto aqui aparecem somente aquelas duas linhas que eu acabei de inserir o conteúdo anterior dele foi substituído foi apagado e no lugar está esse conteúdo novo aqui se você quiser visualizar aqui no terminal eh o conteúdo é só você usar aquela rotininha de leitura de arquivos que a
gente viu anteriormente agora e se eu quiser acrescentar um texto em vez de substituir o texto atual nesse caso a gente vai usar em vez do modo w o modo a de append E aí a gente pode acrescentar algumas frases extras por exemplo Python é muito empregado em ia Inteligência Artificial e depois a gente pode acrescentar Mais uma frasezinha do tipo Inteligência Artificial veio para ficar Beleza então agora modo a vou executar não deu erro quando eu olho no arquivo estão ali as minhas linhas novas ó Python é muito empregado em ia Inteligência Artificial veio
para ficar veja que esse Python ficou na mesma linha aqui porque aqui ficou faltando colocar um barra n antes do Python então poderia ter ter colocado Barra aqui no comecinho por exemplo em vez de colocar no final também questão de ajustar colocar no comecinho aí quando eu executo ele inclui as novas linhas Python muito PR a inteligência artificial veio para ficar e veja que ele não altera não não exclui as linhas anteriores A gente também pode acrescentar e um conteúdo um arquivo usando variáveis por exemplo eu poderia ter aqui fora do Block try um texto
uma variável texto com alguma coisa dentro por exemplo Python é usado em ciência de dados extensivamente eu quero acrescentar essa frase dentro do meu arquivo como é que a gente faz manipulador PW aqui no lugar do manipulador pode ser o nome que você quiser por is é arquivo pite então aqui dentro eu vou acrescentar esta frase não vou esquecer também de colocar aqui no próprio texto minha quebra de linha então aqui dentro eu escrevo o nome da variável texto texto beleza de baixo eu vou excluir vou executar Beleza quando você olha no arquivo tá lá
Python é usado em ciência de dados extensivamente então a gente pode acrescentar o valor que esteja numa variável Então esse valor pode vir de qualquer lugar Pode ter sido lido de um banco de dados veio da internet o usuário forneceu tá numa variável não importa a gente consegue gravar dentro do arquivo inclusive o valor pode vir de uma lista de valores e para trabalhar com listas existe um método específico que é o método WR Lines com s no final então o método right Lines escreve os itens de uma lista dentro do arquivo de texto Vamos
fazer um exemplo para finalizar com o método WR Lines para isso eu vou copiar isso aqui para baixo para ter uma cópia diferente esse daqui eu vou comentar e aqui a gente vai fazer o seguinte eu vou criar um arquivo vai chamar frutas pon TXT não precisa ser pon TXT poderia ser frutas pdat por exemplo qualquer outro outra extensão que você queira eu vou usar o método o modo e w de WR e aqui dentro Eu quero gravar e frutas uma série de frutas Onde estão essas frutas vamos criar uma lista de frutas aqui ó
frutas igual e a gente coloca as frutas aqui dentro por exemplo morango e aqui é importante colocar as quebras de linha junto Porque se você não colocar o Python simplesmente vai jogar os textos dentro do arquivo um grudado no outro numa linha só então por padrão ele não coloca as quebras de linha próxima fruta uva barra n próxima fruta Caju é barn também que mais amora Vamos colocar algumas frutas aqui com as suas respectivas quebras de linha framboesa barn mais uma para finalizar Graviola essa é a última não vou colocar a barra n nela Então
aqui a gente tem uma lista de frutas que vai ser passada pro método w Lines agora eu mudo o nome do método aqui ó WR Lines só o WR não é suficiente tem que ser WR Lines porque ele vai trabalhar com esta lista e vai criar o arquivo frutas pdat feito isso eu posso ler o arquivo aqui mesmo então vamos ler o arquivo criado primeiro arquivo criado vou usar um try também Aí a gente abre de novo o arquivo isso é importante tem que fechar e abrir de novo o arquivo porque o arquivo aqui ele
foi aberto para escrito tá especificamente Se eu tentar ler direto o arquivo eu não vou conseguir vai gerar um erro porque o arquivo não está disponível para leitura Então a gente tem que especificamente abri-lo para leitura agora se eu quiser ler o conteúdo ou abro para leitura escrita e agora a gente dá um print eu vou só mandar um manipulador ponre bem simples para ir mais rápido e aí a gente pode colocar o resto do código que é igual a exceção e o else para fechar definitivo o nosso arquivo Beleza então vai aparecer aqui embaixo
no terminal o conteúdo desse arquivo se ele existir se ele for criado e se tiver conteúdo ou seja se a minha criação aqui der certo tá vamos colocar um comentário aqui também Criar e gravar o arquivo Então vamos lá deixa eu subir o terminal rodando tá lá apareceu a lista de frutas perfeitinho as frutas já estão dentro do arquivo o arquivo foi criado com sucesso veja que o arquivo nem existia antes com o método com o modo w ele também é criado Se eu olhar aqui ó na minha lista de arquivos ele já apareceu aqui
embaixo como ele foi criado no mesmo diretório aparece o nome dele já aqui frutas pdat tá então ele tá disponível dentro do meu arquivo de do meu diretório de projetos do Python e você pode criá-lo em outro lugar da máquina Bastando para isso você já sabe passar o caminho completo aqui ser dois pontos barra isso barra aquilo barra aquilo outro se tiver no Linux barra isso barra aquilo barra aquilo outro barra invertida mas sempre lembrando que as barras são caracteres de escape precisam ter uma barra na frente para ser interpretadas corretamente então tá aí Nesta
aula abordamos suscintamente a criação e leitura de arquivos de texto usando Python e vimos alguns exemplos de uso dessas técnicas dá para fazer muito mais do que isso mas isso aqui já é um bom começo para você pesquisar e se aprofundar mais nesse assunto posteriormente Neste vídeo final eu mostro alguns recursos extras que vocês podem utilizar a escrever os seus scripts em Python então para isto eu vou criar um arquivo novo que eu vou chamar de recursos finais ppy bom o que que a gente pode fazer aqui de interessante e de extra algumas dicas de
como você pode usar o Python de formas um pouquinho diferentes do que a gente tá acostumado em outras linguagens primeiro recurso que eu vou mostrar é um um algoritmo Zinho extremamente simples para trocar valores entre duas variáveis dependendo do algoritmo que você tá criando Talvez seja necessário trocar os valores que estão entre duas variáveis por exemplo eu posso ter uma variável um com o valor vamos supor 12 e uma variável 2 com o valor 31 vamos supor que por algum motivo no programa é preciso trocá-las de lugar por exemplo você tá fazendo um algoritmo para
ordenação de valores numéricos como é que eu faria isso em uma outra linguagem qualquer de programação em em Java ou em C nessas linguagens Eu precisaria de uma variável auxiliar Eu precisaria de um auxiliar para receber conteúdo de uma delas fazer a passagem da do valor de uma variável para outra e finalmente do conteúdo da variável auxiliar para a primeira variável para a segunda variável ou seja um pouquinho confuso mas não é difícil só que são três linhas de código que você vai usar para cada vez que você fizer o procedimento em Python você não
precisa fazer isso é bem simples em Python você só vai fazer o seguinte pega uma das variáveis vírgula a outra variável igual e aí na atribuição você inverte a ordem delas coloca primeiro var 1 e var 2 O que o Python vai fazer aqui é pegar o conteúdo de var 1 e gravar em var 2 e o conteúdo de var 2 e gravar em var 1 sem perder os conteúdos aí eu vou dar um print na tela pra gente ver se funciona mesmo var 1 var 1 e a variável 2 2 vamos ver se deu
certo vou rodar o programa á var 1 31 var 2 12 var 1 era 12 e var 2 é era 31 tá então esse algoritmo Zinho aqui é bastante útil e que ele é bastante simples e resolve o problema aí da troca de valores com facilidade e com rapidez mesmo que você não venha usar esse recurso você precisa conhecê-lo porque você pode eventualmente se deparar com um código que usa essa sintaxe agora você já sabe do que se trata Então esse é o primeiro recurs que a gente viu Neste vídeo vou comentá-lo agora vamos para
o segundo recurs Sinho eu vou mostrar o operador condicional ternário você já aprendeu a fazer condicionais com if elif e else e na maior parte do tempo você vai usar isso mas às vezes pode ser que você precise escrever uma condição rapidinha bem curtinha numa única linha e nesse caso o operador condicional ternário pode ser útil por exemplo Suponha que eu tenha deixa eu usar essas mesmas duas variáveis aqui de cima var 1 e var 2 então eu vou descomentar elas aqui pronto var 1 e var 2 tem as duas variáveis preciso verificar qual dos
valores é o menor como é que eu faço faço assim usando o operador ternário menor igual var 1 if var 1 for menor que var 2 ELS var 2 Pronto tem um condicional completo aqui aí o Você pode imprimir na tela o resultado menor valor e a variável menor que contém esse valor vamos ver se funciona olha só que legal menor valor 12 se eu trocar o valor vamos trocar aqui de 12 para 62 Por exemplo quando eu rodo o programa de novo menor valor agora é o 31 que é o valor de var 2
Então esta linha aqui é um operador condicional ternário como é que ele funciona vai retornar o conteúdo de var 1 se var 1 for menor que var 2 senão retorna o conteúdo de var 2 tudo numa única linha é um eels tradicional só que ele tá condensado numa linha só a gente chama isso de operador condicional ternário porque ele tem três partes Então sempre que você precisar de um trecho de código para fazer um teste lógico e retornar um valor baseado nesse teste curtinho você pode usar o operador ternário na prática eu ainda prefiro usar
o operador if else elif comum convencional porque o código fica mais legível elegibilidade é um dos pilares do Python mas o recurso existe agora você sabe como utilizá-lo esse exemplo até que está legível dá para entender legal mas por exemplo eu poderia fazer o mesmo usando uma tupla de forma um pouquinho mais difícil de entender por exemplo eu poderia fazer assim print menor valor e é aqui dentro do da das chaves eu colocaria uma tupla contendo as variáveis var do var um nessa ordem ordem inversa e aí eu coloco dentro de colchetes na sequência uma
expressão var 1 menor que var 2 que que será que isso aqui vai imprimir na tela vamos executar para ver menor valor 31 Olha só igualzinho anterior se eu trocar os valores aqui de 62 eu voltar para 12 e executar de novo menor valor 12 ou seja isso aqui faz exatamente o mesmo que essa expressão de cima só que aqui eu tô usando uma tupla que é avaliada em relação a essa expressão que tá dentro dos colchetes e a ideia é retorne var do se isso aqui eh for falso retorno em var 1 se isso
aqui for verdadeiro é isso veja que é bem mais difícil de entender essa lógica mas ela funciona também e é curtinha tanto é que eu coloquei ela direto dentro do print e funcionou então se você se deparar com um código assim você já sabe do que se trata trata-se de um operador condicional ternário e veja que nem sequer precisamos da palavra if nesse caso ela já é interpretada implicitamente Então tá aí o operador condicional ternário em Python vamos comentar e ver mais um recurs interessante um recurso que pode ser bastante útil são os generators que
que é um generator é um tipo especial de objeto que é meio parecido com as compreensões de lista que a gente já estudou anteriormente só que vamos usar parênteses na sua sintaxe em vez de colchetes diferença do generator para compreensão de lista é que o generator não retorna uma lista mas sim um objeto especial iterável do tipo generator e a grande vantagem de usar os generators é que o conteúdo gerado aquela lista de valores não é gerado por completo na memória na hora ao contrário das compreensões de lista que que gera todo o conteúdo na
memória de uma vez e se a lista for grande pode consumir muitos recursos do sistema o generator não consome os recursos dessa forma então vejamos como criar um generator Suponha que eu tenho uma lista de valores Noé e os valores são esses daqui 1 3 5 7 9 11 13 15 e eu quero calcular os quadrados de todos eles então vou usar um generator para isso eu vou gravar na variável quadrados os resultados e o resultado vai ser retornado da seguinte forma item ao quadrado for item em valores veja que é idêntico a gente utilizar
compreensão de lista Mas em vez de co eu usei parêntese nesse caso o que vai acontecer é que os quadrados não não serão todos gerados de uma vez ficarão na memória disponíveis eles vão ser gerados e usados conforme eles forem solicitados então isso vai poupar recursos do meu sistema aí a gente pode dar um print nesses quadrados para ver que ele retorna um objeto do tipo generator Olha só vou dar um print aqui quadrados de novo Dom print lá generator Object então ele gera um objeto especial para você poder acessar os valores lá dentro você
pode fazer uma iteração nesse objeto por exemplo for valor em quadrados aí a gente dá um print valor então se eu executar Aí estão os quadrados dos números gerados o 925 até o 225 são os quadrados desses valores aqui dentro tá então é um recurso bem parecido mesmo com com as compreensões de lista Só que tem a vantagem de consumir menos recursos na memória então será que é sempre melhor usar generator não existem casos em que a compreensão de lista é melhor por exemplo elas são muito úteis se for necessário fazer iteração pelos dados gerados
várias vezes como os dados já estão gerados já estão na memória é muito mais rápido você fazer iteração por eles do que ficar gerando cada vez que você precisa acessá-los ou caso você precise aplicar métodos de lista diretamente nos valores gerados porque e o objet generator Não tem necessariamente os métodos que as listas possuem então muitas vezes você vai usar a compreensão de lista mas é importante conhecer esse recurso Extra dos generators porque ele também pode ser bastante útil e você pode se deparar com com esse recurso em outros códigos certinho então tá aí generators
in Python pqu dúvida S pesquisar mais a fundo na documentação oficial vamos comentar isso aqui ver mais um recurso vamos ver agora a função enumerate que a gente até já usou em aulas anteriores explicação um pouquinho mais formal dessa função que que é a função enumerate uma função de iteração ela permite iterar sobre elementos de uma sequência qualquer uma lista uma tup por exemplo e e retornar os elementos e seus números de índice simultaneamente no formato de tuplas índice item e você pode acessar tanto os it os índices quanto os itens de forma separada ou
em conjunto vamos ver um exemplo vamos supor que eu tenha uma lista de bebidas então eu vou criar minha listinha de bebidas e vou colocar alguns nomes de bebidas aqui ó café vou colocar também chá água eh suco e mais uma para finalizar refrigerante Beleza tem essa lista quero fazer uma iteração sobre esses elementos retornando os índices e os nomes dos itens Então vou usar um laço for para isso E aí eu vou criar duas variáveis de controle uma variável para representar os índices que eu posso chamar de I por exemplo e uma variável para
representar os itens que eu vou chamar de item aqui e aí a gente usa o operador in e chamamos a função enumerate enumerate e para essa função a gente passa a lista de bebidas no caso a gente passar a sequência pode ser uma lista qualquer aqui tá pode ser um dicionário uma dupla uma string o que você precisar dois pontos e eu quero imprimir agora os índices Então vou escrever V índice e imprimir aqui nesta posição o conteúdo da variável i e também os itens o nome de cada um dos itens na variável item vamos
executar para ver o que aparece tá lá índice zero item café índice Um item chá o dois é água até o quatro que é o refrigerante Então veja que ele retornou os itens quer dizer cada elemento que eu tenho dentro dessa lista mas também retornou Qual o número do índice associado a cada um deles veja que ele começa a contar do zero porque os índices começam aar tá do zero para sequências se você quiser representar um valor diferente aqui você pode fazer um cálculo por exemplo somar um aqui nessa variável i n na hora de
imprimir aí vai ficar seu critério Então esse é um exemplo da gente acessar simultaneamente os dois valores e pode ser útil você ter acesso ao número do índice por exemplo para para fins de classificação dos elementos mas eu não preciso necessariamente acessar ambos eu posso usar o enumerate retornar os dados e usar só um deles conforme a necessidade no segundo exemplo eu vou mostrar isso olha só Suponha que eu tenho uma lista de temperaturas Vamos colocar aqui algumas temperaturas -1 10 5 que mais -3 8 4 -2 -5 e sete então ten umas temperaturas a
pergunta que eu faço é quantas dessas temperaturas são negativas então eu vou criar uma variável de controle total que eu vou iniciar com zero que é o total de temperaturas negativas e aí a gente faz uma iteração com o lacinho for for e it in enumerate temperaturas que que é isso eu vou pegar o índice e o valor de cada temperatura enumerando o conteúdo da minha sequência de temperaturas E aí se a temperatura for menor do que zer neste caso eu variável Total então total mais iG 1 esse aqui é um operador de atribuição com
incremento ele atribui o valor da direita PR variável que tá à esquerda sem substituir o valor e sim acumulando o valor el Vai somando esse valor com o que já estava dentro da variável equivale a fazer Total igual total mais 1 quando terminar esse laço eu teria dentro total de temperaturas negativas aí eu posso imprimi-las na tela print alguma coisa do tipo A Total temperaturas negativas na amostra Então deixa eu comentar as bebidas aqui de cima que a gente já usou e vamos executar esse exemplo das temperaturas vamos ver rodando a quatro temperaturas negativas na
amostra -1 -3 -2 e -5 perfeito veja que nesse exemplo a gente usou enumerate só que a gente não acessou o número de índice a gente usou apenas os valores dos elementos em si que foram retornados Mas vamos supor que eu quisesse saber quais dessas temperaturas são negativas por exemplo eu poderia estabelecer que cada número de índice tá associado a uma cidade diferente o índice zero é de uma cidade isso aqui é outra cidade isso aqui é outra cidade e assim por diante eu quero saber então quais dessas cidades estão com as temperaturas negativas aí
nesse caso eu preciso retornar também o valor de índice Então como é que eu faço aqui uma simples modificação eu vou tirar esse print aqui de baixo e vou colocar no no lugar lugar deste total mais igual 1 é aqui eu vou modificar a mensagem vou escrever assim a temperatura em e agora eu coloco o número do índice aqui dentro pronto local já sei qual é o local que tem a temperatura negativa Então deixa eu escrever é negativa e posso exibir o valor também o valor desta temperatura com T gra C Beleza agora vai aparecer
tanto o número de índice que representa um local quanto o valor associado que é a temperatura então se eu Executar a temperatura na cidade zero da negativa na cidade número 3 na número 6 e na número S também Então veja que agora foi muito mais útil utilizar a função enumerate porque eu pude pegar e Além do valor em si também a posição específica daquele valor associado aqui nesse exemplo a uma cidade e como último recurs pra gente encerrar deixa eu comentar isso aqui vamos falar suscinta ente sobre um assunto que é um pouquinho extenso até
mas aqui vou ser bem bem bem rápido que é o gerenciamento de contexto com a palavra-chave wif então o que que é isso gerenciamento de contexto com wif é uma forma simplificada da gente no geral encapsular um bloco try except e com essa palavrinha wif e e associada a um esquema chamado gerenciamento de contexto que é algo que é programado dentro de determinadas classes métodos e funções Inclusive das funções eh e classes que você criar e a ideia de usar isso aqui é simplificar o código tem um código menor para executar a mesma função e
trazer ações de limpeza pré-definidas então determinados códigos ficam programados dentro do bloco if e são executados de forma independente você não não precisa se preocupar com isso a palavra wif é muito usada Nesse contexto para gerenciamento de arquivos vamos supor que eu tenho aqui abrir um arquivo eu tenho aqui deixa eu olhar os nomes dos meus arquivos aí eu tenho esse frutas pdat um arquivo de texto Então vou trabalhar com ele ó frutas pdat vamos supor que eu queira abrir esse arquivo da forma tradicional usaria um try então try no manipulador é open aí eu
passo o nome do arquivo frutas pdat modo Quero leitura e a codificação vai ser o tf8 E aí eu quero imprimir na tela a.re quero ver as frutas que estão lá dentro certo só isso E aí captura uma exceção except a exceção normal aqui io error você vai lembrar disso da aula de arquivos Então se ocorrer essa exceção print não foi possível abrir o arquivo ou alguma coisa do gênero e aí no else olha só aqui eu coloco geralmente o a p Close ou no final você tiver um bloco final que vai ser sempre executado
bom tudo isso aqui é para abrir um arquivo e e visualizar o seu conteúdo vou executar tá ali o conteúdo desse arquivo é uma lista com os nomes de frutas que você tá vendo aqui embaixo morango uva Caju am ET como é que eu posso abrir esse arquivo usando o gerenciamento de contexto com wi então a forma alternativa seria assim with chamo a função que eu quero que é open e na verdade eu vou passar essa função do jeito que ela está aqui vou copiar e colar with Open isso aqui e aí eu dou um
um apelido a que na verdade é o nome do objeto que vai ser criado aí o que que eu faço eu faço tudo que eu quiser em cima desse a por exemplo for linha em a E aí eu mando imprimir a linha pronto acabou Isso aqui vai fazer o mesmo trabalho disso aqui tudo certo Não precisei colocar o try accept nesse caso e não preciso me preocupar em fechar por qu Porque o método Open ele a função Open ela já traz embutida um gerenciador de contexto com a função Close é associada então se você utilizar
o if junto com Open automaticamente o objeto criado aqui será fechado aí aí se eu executar ele vai mostrar aqui embaixo para mim deixa eu subir olha só a primeira lista tá aqui método tradicional a segunda tá aqui embaixo com as frutas aqui ele colocou uma uma distância maior entre as linhas porque eu usei diretamente esse print aqui aí se você não quiser essa distância você já sabe é só você mudar caracter de fim de linha end igual e colocar essas aspas E aí rodando você vai ter um resultado similar ao do primeiro exemplo olha
só primeiro exemplo tá aqui e com o gerenciamento de contexto com if está aqui então tá lá gerenciamento de contexto com a palavra-chave wif aqui a gente e estabeleceu o gerenciador de contexto envolvendo a função Open e esse bloco que tá associado a ela a ação de limpeza per definida Close é executada automaticamente e a exceção também é tratada mesmo que ocorra uma exceção vai ser fechado esse bloco Essa é a ideia então você já sabe como utilizar o if Ou pelo menos Como reconhecer o que tá acontecendo Então se você eh se deparar com
isso em um código você vai saber do que se trata e vai saber como D andamento a debugging a correção ou a codificação em si claro que isso aqui pode ficar muito mais complexo com isso inclusive é possível você programar seus seus próprios gerenciadores de contexto dentro de classes funções etc mas isso é um assunto bem mais avançado e recomendo que você dê uma pesquisada é na documentação oficial da linguagem porque afinal de contas a gente tá chegando no final do curso e daqui em diante é com você pesquisar e se aprofundar mais nos assuntos
que foram abordados e conhecer novos assuntos da linguagem porque é claro não dá para abordar tudo que tem dentro do Python num curso mesmo que ele tenha 9 10 ou 20 horas de duração sempre vai ter alguma coisa extra para você aprender e agora que você já conheceu toda a parte básica da linguagem e adentrou a parte avançada você tá preparado para seguir ou os mais altos se aprofundar e aprender muito mais a respeito desta linguagem e suas bibliotecas chegamos ao fim da nossa jornada de estudos de Python eu espero que ao longo dessas horas
todas de estudo vocês tenham conseguido absorver o máximo possível do que foi passado que tenham entendido os exemplos codificado bastante e feito os exercícios apesar do curso ir até o Python avançado Ainda tem muito que ser aprendido por exemplo as bi Então qual o próximo passo de vocês aprender a utilizar bibliotecas e frameworks do Python aprender a trabalhar com o Python para Inteligência Artificial pra ciência de dados PR automação de redes e assim por diante e cada um desses tópicos vale um curso inteiro por si só e eu espero ver vocês em mais cursos também
por aqui quem sabe até mesmo cursos de bibliotecas sobre Python então eu agradeço a todos que acompanharam esse curso Muito obrigado Espero que tenha sido útil para vocês e vejo vocês em outros cursos Então é isso aí pessoal espero que vocês tenham gostado desse vídeo aproveitem para se inscrever aqui no canal da boson treinamento Se vocês não forem inscritos ainda e se já forem inscritos cliquem no Sininho aqui embaixo para ativar as notificações e assim serem avisados Quando tivermos conteúdo novo postado aqui no canal e se você quiser contribuir com a boson treinamentos torne-se membro
do nosso clube de canais temos o link aqui embaixo na descrição do vídeo e também o botão seja membro do YouTube com as instruções e não deixe de acessar o nosso website www.bosontreinamentos.com.br além de nos seguir nas redes sociais hein que estão aparecendo aqui em cima obrigado e até a próxima