Introdução ao Python: o guia completo para iniciantes | Alexander O. | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Introdução ao Python: o guia completo para iniciantes

teacher avatar Alexander O., Web Developer & Cyber Security Expert

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Promoção do curso

      1:45

    • 2.

      Introdução a Python

      4:53

    • 3.

      Nota importante ao trabalhar com Python

      4:23

    • 4.

      Como usar o atum

      4:16

    • 5.

      Como trabalhar com o código de visual estúdio

      6:41

    • 6.

      Hello World

      6:31

    • 7.

      Introdução da seção de tipos de dados

      1:21

    • 8.

      Trabalhando com strings

      8:53

    • 9.

      Outros tipos de variáveis

      4:49

    • 10.

      Operadores booleanos atualizados

      4:13

    • 11.

      Atualização de operadores aritméticos

      5:33

    • 12.

      Introdução à seção de cordas

      1:29

    • 13.

      Manipulação básica de cordas

      5:35

    • 14.

      Indexação e Slicing de cordas

      8:50

    • 15.

      Métodos comuns de cordas

      7:19

    • 16.

      Mais manipulação de cordas

      10:58

    • 17.

      Introdução à seção de fluxo de controle e loops

      1:41

    • 18.

      Introdução aos algoritmos

      5:40

    • 19.

      Declarações “If else”

      11:46

    • 20.

      Verificador de senha simples

      4:38

    • 21.

      Introdução aos loops

      4:16

    • 22.

      Loops para e enquanto

      10:01

    • 23.

      A declaração de pausa

      13:16

    • 24.

      Experimente declarações excepcionais

      7:11

    • 25.

      Declaração de continuação

      6:42

    • 26.

      Desafio de programação

      17:37

    • 27.

      Introdução da seção de funções

      1:01

    • 28.

      Definindo e chamando funções

      3:16

    • 29.

      Parâmetros e argumentos

      7:15

    • 30.

      Argumentos de palavra-chave

      4:27

    • 31.

      Variáveis locais e globais

      5:19

    • 32.

      Introdução à seção de estruturas de dados

      1:04

    • 33.

      Listas

      7:34

    • 34.

      Usando loops em uma lista

      2:57

    • 35.

      Dicionários

      7:57

    • 36.

      Dicionários aninhados

      4:53

    • 37.

      Conjuntos

      6:57

    • 38.

      Conjuntos e loops de desafio de programação

      5:52

    • 39.

      Dicionários e loops do desafio de programação

      12:31

    • 40.

      Projeto de sistema de autenticação

      4:22

    • 41.

      Etapa 1: crie a função de registro

      6:18

    • 42.

      Passo 2 - Crie a função de login

      7:04

    • 43.

      Etapa 3: criando o sistema de autenticação

      8:42

    • 44.

      Introdução à seção de manipulação de arquivos

      1:17

    • 45.

      Leitura e escrita em arquivos

      8:04

    • 46.

      Leitura e escrita de entradas em arquivos de texto

      7:54

    • 47.

      Métodos de leitura e escrita

      9:25

    • 48.

      Como lidar com erros de arquivos

      7:44

    • 49.

      Vários, exceto blocos

      3:33

    • 50.

      A declaração final

      5:03

    • 51.

      Introdução da seção de bibliotecas e módulos

      0:54

    • 52.

      Introdução às bibliotecas e módulos

      4:32

    • 53.

      Criando um módulo personalizado

      6:14

    • 54.

      Como fazer um wok com um módulo padrão

      3:36

    • 55.

      Geração de senhas com módulos aleatórios e string

      7:12

    • 56.

      O módulo datetime

      6:54

    • 57.

      Trabalhando com uma biblioteca externa

      8:48

    • 58.

      Introdução ao projeto da ferramenta de criptografia e descriptografia

      3:34

    • 59.

      Tarefa 1 crie a chave de criptografia

      6:11

    • 60.

      Tarefa 2: criando as funções de criptografia e descriptografia

      8:35

    • 61.

      Tarefa 3, adicionando a interface do usuário

      15:26

    • 62.

      Introdução à seção Oop

      1:08

    • 63.

      Introdução à POP

      4:52

    • 64.

      Criação de um curso básico

      12:56

    • 65.

      Criando um curso básico parte 2

      4:09

    • 66.

      Encapsulação (1080p)

      6:02

    • 67.

      Herança

      5:52

    • 68.

      Polimorfismo

      3:26

    • 69.

      Apresentação final do projeto

      4:48

    • 70.

      Parte 1: criando a interface do usuário

      4:39

    • 71.

      Parte 2, adicionando a função de registro do usuário

      4:28

    • 72.

      Parte 3, adicionando a função de login

      6:24

    • 73.

      Parte 4, adicionando a ferramenta verificador de força de senha

      12:20

    • 74.

      Parte 5, como criar hash nas senhas do usuário

      8:01

    • 75.

      Parte 6, adicionando a ferramenta de auditoria

      10:12

    • 76.

      Parte 7, adicionando a função de registros de visualização

      5:28

    • 77.

      Parte 8, adicionando o menu de login de postagem

      7:05

    • 78.

      Conclusão final do projeto

      1:44

    • 79.

      Conclusão do curso

      1:10

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

11

Estudantes

--

Sobre este curso

Python básico: o guia completo para iniciantes foi projetado para fornecer habilidades de programação em Python essenciais para o cenário de segurança atual. Adaptado especificamente para entusiastas e profissionais de segurança cibernética, este curso abordará você desde os conceitos básicos de Python até a criação de scripts que automatizam tarefas de segurança, manipulam dados confidenciais com segurança e interagem com os recursos do sistema de forma eficiente.

Para quem é este curso?

  • Estudantes que desejam desenvolver habilidades de Python para cargos de iniciante.

  • Analistas de segurança atuais que querem aprimorar seus kits de ferramentas com Python para automatizar tarefas.

  • Entusiastas de TI e segurança com pouco ou nenhum conhecimento de programação que querem começar a usar Python em um contexto de segurança.

Não é necessária nenhuma experiência anterior de programação — apenas vontade de aprender e explorar!

O que você aprenderá

Através de exercícios práticos, exemplos reais e aprendizagem baseada em projetos, você vai ganhar:

  • Fundamentos de Python: comece do zero com sintaxe, variáveis, tipos de dados, estruturas de controle e funções.

  • Manuseio de dados para segurança: gerencie e processe dados com listas, dicionários e recursos de manuseio de arquivos Python, essenciais para trabalhar com registros, endereços IP e credenciais. do site do Py

  • Gerenciamento e automação de arquivos: abra, leia e grave arquivos para automatizar tarefas repetitivas e simplificar o processamento de dados.

  • Práticas de programação seguras: aprenda a lidar com senhas com segurança, dados com hash e gerenciar informações confidenciais seguindo as melhores práticas de segurança.

  • Introdução à programação orientada a objetos: aprenda como as classes e objetos podem ajudar você a criar um código modular e reutilizável para aplicativos de segurança.

  • Aplicativos práticos de segurança cibernética: crie scripts para resolver tarefas relacionadas à segurança, como verificação de tentativas de login, filtragem de IPs suspeitos e trabalho com criptografia básica.

Destaques do curso

  • Projetos focados em segurança cibernética: aplique o que você aprende em projetos que simulam cenários de segurança do mundo real.

  • Orientação passo a passo: cada módulo se baseia no anterior, facilitando o acompanhamento, mesmo que você seja iniciante em programação.

  • Aprendizagem prática: ganhe experiência prática com laboratórios, exercícios e questionários para reforçar cada habilidade.

  • Programe com exemplos: siga exemplos com tema de segurança cibernética para aplicar Python de maneiras que façam sentido para as tarefas de segurança.

Por que Python para segurança cibernética?

Python é uma das linguagens mais versáteis em segurança cibernética, oferecendo flexibilidade, simplicidade e um ecossistema extenso de bibliotecas perfeito para análise de dados, automação e detecção de ameaças. Quer você esteja digitalizando logs, analisando o tráfego de rede ou criando ferramentas personalizadas, o Python pode capacitar você a trabalhar de forma mais eficaz e causar um impacto em sua função de segurança.

Inscreva-se no curso hoje!

Dê seu primeiro passo na programação em Python e comece a criar habilidades que apoiarão sua carreira de segurança cibernética. Ao final deste curso, você saberá usar o Python com confiança para automatizar tarefas, analisar dados e criar scripts focados na segurança.

Inscreva-se agora e prepare-se para aproveitar o poder do Python para segurança cibernética!

Conheça seu professor

Teacher Profile Image

Alexander O.

Web Developer & Cyber Security Expert

Professor


My passion is teaching people through online courses in a fun and entertaining manner.  I have been teaching online for about 3 years now and during this period, I have created over 25 different courses on different platforms including my own personal platform - The Web Monkey Academy.

What would you like to learn?

Would you like to learn how to build and manage your WordPress website? Would you like to learn advanced skills that will make you a true WordPress developer? Would you like to learn how you can establish a successful career as a web developer? Would you like to learn the basics of information and cyber security?

 If you want to do any of these things, just enroll in the course. I'm always improving my courses so that they stay up to dat... Visualizar o perfil completo

Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Promoção do curso: Você está interessado em cibersegurança e programação em Python Se a resposta for sim, você veio ao lugar certo. Oi, meu nome é Alex. Gostaria de dar as boas-vindas ao meu curso muito especial de programação em Python para segurança cibernética Agora, esse é um curso que eu criei especificamente para profissionais e entusiastas da segurança cibernética Quem gostaria de aprender sobre programação em Python, mas de uma forma que seja relevante para a Então, o que exatamente significa um curso de Python para segurança cibernética ? Quero dizer simplesmente que todo o código, programas e ferramentas que vamos criar juntos neste curso estarão relacionados à Agora, se você nunca escreveu a terra do código em sua vida antes, se você é completamente novo no mundo da programação, não se preocupe. Eu vou te ensinar todas as noções básicas de programação. E, claro, vou te ensinar os fundamentos do Python , como variáveis e tipos de dados, fluxo de controle e loops , funções, estruturas de dados , programação orientada a objetos, manipulação de arquivos e Ao longo do caminho, também criaremos juntos diferentes tipos de ferramentas de segurança cibernética, como uma ferramenta de verificação de força de senha, ferramenta auditoria e ferramenta de criptografia E, finalmente, para o projeto de classe, vamos construir juntos um sistema de registro de usuários. Também devo mencionar que este curso virá com muitos exercícios de codificação de questionários para testá-lo desafiá-lo e garantir que você esteja no caminho certo Então, se você deseja adicionar a habilidade de Python ao seu currículo, talvez esteja tentando obter uma promoção ou criar uma nova carreira, este curso de programação em Python para segurança cibernética será perfeito para segurança cibernética será perfeito Então, espero que você se inscreva no curso hoje e espero ver você nas cadeiras internas. 2. Introdução ao Python: Bem-vindo oficialmente aos conceitos básicos do Python para profissionais de segurança cibernética para Meu nome é Alex, e eu vou ser seu instrutor. Agora, o objetivo deste vídeo é dar as boas-vindas oficialmente ao curso e também dar algumas dicas sobre a melhor forma de realizá-lo Então, primeiro de tudo, do que trata exatamente esse curso? O que quero dizer com Python para segurança cibernética? Bem, todos os exemplos, os testes, os desafios, os exercícios de codificação, todos eles, bem, maioria deles serão adaptados relevantes de segurança cibernética Então, como exemplo, escreveremos um código sobre como criptografar senhas, hash senhas, criar contas de usuário, escanear portas e coisas assim Então, os tipos de projetos, ferramentas ou tarefas que você normalmente executaria em um ambiente real de cibersegurança, vamos usá-los neste curso E é por isso que é um curso de Python para cibersegurança. Então, se você é um profissional de segurança cibernética e quer aprender um pouco sobre Python que lhe permita criar alguns projetos ou ferramentas relevantes de segurança cibernética , este curso será perfeito para Também devo mencionar que, se você nunca escreveu uma linha de código em toda a sua vida antes, você está vindo aqui completamente cego. Não se preocupe, eu tenho tudo o que você precisa. Vou começar do básico e, gradualmente, vamos nos esforçando para escrever alguns programas mais sofisticados Portanto, o curso é dividido aproximadamente em cerca de dez seções diferentes. Isso pode mudar à medida que eu modifico o curso e talvez adicione ou remova conteúdo. Tudo depende. Mas vamos começar do começo, ok? O que é programação? Vamos escrever linhas de código muito simples. E então, ao final do curso, criaremos um sistema de autenticação muito poderoso e também um verificador de senhas muito, muito poderoso Esse será o projeto deste curso. E posso garantir que, se você se concentrar no curso, fizer todos os exercícios, os testes, posso garantir que, ao final deste curso, você terá o conhecimento necessário para poder escrever alguns programas muito bons relacionados à segurança cibernética Agora, quero mencionar uma coisa sobre programação em geral, especialmente se você nunca escreveu uma linha de código em toda a sua vida antes. Vai levar tempo, ok? Vai levar um tempo até que você se torne realmente proficiente e fluente no trabalho com uma Agora, o Python, em particular, é relativamente fácil quando comparado às outras linguagens de programação existentes. Mas até Python leva tempo, ok? Portanto, não fique frustrado se, no início, nas primeiras semanas, você ainda estiver lutando para escrever algumas linhas de código e estiver cometendo erros É simplesmente natural. Pense nisso como se você estivesse tentando aprender uma linguagem verbal real. Talvez você esteja tentando aprender a falar, sei lá, grego, finlandês, sueco ou qualquer outra coisa Você não vai simplesmente pegá-lo automaticamente e muito rapidamente, certo? Isso vai levar tempo. Pode levar vários meses , talvez até um ano. No começo, você poderá dizer coisas simples como Bom dia. Meu nome é Alex. Mas então, para construir uma frase completa real, vai começar a levar tempo, certo? Você terá que descobrir: Ok, nesse idioma, o adjetivo vem antes do pronome ou o substantivo vem antes do verbo, você sabe, todo esse verbo, você sabe, Isso leva tempo. Portanto, logo no início, você cometerá muitos erros. Pode ser frustrante, mas não desista, ok? Garanto que, se você se concentrar, praticará o máximo que puder. Você faz os testes e os desafios que eu forneci para você neste curso. Eu garanto que um dia, você vai acordar e de repente perceber que, espere um segundo, eu estou realmente ficando muito bom em programar com Python Então, ficar lá é apenas parte do processo. Toda a frustração no início é apenas parte do processo Espere aí, e eu prometo que você será recompensado. Agora, mais algumas coisas para mencionar rapidamente trabalharemos com uma plataforma específica aqui chamada replet. Não se preocupe, você não precisa pagar por ela É totalmente gratuito. Falarei sobre o weblte um pouco mais tarde nos próximos vídeos. Mas tenha isso em mente. Se você estiver trabalhando com um Mac, Linux ou Windows, poderá fazer este curso. Além disso, se você se deparar com algum desafio ou algo não estiver claro, você sempre pode entrar em contato comigo. Eu ficarei mais do que feliz em ajudá-lo de qualquer maneira que eu puder. Então, mais uma vez, bem-vindo ao Python Basics para Espero que você ache este curso muito informativo e muito útil E espero sinceramente que, ao final deste curso, você tenha aprendido a programar com Python Então, obrigado mais uma vez por se inscrever. E agora vamos começar. 3. Nota importante ao trabalhar com Python: Antes de começarmos o curso propriamente dito, há algo para o qual preciso chamar sua atenção. Isso é muito, muito importante. Quando se trata do aplicativo que usei para criar esse curso em particular, esse aplicativo estava repleto, ok? Replt é essa plataforma na qual você pode escrever e trabalhar com qualquer tipo de código de qualquer linguagem de programação E, claro, o Python funciona muito, muito bem no Então, inicialmente usei o replate para criar o curso. Então, ao longo deste curso, todo o código com o qual vou trabalhar será escrito na plataforma replet A razão pela qual escolhi p foi porque satisfez três critérios principais. Em primeiro lugar, o uso era gratuito. A segunda é que é muito fácil de usar. E então, em terceiro lugar, é uma plataforma muito poderosa que pode executar praticamente qualquer tipo de código. Infelizmente, nos últimos meses, eles fizeram algumas mudanças muito grandes na plataforma do usuário. E, especificamente, eles fizeram isso porque queriam incorporar a IA, o que é compreensível Claro, estamos vivendo na era da IA, e todas essas plataformas, você sabe, elas querem parecer muito modernas e, você sabe, a próxima melhor coisa e uma das maneiras de fazer isso é simplesmente incorporando a IA, o que é bom Mas o objetivo deste curso é ensinar a você os fundamentos e os fundamentos do Python Portanto, ainda não precisamos da ajuda da IA. A IA é fantástica quando você já aprendeu a trabalhar com Python E então, é claro, você pode usar a IA para ajudá-lo. Mas como estamos aprendendo Python pela primeira vez como iniciantes, isso não vai funcionar para Então, o que eu fiz foi mostrar duas outras alternativas para executar seu código Python em seu computador Agora, novamente, não se preocupe, como eu disse anteriormente, neste curso, todo o código que eu escrevo estará no plt, mas você escreverá seu próprio código no Thonny ou no Visual Studio É o código que importa, ok? A plataforma em que você está escrevendo o código não é a coisa mais importante, ok? Existem muitas outras plataformas por aí. O mais importante é o código. Então, em vez de plt, ok, vou mostrar como trabalhar com o Thonny, que na verdade seria minha opção recomendada para você , pois é extremamente fácil de instalar e usar Também é gratuito e está disponível para Mac, para Linux para Windows. Então, vou mostrar como instalar e depois trabalhar com o Thonny Agora, se por algum motivo, Thonny não funcionar para você, você não gosta do Thonny, vou lhe dar uma alternativa que, obviamente, será o Visual Studio Code , que é muito mais poderoso que o Thonny, mas também um pouco mais mas também Agora, só para que você saiba, para trabalhar com o Visual Studio Code, se você quiser seguir esse caminho, teremos que instalar o Python primeiro antes de podermos trabalhar com o Visual Studio Se você está trabalhando com o Thonny, não precisa instalar o Python Novamente, não se preocupe. Eu vou te explicar tudo, ok? Em primeiro lugar, no próximo vídeo, mostrarei como instalar e trabalhar com o Thonny E o próximo vídeo depois disso, será como você pode instalar e trabalhar com o Visual Studio Code. É claro que também mostrarei como baixar e instalar o Python no seu computador Então, peço desculpas por essa pequena confusão. Novamente, eu não tinha ideia quando criei esse curso inicialmente. Eu não tinha ideia de que, com muitas pessoas, vamos reformular completamente a interface do usuário Então, eu peço desculpas por isso. Mas espero que, ao lhe dar alternativas, duas alternativas diferentes compensem isso Então, se você tiver alguma dúvida ou preocupação, sinta-se à vontade para entrar em contato comigo. Ficarei mais do que feliz em ajudá-lo. Você pode usar a função de mensagens na plataforma em que está fazendo este curso ou também pode entrar em contato comigo em Alex em labsyba.com Esse é o meu e-mail. Você pode entrar em contato comigo e pedir ajuda ou fazer perguntas, compartilhar suas preocupações, qualquer coisa que queira saber ou precise de ajuda, mas ficará feliz em ajudá-lo. Então, obrigado por sua atenção a este assunto. E agora, deixe-me mostrar como baixar, instalar e trabalhar com o aplicativo Thonny 4. Como usar o atum: Então, deixe-me mostrar como instalar e usar o Thonny. É possivelmente a interface de usuário mais simples e perfeita, especialmente se você é novo no mundo do Python Então, tudo que você precisa fazer é acessar thorny.org, certo? E então, aqui mesmo, você pode baixar a versão para qualquer sistema aberto em que esteja trabalhando. Temos para Windows, temos para Mac, Linux. Portanto, verifique se você está instalando ou baixando a versão correta. Eu já baixei meu, então deixe-me vir aqui e eu vou abrir o aplicativo para rodar, certo? E eu vou dizer instalar somente para mim e depois clicar em Avançar. Eu aceito o contrato, clique em Avançar, clique em Avançar. Podemos criar um ícone na área de trabalho, clicar em Avançar, Instalar. Então aí está. E isso é simplesmente como instalar o Thonny no seu computador Agora, deixe-me mostrar exatamente como andar com esse aplicativo. É muito, muito, muito fácil. Vamos esperar que ele seja instalado. Ok, está instalado. Vou clicar em Concluir. E agora vou seguir em frente e executar o programa. E, certo, então eu estou no meu desktop. Esse é o atalho. Então, eu vou seguir em frente e dirigir Thonny. E aqui, é claro, você pode alterar o idioma, as configurações iniciais e assim por diante. Vou manter isso como está. Clique em Vamos. E aí está. Então, isso aqui é basicamente a interface do Thonny. Novamente, é muito, muito fácil. Agora, apenas como um exemplo muito rápido, deixe-me mostrar como isso funcionaria. Vou continuar, ok, digitar a impressão entre colchetes e, em seguida, um programa muito, muito simples, olá, mundo. Ok. E agora vou executar esse código específico clicando no botão Executar aqui ou você pode pressionar F cinco no teclado. Eu vou clicar lá. E aqui embaixo, você pode ver que essa é a saída do meu código. Assim, você pode, é claro, modificar a aparência da interface. Você pode arrastar a janela do shell um pouco mais alto se quiser. E você também pode vir aqui para ver as ferramentas. Ok, você pode ir para as opções. E então, se você quisesse, você poderia ir para o tema e a fonte, e você poderia mudar o tema, certo? Então, pessoalmente, eu sempre gosto de usar o tema sombrio. Mas é claro que é totalmente subjetivo. Se você preferir o tema claro, pode ficar com ele. Mas eu vou escolher o tema sombrio. E, claro, você também pode alterar o tamanho da fonte, a família da fonte do seu texto. Se preferir, você pode fazer isso aqui mesmo, e pronto. Então, se eu quiser salvar esse arquivo em particular , tudo o que preciso fazer é clicar no botão Salvar aqui. E então tudo que eu precisaria fazer é simplesmente digitar o nome desse arquivo, e eu chamarei isso de amostra, ok? E é isso. Então , ele vai salvá-lo automaticamente como um arquivo Python E deixe-me salvar isso na minha área de trabalho. E eu vou prosseguir agora, clique em Salvar. E aí está a amostra em PY, agora está o arquivo Python. E, claro, eu também poderia criar um novo arquivo simplesmente clicando no botão gravador que diz Novo. E aí, novamente, eu tenho uma nova janela para o novo código, e é mais ou menos isso. Portanto, é uma interface muito, muito simples para executar código Python Uma pergunta que você pode ter aqui é : é possível colocar a janela shell no lado direito da janela principal? Infelizmente, no momento em que eu gravei esse vídeo, não, não é possível. Então, eu diria que talvez seja a única desvantagem. Ok, mas na verdade não é grande coisa. Thonny, novamente, é extremamente fácil. Vou executar a grande maioria do código Python, e você não deve ter problemas trabalhar com esse aplicativo específico Então, é basicamente assim que se trabalha com o aplicativo Thonny Obrigado por assistir. Te vejo na próxima aula. 5. Como trabalhar com o código de visual estúdio: Mostre como você pode instalar o Visual Studio Code. Agora, o problema do Visual Studio Code é que, para trabalhar com ele, você realmente precisa instalar o Python primeiro no seu computador Então, primeiro, acesse python.org, e você pode acessar aqui para fazer o download e encontrar a versão para o Estou no Windows, então vou usar o Python E vou prosseguir agora mesmo e simplesmente salvar o aplicativo. Está instalado. Então, aqui, vou abri-lo e simplesmente instalá-lo. Agora, muito, muito importante, ok? Nesta primeira janela aqui, por favor, marque essas duas caixas, ok? Portanto, use privilégios de administrador ao instalar pi dot X. E, especialmente, o caminho add python.x2 Está bem? Você quer marcar essas duas caixas, e agora vou clicar em Instalar agora, clicar em S, e isso é praticamente tudo que você precisa fazer. Ao instalar o Python no seu computador. Vou apenas esperar que isso seja instalado. Não deve demorar muito, e aí está. Ok, então vou clicar em Fechar. E agora você pode acessar o código do Visual Studio em Visual studio.com Aqui, você encontrará as diferentes versões do Visual Studio Code. Temos para Windows, temos para Mac. E, claro, também temos para Linux. Agora, eu já baixei o aplicativo Visual Studio Code, então ele está aqui. Então, vou prosseguir agora e instalá-lo. Então, eu vou aceitar o acordo. Clique em Avançar e, claro, crie um ícone na área de trabalho. Vou marcar essa caixa, clicar em Avançar, clicar em Instalar. E aí está. Novamente, a instalação não deve demorar muito , normalmente apenas alguns segundos. E aí está, OK, então vou prosseguir agora, clicar em Concluir e, automaticamente, ele deve ser iniciado aqui. Ok, então isso pode ser a primeira coisa que você vê. Se você ver qualquer outra janela, acho que na maioria dos casos, é porque eu já instalei o Visual Studio Code antes. Normalmente, quando você o instala pela primeira vez, você deve ver uma janela de IA ou algo parecido. Apenas feche-o. Se você tiver qualquer outra janela aqui, basta clicar em Don ou Exito Window, certo? Isso é simplesmente o que estamos procurando. Estamos procurando, tipo, uma janela em branco aqui. Está bem? Esse é o ponto de partida. Então, a primeira coisa que você quer fazer é acessar suas extensões e instalar as extensões do Python que estarão aqui, Python Então, vou prosseguir agora, clique em Instalar. E aí está. Então, ele será instalado. Não deve demorar muito, apenas alguns segundos, e aí está. Portanto, ele foi instalado com sucesso. Novamente, vou prosseguir agora, fechar essa janela, certo? E agora, se eu quisesse executar um código Python, tudo o que eu quero fazer é ir até File Ok, eu posso clicar em Novo arquivo. E como acabamos de instalar a extensão Python, agora temos o link do arquivo Python Então eu vou clicar lá, e agora dar uma olhada, ok? Vou digitar uma impressão de código muito simples. Olá, mundo. Está bem? Agora vou prosseguir agora e clicar nesse botão para executar o arquivo. No entanto, como essa é a primeira vez que executamos esse arquivo, ainda não o salvamos. Precisamos salvá-lo antes de tudo, ok? Precisamos dar um nome a ele. Então eu vou chamar isso de simplesmente teste, ok? Teste, clique em Salvar. E agora você pode ver que é o ponto de teste PY. Ok, então aqui embaixo, certo? Este é o terminal e você pode ter algum tipo de mensagem de erro dizendo que, Oh, não podemos abrir esse arquivo, sabe, seja o que for. Está tudo bem. Basta voltar novamente e clicar no arquivo Run Python. E agora você pode ver que está realmente funcionando. Está funcionando. Aqui você pode ver hello world. Na verdade, deixe-me continuar, adicionar outra linha apenas para provar isso. Então, vou imprimir olá e vou dizer que gosto do VS code. Tudo bem, vamos em frente, execute o programa novamente. E agora aqui, você pode ver que diz olá, mundo, eu gosto do código VS. Então, aqui em cima, você terá sua janela principal onde escreverá seu código, sua interface de editor e, em seguida, aqui embaixo estará seu terminal. No entanto, podemos modificar a aparência da interface. Uma coisa que eu gosto de fazer normalmente, ok, seria ir até aqui, que possamos alternar a barra lateral principal Vou desativá-la, remover a barra lateral primária, remover a barra lateral primária, então agora temos a interface do usuário ocupando toda a janela No entanto, aqui embaixo no terminal, vou clicar com o botão direito do mouse e dizer mover para, e depois vou movê-lo para a barra lateral secundária. Essa é apenas minha preferência pessoal. Eu gostaria de ter o terminal à direita da minha janela principal, ok? No entanto, é claro, se você preferir colocá-lo abaixo da janela principal, tudo bem. Isso é totalmente subjetivo. Mas é assim que eu gosto. Então aí está. É assim que você pode executar seu código usando o VS Studio. Novamente, você terá opções aqui, se quiser. Você pode ir até Arquivo, criar um novo arquivo. Você pode abrir qualquer arquivo Python que você salvou. Você pode vir aqui para ver as preferências. Você pode acessar aqui os temas e, é claro, alterar o tema da cor. Você pode escolher Kimb dark ou, você sabe, mudar a aparência Depende inteiramente de você. Mas é assim que você pode trabalhar com o VS no aplicativo Visual Studio Code. É um pouco mais complicado do que Thonny, mas é claro que é mais poderoso Portanto, depende inteiramente de você, qualquer um desses dois aplicativos de sua preferência, você pode escolher aquele com o qual deseja trabalhar Então, obrigado por assistir, e nos vemos na próxima aula. 6. Hello World: Ok, agora que temos o Thonny pronto, ou talvez você esteja usando o Visual Studio Code . Isso não importa. É hora de escrevermos nosso primeiro programa. E esse programa será um programa muito simples que imprimirá as palavras hello world. Tudo bem? Então veja isso, ok? Eu vou dizer impressão, espaço e depois colchetes entre aspas duplas Olá, mundo. Ok. E então eu vou clicar no botão Executar. E aí está o Hello World. Muito, muito primeiro programa com Python. Agora, eu quero explicar isso para você. Veja, em Python ou, na verdade, em qualquer linguagem de programação, você sempre terá funções embutidas que farão algo Nesse caso, print é uma função embutida que já foi codificada em Python Então, quando você usa essa função print, o Python sabe que, oh, ok, você quer gerar algo, Então é isso que o Print faz. E agora, sempre que quiser imprimir texto, você sempre precisará colocá-lo entre aspas duplas Bem, na verdade, há certos momentos em que você pode não precisar necessariamente de aspas duplas. Vamos chegar a isso. Não se preocupe Mas, na maioria dos casos, para garantir a segurança, você deve colocar o texto entre aspas duplas Agora, se eu removesse as aspas e executasse o programa, agora você vê que acabamos tendo um problema É um erro de sintaxe porque, no momento, Python não entende o que está acontecendo Onde estão as aspas duplas? Além disso, você precisa ter seu texto entre colchetes. Então, se eu fosse adicionar as aspas duplas aqui, sem os colchetes, vamos tentar executar o programa novamente e ver o que E então, novamente, você pode ver agora ainda está dizendo que está faltando o parêntese Portanto, quando se trata de executar certos tipos de funções, há certas regras que você deve seguir. Portanto, no caso de imprimir texto, você deve tê-los parênteses e entre aspas duplas Então, mais uma vez, vou executar o programa, e aí está. Hello world está funcionando. Vou prosseguir agora mesmo e fechar o assistente. E aí está. Ok. Vamos seguir em frente. Vamos tornar isso um pouco mais interessante. E se eu quisesse imprimir hello world, digamos, cinco vezes, certo? Agora, obviamente, eu poderia simplesmente copiar, ok? Nova linha de texto, cole, cole, cole, cinco vezes, ok? Agora, se eu estivesse no programa, aí está. Olá mundo, olá mundo, olá mundo, olá mundo, olá mundo. Mas veja isso. Em vez disso, deixe-me tentar imprimir duas vezes. E em vez de tê-los em linhas diferentes, deixe-me colocá-los exatamente na mesma linha. Então, imprimimos Hello World, imprimimos Hello World, executamos e agora temos um problema. O problema que temos aqui é que, Ei, o que está acontecendo? O Python não entende quando você tem várias funções exatamente na mesma linha E isso é meio que universal com todas as linguagens de programação, ok? Sempre que você estiver chamando várias funções, você quer tê-las em linhas separadas. Essa é a maneira ideal de escrever código. Porque se eu pensar bem, tudo bem, se você iniciar ou se o programa permitir, a linguagem permitirá que você execute várias funções exatamente nas mesmas linhas e tudo mais. Seu código pode acabar se tornando muito, muito difícil de ler, especialmente por outros desenvolvedores. Então, quando você o coloca em linhas separadas, ele fica mais limpo, mais apresentável E o melhor de tudo, sua linguagem de programação, nesse caso, Python, entenderá o que eles estão tentando fazer Ok, há outra coisa que você precisa estar ciente. Agora, vou tornar isso um pouco complicado. O que vou fazer aqui é criar algo conhecido como variável, ok? Nesse caso, vou chamar minha variável de texto. Igual. E agora, neste caso, olá mundo. Portanto, o texto é uma variável. Uma variável. Você pode pensar em uma variável basicamente como algo que armazenará um determinado tipo de valor, ok? Nem sempre precisa ser texto, podem ser números. Pode ser qualquer coisa. Nesse caso, agora, é um texto. É um pedaço de texto que diz “Olá, mundo”. Portanto, o texto da variável tem o valor hello world. Agora, se eu viesse aqui e dissesse, imprima entre parênteses, texto O que você acha que vai acontecer? Bem, vai dizer olá mundo, porque atribuímos à variável texto um valor de olá mundo. Mas observe que não o tínhamos entre aspas duplas. Isso porque estamos dizendo ao Python que, Ei, Python, queremos que você imprima o valor da Se eu viesse aqui e atribuísse as aspas duplas ao texto, o que você acha que vai imprimir Bem, ele vai imprimir o texto. Está bem? Portanto, sempre que quiser imprimir os valores de suas variáveis, você não precisa encapsular a variável entre aspas duplas Então, vou seguir em frente. Agora, remova as aspas, execute o programa novamente e deixe para lá Hello world Então, obviamente, vamos nos aprofundar muito mais nessas funções e variáveis e coisas assim Mas eu só queria te dar um pequeno trecho do que esperar e, é claro, permitir que você escreva seu primeiro programa usando Python Então, à medida que avançamos no curso, você começará a aprender um pouco mais sobre as regras da programação em Python, quando você deve encapsular seu texto em aspas duplas, quando você deve usar aspas quando você deve usar Vamos nos aprofundar muito, muito mais. Mas isso é tudo por escrever nosso primeiro programa. Obrigado por assistir. Te vejo na próxima aula. 7. Introdução à seção de tipos de dados: Bem-vindo oficialmente à primeira seção principal do próprio curso de Python E aqui, vamos falar sobre variáveis e tipos de dados. Ouça, garanto que independentemente da linguagem de programação que você esteja tentando aprender, essa normalmente será a primeira seção, porque no cerne de cada programa, não importa o quão básico ou avançado seja, ele girará em torno de alguns dados, sejam sequências de caracteres ou números inteiros, você terá dados envolvidos em Então, nesta seção, falaremos sobre os diferentes tipos de dados disponíveis. Também falaremos sobre as operações de bullying. Então, digamos, por exemplo, que você queira dizer que algo não é verdadeiro ou falso, coisas assim. E então, é claro, os operadores aritméticos, ok? Como você soma, subtrai, multiplica, vídeo em Python, matemática básica, vamos aprender tudo Então, é claro, no final da seção, haverá um exercício de codificação que eu quero que você tente Dê isso a todos. Não se preocupe. Se você não conseguir resolvê-lo, eu também fornecerei a solução. Parabéns. Estamos prestes a começar nossa jornada no mundo do Python. Vamos começar. 8. Trabalhando com cordas: Bem, bem-vindo de volta. Agora, vamos passar um pouco mais de tempo falando sobre cordas. Até agora, trabalhamos com a string hello world, e eu disse que sempre que você está quebrando o texto, normalmente você quer usar aspas duplas No entanto, isso nem sempre é verdade. O padrão é colocar o texto entre aspas duplas No entanto, você pode realmente escapar usando aspas simples Então, deixe-me ir até aqui agora e editar isso. Estou usando aspas simples. Eu pressiono Executar e você pode ver que funciona perfeitamente bem. Portanto, você nem sempre precisa usar aspas duplas. A pergunta natural que você pode ter aqui é: Ok, então quando usamos single? Quando usamos o dobro? Isso realmente importa? Na maioria dos casos, tudo se resume à sua preferência pessoal, se você é um usuário de cotação única ou um usuário de cotação dupla Por padrão, a maioria dos programadores costuma usar aspas duplas E há casos em que você pode até mesmo usar os dois na mesma string. Por exemplo, e se eu quisesse dizer algo como ele disse, olá, certo? Então, deixe-me ir até aqui agora e dizer que ele disse Kremer E eu vou dizer olá. Como poderíamos imprimir isso com sucesso? Porque se clicarmos em Executar agora, isso nos dará uma mensagem de erro, ok? Precisamos colocar esses textos, essas letras entre aspas Mas como vamos fazer isso? Bem, nós poderíamos fazer isso. Eu poderia ir até aqui agora adicionar um único arco de citação Oh, desculpe, tem que estar lá dentro. Então, o arco de aspas simples primeiro, ok? E agora, para as palavras reais em que ele disse olá, vou usar as aspas duplas aqui para encapsular a palavra exata olá em si E então, na verdade, isso é muito comum em linguagens de programação, ok? Sempre que você tiver uma aspa de abertura, desejará ter uma aspa de fechamento Então, vou adicionar as aspas simples ali mesmo E agora, se eu clicar em Executar, você pode ver agora que ele realmente funciona. Poderíamos fazer exatamente o oposto. Eu poderia começar com aspas duplas, ok? E então eu vou vir aqui agora, tocar olá nas aspas simples e depois nas aspas duplas de fechamento, corra e você verá que funciona perfeitamente bem No entanto, e se eu quisesse cordas muito longas, certo? Então eu tenho meu Ipsum generto aqui. Então, deixe-me pegar esse primeiro parágrafo aqui, ok? Copie, venha aqui. Agora, eu poderia colocar tudo do tamanho máximo dentro da aspa dupla, clicar em Executar e tudo funcionará perfeitamente bem Mas e se eu realmente quisesse criar algum espaço, e então, por exemplo, eu quisesse ter algum espaço aqui. Eu venho aqui agora e adiciono um pouco de espaço, certo? Agora está tudo meio desorganizado. Eu clico em Executar e agora vamos ter uma mensagem de seta. Não está mais funcionando porque o Python não consegue entender o espaço entre as linhas do texto Então é aqui que as aspas triplas entrarão. Então veja isso, ok. Vou adicionar um, dois, três. Ok. Opa, desculpe por isso. Isso é três. Ok. E, claro, eu vou vir aqui agora e adicionar as três aspas finais E agora, se eu clicar em Executar, e aí está, você pode ver que realmente funciona. Portanto, há alguns casos em que você pode querer usar aspas triplas se tiver um tipo de espaçamento muito específico Também é normalmente usado para, por exemplo, documentação, escrever linhas de código, coisas assim. É aí que você usaria a cotação tripla. Agora, também podemos combinar cordas. Tudo bem Então, como exemplo, deixe-me mostrar rapidamente, deixe-me criar uma nova variável aqui e dizer X, ok? É igual e, em seguida, entre aspas duplas, vou dizer olá. Está bem? E então eu poderia criar uma segunda variável Y é igual a mundo. Ok. E agora, se eu quisesse combinar os dois, eu poderia dizer imprimir entre parênteses, muito simplesmente, X mais Y. Agora, se eu clicar em Executar, aí Olá, mundo. Mas se quisermos adicionar o espaço entre hello e world, tudo o que posso fazer é adicionar o espaço em Hello aqui. Então eu adicionei o espaço após o O, clique em Executar. Você tem Hello World, ou eu poderia fazer o oposto e simplesmente adicionar um espaço no início de W, clicar em Executar e pronto, você terá exatamente o mesmo resultado. Agora, vamos tornar isso um pouco mais sofisticado. Este programa é um pouco mais sofisticado. Vou apresentar a vocês uma nova função chamada input. Até agora, temos trabalhado com impressão. Agora, deixe-me apresentar sua opinião. Então, a entrada é basicamente uma função que pedirá ao usuário que forneça algo, ok? Então, eu vou dizer entrada. E então, entre parênteses, vou dizer alguma coisa, por favor. Ok. Então, se eu correr, oh, desculpe por isso. Se eu executar o comando, você pode dizer agora mesmo, diga alguma coisa, por favor, e agora se eu disser: Oi, meu nome é Alex e eu pressiono Enter, nada acontece, ok? Porque nosso programa, tudo o que ele faz é pedir ao usuário que diga alguma coisa, e pronto. Não fará nada com o que o usuário realmente disse. Então, para tornar isso um pouco mais avançado, vou voltar aqui. Ok. Vamos remover isso, vamos criar uma nova variável. Eu direi a resposta do usuário. Esse será o nome da minha variável. E, a propósito, deixe-me dizer algo bem rápido. É boa etiqueta, boa etiqueta de programação. Sempre que você está criando nomes para suas variáveis ou funções e está combinando duas palavras, neste caso, agora, estou combinando usuário e resposta. A segunda palavra, a primeira letra, normalmente deve estar em letras maiúsculas. É por isso que o R para resposta aqui está em maiúsculas. Só estou dizendo, ok? Então, tenha isso em mente. Então use uma resposta igual, ok? E eu vou dizer entrada. E agora, entre colchetes, vou dizer algo, por favor Está bem? No entanto, eu vou descer até aqui. Agora vou usar a função de impressão entre colchetes, vou dizer a resposta do usuário. É isso mesmo. Muito simples. Vou prosseguir agora mesmo, executar o comando. Diz, diga alguma coisa, por favor, então eu vou dizer, meu nome é Alex. Pressione Enter e pronto. Agora está dizendo que meu nome é Alex. Então, apresentei com sucesso uma nova função, que são entradas que solicitarão ao usuário que forneça algo Falamos sobre como usar o máximo de aspas simples, o máximo de aspas duplas e as aspas triplas Também mostrei como podemos realmente combinar cadeias de caracteres criando várias variáveis e simplesmente usando o operador de adição para combiná-las. Então, gradualmente, estamos ficando cada vez melhores em trabalhar com Python e Então, obrigado por assistir ao vídeo e, claro, nos vemos na próxima aula. 9. Outros tipos de variáveis: Vamos agora dar uma olhada em uma forma diferente de tipo de dados. Até agora, temos trabalhado com cordas, certo? Mas agora vamos dar uma olhada em pontos flutuantes e números inteiros, também conhecidos simplesmente como números. Tudo bem. Então, vamos remover esse programa e, primeiro, criar uma variável X igual a quatro. Está bem? E então Y é igual a, digamos, 6,0 Agora, a diferença óbvia entre esses dois é que X não tem nenhum ponto decimal Por que Y tem o 6.0? Tudo bem? Na verdade, deixe-me tornar isso um pouco mais razoável. Vamos fazer com que seja 6.3, só como exemplo, certo? Então y, nesse caso, seria um ponto flutuante porque tem um ponto decimal, enquanto quatro será o número inteiro Então, se eu continuasse agora, imprimisse X mais Y e executasse meu programa. Você pode ver que vamos obter o número 10.3. Muito simples, certo. No entanto, poderíamos fazer certas coisas como , por exemplo, se você quisesse converter 10,3 como um número flutuante, se quisesse convertê-lo em um inteiro, poderíamos simplesmente usar uma nova função chamada função inteira Então, o que vou fazer aqui é dentro desse primeiro colchete, vou abrir outro colchete e adicionar INT Tudo bem, então, desculpe. Desculpe por isso. SE NÃO. Ok, então INT aqui é uma função que significa inteiro, certo? E, claro, como abrimos a função inteira, teremos que fechá-la também Então, deixe-me adicionar o colchete de fechamento. E agora, se eu fosse executar meu programa, você pode ver que ele converteu 10,3 em dez por causa da função INT integer Essa foi a primeira vez que adicionamos uma função dentro de outra função. Primeiro, temos a função de impressão e, em seguida, dentro da função de impressão, temos a função inteira Portanto, isso é algo que você deve estar ciente quando se trata de programação em Python Você pode ter uma função dentro de outra função e, na verdade, pode ter três, quatro funções em vez de uma outra, desde que a hierarquia esteja correta Nesse caso, no momento, não posso fazer com que a função inteira entre primeiro e depois imprima. Na verdade, você sabe o que? Vamos tentar, ok? Por que não? Eu vou seguir em frente agora mesmo. Imprima, ok? E então INT, ok, o que vai acontecer? O que vai acontecer? Vou clicar em Executar. E aí está. Então, apesar de meio que bem, não funcionou de verdade. Quer dizer, obtivemos o X mais Y. A resposta correta foi 10,3 Mas, infelizmente, ele não converteu os resultados em um número inteiro real Então, o Python basicamente ignorou a primeira parte, que é a função inteira e depois disse: Ok, imprima X mais Y. E então, é claro, ele nos disse que, Ei, há algum tipo de problema Portanto, tenha cuidado sempre que estiver tentando adicionar funções dentro de outra função, preciso haver uma hierarquia e ela precisa estar correta Então, vamos reverter essa corrida novamente, e aí está. Da mesma forma, se eu quisesse converter os resultados em um número flutuante, também poderia fazer isso. Então, por exemplo, certo, se eu mudar o Y aqui para, digamos, cinco, certo? Mas em vez de nove, que seria a resposta óbvia aqui, eu queria que fosse 9.0 Vou mudar a função inteira aqui para flutuar. Então isso é o oposto, certo? Então confira isso. Vou clicar em Executar, e aí está. Agora é 9.0. Você sabe, há uma boa chance de você não precisar usar a função inteira ou flutuante em seus programas Tudo depende do tipo de programa que você criará. No entanto, é importante entender esses conceitos que você pode adicionar. Você pode converter um tipo de dados em outro e também pode ter uma função dentro da outra. Então, obrigado por assistir. Te vejo na próxima aula. 10. Operadores booleanos atualizados: Outro tipo de dados que você deve conhecer são as operações Bian ou os valores booleanos Normalmente, serão dois deles. Você tem o verdadeiro ou o falso, e isso dependerá do resultado de certos tipos de operações. Agora, como exemplo, aqui, eu tenho a variável X igual a cinco, a variável Y é igual a Agora, eu tenho minha primeira função de impressão aqui que diz que X é igual a Y. A segunda é X é menor que Y. Então, com bollans, você tem verdadeiro ou falso Agora, qual você acha que seria a resposta para a primeira impressão? Bem, a resposta obviamente seria falsa porque cinco não é igual a dez, enquanto a segunda deveria ser verdadeira porque X é, na verdade, menor que Y. Então agora, se eu prosseguir e executar este programa, agora você pode ver que temos falso e verdadeiro Esses são tudo o que chamamos de valores de Bollan ou operadores de Bollan, e normalmente os usamos sempre que estamos tentando criar loops ou Não se preocupe Falaremos sobre eles na próxima seção. Mas, normalmente, podemos querer escrever um programa que verifique se algo aconteceu e, em seguida, se aconteceu, ou seja, se for verdade, faça alguma coisa. Ou também podemos dizer que, se isso não aconteceu, portanto, se for falso, faça outra coisa. Então, usaremos operadores e valores bullan um pouco mais tarde, mas o problema dos valores e mas o problema operações booleanos é que eles funcionam com operadores de comparação, como se você fosse igual a menos que é igual a, Mas também temos o que chamamos de operadores lógicos. Os operadores lógicos seriam coisas como N ou não. Então, como exemplo, deixe-me dar outro programa aqui. Deixe-me, em primeiro lugar, dizer que A é igual a verdadeiro. Está bem? E então B é igual a falso. A propósito, observe que o verdadeiro e o falso aqui não são strings. E elas não são strings porque você pode ver que com verdadeiro, começa com T maiúsculo e com falso começa com F maiúsculo. Então, o Python sabe automaticamente que, OK, você está lidando com Então, se eu quisesse escrever uma função de impressão aqui que diz algo como, digamos, A e B, deixe-me escrever outra, imprima. Digamos A ou B e, na última impressão , direi que não A. Quais você acha que serão as respostas para as três? Normalmente, sempre que você estiver lidando com os operadores lógicos e comparando dois ou mais valores, todos eles precisarão ser verdadeiros sempre que você estiver usando a instrução e. Se uma delas for falsa, a resposta será falsa, ok? O oposto é com. Então, se você está dizendo verdadeiro ou falso, vai ser verdade. É verdadeiro e falso, a resposta será falsa. E então, obviamente, para o último aqui, nenhum A será falso porque nenhum A significa que o oposto do verdadeiro oposto do verdadeiro é falso. Então, se eu executar o programa agora, você verá mais uma vez que A e B verdadeiro e falso sempre serão falsos, enquanto verdadeiro ou falso serão verdadeiros enquanto nem A será falso. Então, mais uma vez, os operadores e valores de Bollin também funcionam com operadores lógicos, como o seu ou não E, é claro, seus operadores de comparação, como seu igual a, não são iguais a menor que, maior que e assim por diante Então, vamos trabalhar com operadores booleanos medida que progredimos no curso. Obrigado por assistir. Te vejo na próxima aula. 11. Operadores aritméticos atualizados: Vamos falar sobre mais alguns operadores e começar com as operações aritméticas E isso é apenas, você sabe, a matemática ou matemática básica que aprendemos quando éramos crianças, certo? Então você tem, você sabe, um vezes um, dois, dois, três, mais um, dez, menos sete, esse tipo de coisa, certo? Então, o que eu fiz aqui foi atribuir o valor de dez à variável A e o valor de três à variável B. E eu escrevi várias operações aritméticas Temos A mais B, A menos B, A vezes B, A dividido por B, A, módulo B, que simplesmente retornará o restante quando dividirmos A por B, e então o último aqui será um B exponencial, que aumentará o valor de A pela potência de B. Então, quais serão os resultados aqui? Deixe-me executar o programa e, claro, dez mais três é 13, dez menos três é sete, dez vezes três é 30, dez vezes três é 30, 10/3 será 3,33 33 e, em seguida, dez perda de modelo três será E, claro, dez vezes dez vezes dez será igual a 8.000, certo? Ok, então eu espero que você obviamente soubesse as respostas para todas essas operações. Mas vamos mais longe. Vou remover isso, ok? E eu tenho mais algumas operações aqui. E o primeiro aqui é o que chamamos de operador de atribuição. Você pode ver isso aí mesmo, diz, mais iguais, certo? Deixe-me adicionar essas novas linhas, e pronto. Ok, então temos mais iguais. O que isso significa simplesmente é que vamos dizer que X é igual a X mais cinco É basicamente a mesma coisa. Então X mais é igual a cinco é exatamente a mesma coisa que dizer X é igual a X Esta é apenas uma forma curta de escrever isso. Então, deixe-me ir em frente e remover isso. Então, qual você acha que seria a resposta aqui? A resposta, obviamente, aqui será 15 porque dez mais cinco é igual Agora, você pode fazer o oposto, ok? Você pode dizer menos e depois é igual. A resposta aqui obviamente seria cinco porque dez menos cinco será cinco E você tem outros, é claro, como a multiplicação, que nos dará 50 E então também temos a divisão, que nos dará dois, dois pontos oh. Então, esses são o que chamamos de operadores de atribuição. Agora, quero chamar sua atenção para mais uma coisa, e isso é o que chamamos de precedência do operador Deixe-me primeiro remover o código e arrastá-lo para o topo e imprimir em uma nova linha. Deixe-me copiar esse comando e vir aqui e depois imprimir. Tudo bem, então dê uma olhada nisso. Ok, temos duas expressões diferentes, certo? O primeiro aqui diz: dois mais três vezes quatro. Bem, o segundo aqui é que temos um colchete dois mais três e depois vezes quatro Quais você acha que serão os resultados de ambas as expressões? Novamente, isso pode lembrá-lo da matemática que você fazia no jardim de infância ou na escola primária Mas eu sempre acho essa coisa bastante fascinante porque aqui, vamos obter dois resultados diferentes. Assim, você pode pausar o vídeo e tentar adivinhar quais seriam os resultados das duas expressões Se você tiver seus resultados, vamos prosseguir agora mesmo e correr. E o primeiro aqui será 14 enquanto o segundo será 20, por quê? Porque na primeira expressão aqui, temos dois operadores. Temos o operador aritmético positivo e, em seguida, temos O Python fará a multiplicação primeiro antes Então, três vezes quatro vai ser 12, 12 mais dois, vai ser igual a 14. No entanto, aqui na segunda expressão, ele realmente fará a adição primeiro porque eles estão dentro dos colchetes É por isso. Então, a menos que eu esteja enganado, normalmente, você terá que o parêntese estará no topo dos precedentes Se você não tiver o parêntese, ele verificará a exponenciação Se não houver nenhuma exponenciação, ela irá para a multiplicação, ela irá Irei para módulos, adição e, finalmente, subtração E então, em uma expressão muito complexa, se você tiver operadores de comparação, eles virão em seguida e, finalmente, operadores lógicos. Mas não há necessidade de ir mais longe do que isso. aqui, simplesmente temos dois operadores principais. Nós temos três. Temos o parêntese, que obviamente terá precedência sobre Então, dois mais três é cinco, cinco multiplicado por quatro é igual Então, mais uma vez, isso é o que chamamos precedência do operador Novamente, para ser honesto, não vamos realmente trabalhar com eles neste curso, mas, no entanto, isso é algo que você deve conhecer. Obrigado por assistir. Te vejo na próxima aula. 12. Introdução à seção de cordas: Bem-vindo à próxima seção onde agora vamos nos concentrar especificamente no tipo de dados de strings Eu sei que já falamos sobre cordas. No entanto, precisamos nos aprofundar ainda mais nesse tópico específico e por quê? Bem, isso porque, na grande maioria das vezes o tipo de dados com o qual você trabalhará serão cadeias Sim, você trabalhará com números inteiros e outros tipos de dados, mas as cadeias de caracteres normalmente serão cerca de 80 a 90% dos tipos de dados com os quais você trabalha Então, nesta seção, vamos nos aprofundar muito mais. Eu vou te mostrar como você pode manipular cordas. Então, digamos, por exemplo, que você tenha dois pedaços de corda, queira extrair certas letras da corda. Você quer extrair letras dessa outra sequência, juntá-las, coisas assim. Você aprenderá a fazer essas coisas. Você aprenderá como converter sequências inteiras em maiúsculas ou minúsculas, como cortá-las e fazer muitas outras Então eu acredito que você vai gostar desta seção. Além disso, assim como na primeira seção, no final desta seção, também haverá um exercício de codificação Então, por favor, tente o exercício de codificação. Espero que você consiga fazer isso com sucesso. Mas se você não puder, também fornecerei a solução para que você possa comparar seu código com o meu código. Então, sem perder mais tempo, vamos começar. 13. Manipulação básica de cordas: Já está familiarizado com as diferentes formas de imprimir suas variáveis de string. O que eu tenho na minha tela aqui criei a variável nome de usuário e atribuí o valor de cyber como uma string a ela, e então eu simplesmente disse imprimir nome de usuário. Obviamente, isso resultou na impressão cibernética de forma muito, muito simples, muito básica. E agora, da linha quatro, atribuí exatamente o mesmo valor cyber à variável nome de usuário. Mas observe que nas linhas cinco e seis, demonstro duas maneiras diferentes de imprimir a variável. Eu poderia ter dito: bem-vindo ao mundo da programação e depois vírgula e depois o nome da variável, que é, obviamente, nome de usuário, cibernético, e a saída é bem-vinda ao mundo da programação, cibernética E então, na linha seis, em vez de usar o sinal de vírgula, eu uso o símbolo de adição, e isso basicamente é o que chamamos concatenação sempre que você usa o símbolo de adição, e então você tem exatamente a No entanto, observe que há uma pequena diferença no espaçamento. Com o símbolo de vírgula, você tende a ter um pouco mais de espaçamento entre a string e o nome real da variável No entanto, os dois métodos funcionam muito bem. É tudo uma questão de escolha. No entanto, deixe-me mostrar algumas outras maneiras básicas de manipular sua string Então, digamos, por exemplo, que eu quisesse imprimir de forma cibernética dez vezes, certo? Em vez de criar usando o nome cibernético, usando o nome cibernético, usando o nome cibernético dez vezes, o que eu poderia simplesmente fazer aqui é adicionar o símbolo astérico e depois dizer vezes dez E então tudo que eu tenho que fazer agora é simplesmente imprimir o nome do usuário. Agora, se eu executar o programa, você pode ver que temos cyber cyber cyber cyber cyber dez vezes. E se eu quiser um espaço entre minhas palavras, posso simplesmente adicionar um espaço entre a letra R e o código de fechamento. E se eu executar o programa novamente, então você vai, temos o cyber cyber cyber. Então isso é o que chamamos de repetição, certo? Outra função que eu queria que você soubesse sobre strings é o comprimento de uma string Podemos determinar o comprimento de uma string. Basicamente, em outras palavras, podemos determinar o número de caracteres em uma string. Então, por exemplo, aqui, se eu quisesse descobrir quantos personagens estavam no mundo cibernético, tudo que eu tenho que fazer é vir até aqui. Depois da função de impressão, posso introduzir outra função chamada função comprimento, que é, de comprimento, que é, obviamente, LN, e então terei que adicionar meu fechamento e dividi-lo por ali. E agora, se eu executar o programa, você consegue adivinhar qual será o valor? O valor será cinco porque cyber é composto por cinco caracteres e cinco letras. Agora, você pode estar se perguntando: Ok, tudo isso é bom, mas como isso é relevante? Como aplicamos isso especificamente no mundo da segurança cibernética Tenho certeza de que você já deve ter visto em sites anteriores onde eles solicitam que você faça login. Você começa a digitar sua senha, mas não vê os caracteres reais. Em vez disso, você pode ver o símbolo do traço ou mais comumente, o símbolo astérico em seu Podemos usar o conhecimento que adquirimos até agora para realmente criar um cenário semelhante. Então veja isso, ok? Vou criar uma nova variável agora e chamá-la de senha. E agora vamos adicionar a senha real. Vou dizer peixe-espada, que não é exatamente a melhor senha, mas não importa Nós vamos usar peixe-espada. Então, agora eu quero imprimir sordfsh, então eu posso simplesmente dizer imprimir uma senha Então, se eu executar o programa, ele dirá que é sordfish, mas queremos substituir cada letra em sordfish Então, basicamente, devemos ter nove símbolos astéricos no lugar das próprias letras Então, o que fazemos? Posso criar outra variável agora e chamá-la de senha de sublinhado mascarada E agora isso será igual a quê? Vou adicionar meus códigos e agora adicionar o símbolo astérico. Está bem? O símbolo astérico, e agora multiplique-o novamente pelo comprimento dos caracteres da nossa string de senha E aí está. Então, agora, se eu executar o programa, isso não funcionou. Oh, me perdoe. Para a senha de impressão, precisamos alterar a linha três aqui para mascarar a senha porque não estamos mais imprimindo a senha. Opa. Isso foi um pouco embaraçoso. Ok, então vamos imprimir a senha mascarada agora, e se eu executar o programa, aí está Ok, agora temos nove símbolos estáticos porque o próprio SetFish é composto por nove letras E só para provar que isso realmente funciona, se eu adicionar mais três caracteres, dígitos, neste caso 123, e executá-lo novamente, agora você pode ver que o número de símbolos estáticos aumentou Em vez de nove, agora são 12. Então, é assim que você pode recriar algo muito semelhante em seu programa do mundo real Se você quiser criar um sistema de senha mascarada, pode usar esse tipo de conceito Então, obrigado por assistir ao vídeo. Te vejo na próxima aula. 14. Indexação e fatiamento de cordas: Bem, bem-vindo de volta. Agora, vamos falar sobre alguns conceitos muito importantes quando se trata de lidar com cordas. Nós temos o conceito de indexação. Agora, não se preocupe, falaremos sobre indexação muito mais tarde Mas agora deixe-me dar uma breve introdução, certo? Digamos, por exemplo, que aqui eu tenha meu texto, que é igual à cibersegurança Agora, e se quiséssemos especificamente, por um motivo ou outro, extrair a primeira letra da palavra cibersegurança A primeira letra aqui seria C, certo? Então, eu poderia fazer algo como dizer primeiro e depois sublinhar o caractere igual ao texto, e agora vou usar E agora eu preciso indicar a posição do índice da letra que eu quero atingir. Agora, em cibersegurança, C é a primeira letra. Então, qual você acha que meu número de índice aqui será? Não, não é um, vai ser zero Lembre-se de que na programação em geral, não apenas em Python, mas na programação geral, sua indexação começa do zero e não de Então, se eu agora quisesse imprimir o conteúdo da minha variável chamada primeiro caractere, a resposta aqui seria C. Da mesma forma, se eu mudar isso para um, agora será Y. Então, isso aqui é indexação, e vamos trabalhar com ela ao longo deste Agora, o segundo conceito aqui será o conceito de sl sin. O glacê nos permite pegar uma parte da corda. Agora, a cibersegurança é uma sequência bem longa. E se quiséssemos atingir apenas os primeiros cinco personagens, que seria cibernético? Como faríamos isso? Bem, aqui, posso adicionar minha posição no índice para o primeiro caractere que será zero. E então, onde eu quero parar? Cinco. Isso aqui é o que chamamos de fatiamento. O primeiro número aqui representa de onde queremos começar o corte. Nesse caso, neste momento, adicionei zero porque queria começar da primeira letra. E então, quantos personagens queremos? Queremos os cinco personagens. Então, agora, se eu executar o programa , será Chi Burr. Agora, e se quiséssemos extrair apenas T seguro, certo? Não queremos marcá-lo como cibernético. Queremos marcá-lo apenas como segurança. Uma coisa que eu poderia fazer aqui é decidir simplesmente usar o número de índice S, que será zero, um, dois, três, quatro, cinco. Está bem? Pode ser cinco. E agora eu adiciono meu cólon. Eu poderia indicar quantas letras eu quero que a fatia contenha No entanto, se eu não indicar um valor aqui, Python automaticamente usará como padrão o final da string Então, agora, se eu executar o programa, ele dirá segurança. Você viu como isso funcionou? Eu indiquei: Ok, eu quero começar de S e o número do índice de S aqui será cinco. E como eu não indiquei onde quero que o corte pare, o Python continuará até É por isso que temos segurança. Da mesma forma, eu poderia fazer quase o oposto. Eu poderia deixar o início vazio, e agora eu poderia ir até aqui. E se eu indicasse, digamos, cinco como exemplo, qual você acha que será o valor aqui? Quando você não indica sua posição inicial, Python é iniciado automaticamente A posição padrão estará logo no início. Então, qual você acha que será a resposta aqui? A resposta aqui será cibernética? Porque mesmo que não tenhamos indicado o início, Python usará como padrão o início, que é C. E então cinco caracteres serão C Y, BR, e isso será Psi bur No entanto, isso não é tudo. Também poderíamos usar o conceito de índices negativos. Então, por exemplo, veja isso, ok? Eu vou até aqui, certo? E se eu quisesse atingir a segurança, uma coisa que eu poderia fazer é começar do final, e eu sei que a segurança tem oito caracteres, então vou dizer menos oito E agora vou adicionar meus dois pontos e usar o padrão até o final E agora, se eu executar o programa, aí está. É segurança porque o Python começará do final, que é Y, e depois seguirá oito letras para a esquerda Ele para em S porque S é a oitava letra. É o oitavo personagem Quando você está começando do final, é por isso que temos a segurança como resposta. Você pode estar se perguntando: Ok, como isso será aplicável à segurança cibernética Você já se perguntou como o antimalware e antivírus são capazes de escanear e Normalmente, a extensão do arquivo terá pontos EXE. Então, por exemplo, certo? Por exemplo, se um nome de arquivo for igual a CMD IOP, você sabe, algo estranho E então dote EXE. Esse seria um exemplo do tipo típico de nome de arquivo de malware que você terá Então, como podemos escrever um programa que escaneie e detecte assim que detectar a extensão dot EXE, ele sabe que, ok, isso pode ser um malware Ainda não falamos sobre a declaração If. Falaremos sobre isso na próxima seção, mas suponha agora que tudo bem, se o nome do arquivo estiver OK. E agora, se eu adicionasse colchetes, se eu quisesse direcionar o ponto EXE do final, porque nunca sabemos quanto tempo o nome do arquivo ficará antes do ponto EX à direita É sempre melhor mirar a partir do final. Eu sei que menos quatro, começando do final, se for igual, a qual ponto EXE Se eu souber que os últimos quatro caracteres no nome do arquivo são iguais a ponto EXE, sei que provavelmente será um Milware Então, agora eu posso simplesmente dizer impressões e, em seguida, entre colchetes, posso dizer que ML Ware encontrou, você sabe, algo assim Então é assim que o conceito de fatiamento pode ser aplicado no mundo da cibersegurança Agora, antes de concluir este vídeo, deixe-me falar com você sobre mais uma função. Isso é útil quando se trata de trabalhar com cordas. E essa será a função de divisão. É uma função que dividirá uma string em uma lista de strings flexíveis com base em um delimitador especificado Do que eu estou falando? Digamos, por exemplo, que eu volte ao meu texto e isso seja igual à segurança cibernética Agora você pode dizer que são duas palavras, certo? Não se trata mais de uma única palavra sobre cibersegurança. Agora eu tenho duas palavras: cibersegurança. Então, se eu quiser dividir isso, posso dizer palavras. Tudo bem? É igual ao texto e agora é dividido por pontos. Está bem? Estou anexando a função de divisão ao texto variável porque quero dividir a segurança cibernética Agora, se eu simplesmente imprimisse as palavras, qual você acha que será o resultado? Será cibernético e depois segurança. E se você está se perguntando: Ok, como vamos aplicar isso na segurança cibernética Jerman Vix Video web começará a analisar os aplicativos de cibersegurança de fatiamento, divisão 15. Métodos comuns de cordas: Bem-vindo de volta. Então, vamos continuar falando sobre os diferentes tipos de métodos ou funções que normalmente aplicamos em strings e um muito comum Na verdade, duas funções muito comuns seriam as de conversão de texto em maiúsculas ou minúsculas Então, no meu exemplo aqui, tenho meu texto variável igual à cibersegurança Se eu quisesse converter tudo para maiúsculas, eu simplesmente diria texto e não maiúsculo, abriria novos colchetes, e aí E se eu quisesse converter tudo para minúsculas, eu faria exatamente o oposto Isso será um ponto de texto impresso LWA. Pontilhe os óvulos, abra novos colchetes e aí está. Então, se eu executar o programa agora, você pode ver que temos segurança cibernética em letras maiúsculas e, em seguida, segurança cibernética em letras minúsculas Portanto, essas são duas novas funções que você deve conhecer, ponto opa ponto LA Mas também existe a função de cortar o espaço em branco. Então, digamos, por exemplo, que eu tenha minha variável de senha aqui. Eu tenho espaço, e minha senha real é peixe-espada, então deixe-me adicionar mais espaço Se eu quisesse cortar todo o espaço em branco desnecessário aqui, tudo o que eu faria seria dizer impressões, colchetes e depois senha, e agora tirar Mais uma vez, a função de faixa, também podemos usá-la para remover qualquer espaço em branco desnecessário, executar o programa e pronto. Peixe-espada sem o espaço vazio. Mas também podemos substituir caracteres em nossas strings. Digamos, por exemplo, deixe-me dar um exemplo aqui. Digamos que minha mensagem seja igual a, e digamos, ok, use uma senha. Digamos que a senha agora seja a senha um, dois, três. Só como exemplo, certo? Mas então queríamos imprimir algo que dissesse, ok, use uma senha e depois editasse Está bem? Não queremos exibir a senha real em si. É semelhante ao que fizemos na lição anterior, em que usamos o símbolo Asteris para substituir os caracteres Está relacionado, mas um pouco diferente. Então deixe-me mostrar do que estou falando, ok? Então, eu vou vir aqui agora. E eu vou dizer, vamos criar uma nova variável. Digamos que a mensagem segura de sublinhado, ok, será igual a agora mensagem, ponto e agora uma nova função chamada substituir Está bem? Quero substituir a senha real por outra. Então, dentro dos meus colchetes, vou colocar a senha real que eu quero substituir, que é a senha um, dois, três, vírgula, e agora as letras, caracteres ou seqüências reais, eu quero substituí-la Nesse caso, agora, vou abrir meus colchetes e, em letras maiúsculas, posso dizer redigido. Apenas como exemplo, Então, agora, tudo que eu preciso fazer é simplesmente imprimir entre colchetes uma mensagem de sublinhado segura E agora, se eu executar um programa, aí está, use uma cabeça de redução de senha Assim, você pode usar a função replace para simplesmente substituir qualquer parte específica da sua string por outra coisa, e é assim que você fará isso. Para finalizar, deixe-me mostrar mais uma coisa, que é encontrar substrings. Digamos, por exemplo, que temos uma variável chamada email, que é igual a, digamos, admin em labsyb.com Tenho certeza, é claro, que você já deve ter se deparado com isso tantas vezes antes quando talvez esteja tentando criar uma nova conta em um site e eles solicitarão que você forneça um endereço de e-mail. Se você digitou algo falso, por exemplo, o sistema será capaz de detectar que, Ei, este não é um endereço de e-mail válido, e isso porque ele pode verificar se o símbolo de arroba foi incluído na sua entrada Então, se o símbolo do anúncio não estiver lá, obviamente ele sabe: OK, tudo o que essa pessoa digitou não pode ser um endereço de e-mail Então, deixe-me mostrar como podemos escrever um programa muito simples para verificar se o símbolo at está na string. Então, a partir daqui, tenho meu e-mail igual ao administrador em labsar.com. Vamos verificar se o símbolo do anúncio está nele, ok? Eu vou dizer eu ok? Se eu sei que ainda não falamos sobre essa declaração if específica , não se preocupe, abordaremos isso muito mais detalhes na próxima seção. Mas, por enquanto, observe que if é uma declaração que o Python usa para verificar se algo é verdadeiro Então, vou dizer que se e agora enviar um e-mail e depois pontuar, tudo bem. Essa é a função que podemos usar para verificar se existe algo em nossa string. Então essa é a função find. E agora temos que especificar o que exatamente estamos procurando entre colchetes e agora códigos, o símbolo At Então, estamos tentando verificar se o símbolo at existe e uma maneira de verificar se ele realmente existe. Está em uma string dizendo que não é igual a menos um E então adicionamos nosso cólon. Então, isso não é igual a menos um é uma forma de dizer: Ok, algo Está bem? Então, aqui, estamos dizendo que se no e-mail você encontrou o símbolo do anúncio e ele não é igual a menos um Então, isso confirma que, sim, fato, o símbolo do anúncio está em nossa string Então, agora podemos fazer alguma coisa. Podemos dizer imprimir e, agora, entre colchetes, podemos dizer formato de e-mail válido Então, agora, se eu executar meu programa, aí está. Formato de e-mail válido porque o símbolo do anúncio foi de fato encontrado. Se eu remover o símbolo do anúncio e agora executar o programa novamente, você verá que nada está impresso porque o símbolo do anúncio não está mais lá. Não é um e-mail válido para Matt. Eu volto. Eu adiciono o símbolo do anúncio novamente, eu corro e agora você pode ver que ele está funcionando novamente. Portanto, para recapitular rapidamente, primeiro queremos procurar o símbolo do anúncio em um endereço de e-mail fornecido a nós Então, vamos dizer se e então estamos procurando especificamente pelo símbolo de adição. Portanto, se o símbolo do anúncio estiver presente e verificarmos se ele está presente com o valor não igual a menos um, se o símbolo de adição estiver de fato presente, basta imprimir um formato de e-mail válido Portanto, anote a função find. Então é isso para o vídeo, obrigado por assistir. Te vejo na próxima aula. 16. Mais manipulação de cordas: Bem, volte, então deixe-me guiá-lo por mais algumas operações usando a função split, bem como algumas boas e antigas indexações Então, eu tenho na minha tela duas notas. Eu tenho um endereço de e-mail e, em seguida, também uma URL. Agora, analisando o endereço de e-mail, se quiséssemos extrair o domínio especificamente? Então, queríamos extrair o labsyba.com e simplesmente nos livrar do anúncio Admin . Como vamos fazer isso? Bem, primeiro de tudo, vamos atribuir um e-mail variável ao administrador B em labsyba.com. OK. Então, o que vou fazer agora é criar outra variável que agora conterá o que estamos procurando. Então, vou chamar isso de um domínio. E agora é aqui que a mágica acontece, ok? Queremos dividir nossa string, queremos separar admin de labsyb.com Então, entre admin e labsyb.com está o que é o Então, vou dizer e-mail e agora dividir, e agora entre colchetes, de onde vamos nos separar Vamos nos separar do símbolo At, ok? E agora, como estamos procurando o segundo elemento, quando você separa o administrador do labsab.com do anúncio, uma parte será admin, a outra parte será labsab.com Então, queremos usar o segundo elemento, e esse será um. Um representará labsbdt com. E agora tudo o que precisamos fazer é simplesmente imprimir um domínio. E se eu executar um programa, então é labsbadt Se eu mudar um para zero, isso agora representará o primeiro elemento, que será admin. Então, se eu executar um programa novamente agora, você pode ver que ele mudou para administrador. Então, sempre que você estiver tentando dividir uma string em duas, usando a função split, primeiro você quer indicar: Ok, de onde você deseja começar a divisão. Nesse caso, agora, definimos a partir do símbolo do anúncio. Então, logo no meio, à esquerda, estará o valor do índice zero. À direita, estará o valor do índice de um. E como estamos procurando o domínio especificamente, mudamos de zero para um. Corremos novamente, e aí está o labcyba.com. Agora, o que dizer do segundo exemplo aqui, o URL? O que exatamente estamos procurando aqui? Digamos que quiséssemos extrair o arquivo real em si. Portanto, não estamos interessados em todo o gctpslabs.com, FurSlashPat, Tudo o que estamos procurando é simplesmente o nome do arquivo. Como podemos extrair o arquivo disso? Então, o que vou fazer de forma muito simples é dizer que URL é igual, e deixe-me pegar isso Deixe-me copiar isso. E eu vou colá-lo. E aí está. Ok, então, novamente, vou criar uma nova variável que agora manterá o valor do que estamos procurando. Vamos chamar isso de nome de sublinhado do arquivo agora será igual ao URL, certo? E agora divida pontos, e agora veja isso. Olhando a URL, ok? Este URL completo. O que você acha Que símbolo você acha que poderíamos usar para dividir a corda em várias partes? Sim, deveria ser óbvio que será a barra frontal, certo Porque você pode ver ali mesmo que está em todo lugar. Então, vamos dividir nossa string. Vamos dividir nosso URL usando a barra frontal. E agora, como podemos direcionar o arquivo? Você se lembra da indexação negativa? Bem, começamos do final da nossa sequência. Então, neste caso, agora, o que estamos procurando, estamos procurando o primeiro elemento do final, e agora isso será negativo, o quê? Um negativo. Então, vai começar do arquivo. Vai começar da direita para a esquerda, certo? Agora, tudo o que precisamos fazer é simplesmente imprimir o nome do sublinhado do arquivo E eles deveriam fazer o truque. Vamos seguir em frente e executar o programa. E aí está. Temos o nome do arquivo. Então, usando a função split e também uma indexação negativa, pudemos direcionar especificamente o nome do arquivo Deixe-me dar mais um exemplo. E aqui, vamos extrair algumas sequências de caracteres. Sem usar a função split, vamos usar apenas o valor do índice. Então, deixe-me fornecer o endereço de e-mail novamente, e eu vou dizer admin em labsba.com Ok, e se quiséssemos extrair o nome de usuário e o domínio? Então, queremos extrair o nome de usuário que é admin e, em seguida, o domínio que é labsyb.com Como você acha que podemos fazer isso? Bem, em primeiro lugar, posso dizer que meu nome de usuário será igual ao e-mail e agora lembro como os índices funcionam quando você começa e depois termina Então, queremos começar do início da nossa string. Então, vamos dizer cólon. Vamos deixar o lado esquerdo em branco porque vamos começar do início. E agora vamos ver. A será o índice número zero, certo? Então, A é zero, D é um, M é dois I é três, N é quatro e, claro, o símbolo de adição é cinco. Então eu vou dizer aqui agora, cinco, ok? E então eu posso dizer que domínio é igual a e-mail e agora dentro, queremos começar com o sexto índice, queremos começar com o sexto índice, que será L, dois pontos e depois deixar esse espaço em branco porque vamos até o final da string, e agora isso Então, tudo o que precisamos fazer é dizer imprimir. Agora aqui, digamos, use um nome. Ok, e então, use um nome e, em seguida, imprima o domínio de dois pontos entre colchetes OK. Domínio Com. E aí está. Vamos executar o programa, e aí está. O nome de usuário é Admin. O domínio é lobsaba.com. Sim. Mas espere só um minuto. Antes de estourar o champanhe, vamos fazer outro teste, ok Vou mudar o administrador aqui para Não sei. Digamos, Alex, por exemplo. Nunca execute o programa. Ah oh, ta ta, da ta, da, da, da, da, da, da. Nós temos um problema. Você pode ver agora que o programa está com defeito. Não está mais funcionando corretamente. Em vez de usar o nome Alex, temos Alex em. E em vez de labsyb.com, temos absyba.com. O que está acontecendo aqui. Veja, ao tentar extrair nossas sequências de caracteres sendo muito específico com os valores de índice que queremos atingir, o programa dependerá muito do endereço de e-mail real, com o número certo de caracteres antes e depois do símbolo arroba Portanto, depende muito disso, mas não queremos que o programa seja flexível o suficiente para sempre poder extrair com precisão o nome de usuário e o domínio independentemente de quão curto ou longo seja o endereço de e-mail real. Então, o que podemos fazer? Bem, lembre-se de que o símbolo do anúncio é onde está toda a ação. À esquerda do símbolo de adição está nosso nome de usuário, à direita está o domínio. Portanto, podemos direcionar especificamente o valor do índice do símbolo At. E como fazemos isso? Para o nome de usuário, e-mail, agora, novamente, vamos deixar a primeira parte da coluna em branco porque estamos começando do início, certo? E agora, para segmentar o símbolo at real, é o valor do índice. Vou dizer e-mail novamente e agora índice de pontos, e agora, entre colchetes, codifique o símbolo em Então, agora estou dizendo que o nome de usuário sempre começa sempre do início da string e termina quando você atinge o valor do índice do símbolo at. Da mesma forma, podemos fazer algo muito semelhante com o domínio. Podemos dizer domínio. Ok, vamos começar do começo aqui, índice de pontos de e-mail. E agora, o que estamos almejando de novo? Nós segmentamos o símbolo do anúncio. No entanto, queremos segmentar especificamente o primeiro caractere, o primeiro índice após o símbolo de adição. Então, o que você acha que vamos fazer? Nós, as pessoas boas, vamos dizer mais um. Mais um. Então, agora eu estou dizendo: Ok, comece o valor do índice de At, mas depois adicione um a ele. Então, ele vai para o AD e, em seguida, adiciona um. Ok, agora, labs.com. Então, agora, se eu executar o programa, aí está. Funciona em axlabs.com Se eu mudar Alex de volta para Admin e executar o programa, você pode ver que ele funciona de fato, vamos tentar algo completamente diferente, ok? Digamos que Jack Daniels no superyahoo.com, algo estranho, certo Vamos executar o programa e pronto. Jack Daniels e depois domainsoperyahoo.com. Então, é assim que extrair suas strings com sucesso e eficiência sem usar a função split, basta usar os valores do índice e marcar nele especificamente o valor do índice do símbolo de adição, porque lembre-se, novamente, o símbolo de adição é onde está toda a ação À esquerda do símbolo do anúncio está um nome de usuário à direita, está o domínio. Então, espero que tenham gostado do vídeo. Obrigado por assistir. Te vejo na próxima aula. 17. Introdução à seção de fluxo de controle e loops: Oficialmente para a terceira seção, e agora o telefone realmente começa. Agora, estamos começando a dar um passo mais profundo ou maior no mundo da programação em Python porque aqui vamos falar sobre fluxo de controle e Agora, até agora, nas duas seções anteriores, falamos sobre strings e números inteiros, e os programas têm sido bonitos em sua maioria, básicos, certo Talvez você possa ter uma entrada ou nos fornecer algumas sequências de caracteres e números inteiros, e então dizemos: Ok, vou fazer isso e fazer isso e aquilo e depois simplesmente imprimir, certo? Mas agora, com fluxo de controle e loops, se quiséssemos dizer: Ok, se algo é isso, então vamos fazer isso Mas se algo não é essa coisa, vamos fazer outra coisa. Isso é fluxo de controle e loops. Além disso, e se, por exemplo, tivéssemos uma lista? Está bem? Pode ser uma lista de nomes, uma lista de livros, uma lista de senhas, certo? E então queríamos, tipo, examinar cada senha dessa lista e fazer alguma coisa, certo? Talvez quiséssemos pegar cada senha e criptografá-la, ou talvez queiramos pegar cada senha e depois verificar se a senha é realmente forte ou fraca, dependendo de vários tipos de condições Vamos abordar isso nesta seção Essa será uma das seções principais deste curso em particular, e estou muito empolgada em ensinar sobre fluxo de controle e loops. Vamos começar. 18. Introdução aos algoritmos: Vamos fazer uma pausa no Raplt e falar um pouco sobre algoritmos porque, acredite ou não, vamos começar a trabalhar com conceitos um pouco mais avançados na programação em Python E é muito, muito importante que você entenda o que são algoritmos porque eles são vitais, não apenas para Python, mas para qualquer tipo de linguagem de programação Agora, se eu fosse te dar uma espécie de definição padrão do que é um algoritmo, é basicamente como um conjunto de instruções que precisam ser seguidas para chegar a um resultado específico, ok? Nesse caso, agora mesmo, você pode ver esse texto. Eu escrevi algumas coisas lá. A primeira declaração diz: se o computador estiver funcionando rápido, conclua. Agora, o que eu quero dizer aqui? Estou simplesmente dizendo que, olha, se nosso computador está funcionando muito, muito bem, ele está funcionando muito, muito rapidamente. Não há necessidade de verificar nada. Está tudo bem, certo? É por isso que eu disse terminar. Mas eu notei que na terceira linha, eu disse, senão, você também poderia dizer algo como bunda, certo? Mas na linguagem de programação, não usamos but, usamos se. Tudo bem? Então, ela basicamente significa que, se a afirmação anterior não estiver correta, se o computador não estiver funcionando rápido, ok, o que precisamos fazer agora Antes de tudo, precisamos verificar se há um vírus. E depois disso, talvez precisemos desinstalar programas desnecessários e, em seguida, talvez precisemos aumentar a rampa. Portanto, se seguirmos essas três etapas, é garantido que um computador funcione mais rápido. Isso é um algoritmo, certo? E duas palavras-chave aqui são IF e s. Vamos trabalhar bastante com isso neste curso. E se você for trabalhar com um tipo diferente de linguagem de programação, sempre encontrará declarações de IL. Esses são os blocos de construção fundamentais de qualquer programa. Espero que você entenda o que fizemos aqui. Muito simples Vou tornar isso um pouco mais avançado, ok? Só um pouquinho, certo? Deixe-me abrir a segunda aba. Então imagine que você está se vestindo com base no clima. Está bem? Então, logo na primeira declaração, estabelecemos um cenário, certo? Portanto, nosso programa está verificando o que devemos vestir com base no clima. Então, temos o primeiro resultado. Se o tempo estiver ensolarado, ok, bem, podemos usar nossos óculos escuros No entanto, observe que a terceira linha é diferente se não for mais outra. Por quê? Bem, porque o clima pode vir de várias formas. Pode estar ensolarado, pode estar chuvoso, pode estar nevando, pode estar nublado pode estar nevando, pode estar nublado Há muito mais opções, certo? No primeiro documento aqui, existem apenas duas condições. A primeira condição é: OK, o computador está funcionando rápido ou não? É isso mesmo. Nada como: Oh, o computador está funcionando com 25% da capacidade? Está funcionando com 50% da capacidade? Não temos outras condições. São só dois. Ou o computador está funcionando rápido ou não é A ou B. É por isso que eu funcionaria perfeitamente aqui No entanto, neste exemplo, temos mais de duas opções porque, novamente, estamos lidando com o clima. Então, se estiver ensolarado, podemos usar óculos escuros Caso contrário, se estiver chovendo. Ok, podemos pegar um guarda-chuva. E se estiver nevando, podemos vestir um casaco pesado, certo Mas agora veja a última linha. Simplesmente diz outra coisa. Nem mais, se fosse assim. Porque basicamente estamos concluindo o programa aqui. Estamos dizendo: Ok, verificamos se está ensolarado, verificamos se está chovendo, verificamos se está nevando Então, se não for nenhum desses três, será apenas um dia normal. Caso contrário, basta se vestir normalmente. Está bem? Então, a primeira aqui novamente é simplesmente ELs porque há duas condições. A segunda aqui, temos a declaração s if porque há mais de duas condições. Na verdade, existem quatro resultados diferentes com base no clima. É por isso que não podemos mais simplesmente trabalhar com os I Ls. Temos que introduzir a declaração s if. Então, espero que você entenda por que usamos a declaração Is aqui e por que usamos else if aqui Caso contrário, talvez, quando começarmos a criar programas reais, usando os algoritmos, você entenda muito melhor Mas isso foi uma introdução ao mundo dos algoritmos, bem como às declarações Is else if. Obrigado por assistir. Te vejo na próxima aula. 19. Declarações “if else”: Então, no vídeo anterior, discutimos brevemente os conceitos de algoritmos, bem como as declarações Is if. Agora, vamos colocá-lo em ação. Na verdade, vamos escrever um programa que solicitaria um número de 1 a 9 do usuário Agora, se o número for maior que quatro, vamos dizer: por que tanto? Senão. O que significa que, se for quatro ou menos, vamos dizer por que tão pouco. Agora, na última linha, eu a desfoquei por um motivo específico, porque assim que escrevermos esse primeiro programa, adicionaremos uma condição extra Eu não quero te mostrar qual é essa condição extra ainda. Então, vamos nos concentrar em escrever esse programa, certo? Então, deixe-me arrastar isso para longe. Tudo bem. E deixe-me remover isso. Ok. Então, a primeira parte do programa é que queremos solicitar um número entre 129 Então, o que podemos fazer aqui? Bem, primeiro de tudo, podemos criar uma variável chamada N. Tudo bem, para o número. E nós vamos passar. Lembre-se de que trabalhamos com a função de entrada. Está bem? Então, vou dizer input porque essa é a função que eu solicitaria a entrada do usuário. Então, vou dizer entrada e vou dizer inserir um número entre 129 Está bem? Antes de tudo, vamos garantir que isso esteja funcionando. Ok, insira um número de 1 a 9, deixe-me criar um espaço de 1 Corra novamente. Ok. Tudo bem. Então, a primeira linha funciona. Agora, queremos verificar se o número está entre ou é menor que quatro, certo? Então eu vou dizer se tudo bem. E então o número inteiro, porque queremos converter qualquer número que fornecemos, queremos convertê-lo em um inteiro porque o usuário pode ser muito Eles poderiam decidir fornecer, digamos, 1,1, 4,5, 7,6, algo parecido Então, queremos manter tudo como um número inteiro. Então, eu vou encapsular nossa variável agora na função inteira, certo? Então eu vou dizer que eu número inteiro N, agora espaço e depois o símbolo para maior que quatro, OK E agora, preste muita atenção. Vou adicionar o dois-pontos duplos, ok? Você precisa adicionar isso sempre que estiver trabalhando com suas declarações de ELs, ok? Então eu vou dizer isso. E agora, por padrão, na verdade, Python escreveu essa linha para mim, mas vou dizer por que tanto. Está bem? Agora, entre, e agora eu vou dizer outra coisa se, no entanto, OK. E agora eu vou dizer sim. E, em seguida, novo recuo de linha, imprima. E então eu vou dizer, tão pouco. Ok. Então, eu vou seguir em frente agora. Ah, a propósito, certifique-se de que no seu s você também tenha dois pontos duplos, ok? Vamos seguir em frente agora e executar o programa, e vamos ver. Então digite o número 1-9, eu vou dizer seis Pressione Enter. Você pode ver ali mesmo, ele realmente funciona. Por que tanto. Vamos executar o programa novamente. Vou dizer três, três ali mesmo, e depois dizer por que tão pouco. Então, na verdade , funciona como você pode ver. Agora, vou repassar isso mais uma vez, ok? Então, primeiro, meio N, que será a variável que aceitará a entrada do usuário, e a entrada em questão, insira um número entre 129 Está bem? Então, agora vamos criar uma condição que verificará o valor desse número. Então, decidimos converter a entrada em um número inteiro. É por isso que temos o INT. Uma pergunta que você pode ter aqui é, espere um minuto, Alex. Anteriormente, quando tínhamos uma função dentro de outra função, precisávamos usar os colchetes, certo? The Is, isso não é exatamente uma função, ok? É mais um algoritmo, mais como um loop apenas verificando o valor de algo. Não é uma função real em si. É por isso que não temos o número inteiro entre colchetes, ok Então, ele vai verificar se o número inteiro, se for maior que quatro, bem, imprima, por que tanto? , o que significa que se o número for quatro ou menos de quatro impressos, por que tão pouco. Você pode dizer que funciona bem. E a única coisa que você precisa prestar atenção seria o dois-pontos duplos após o quatro e também após o s. E também é prática muito boa que, sempre que você estiver andando com declarações IL ou s, se tiver um bom recuo, eu não fiz isso Eu não tinha minhas declarações impressas diretamente abaixo das declarações E e L. Isso não é nada bom. Essa é uma sintaxe de programação muito, muito ruim. Então você sempre quer ter seu recuo correto, ok Faça isso sempre que estiver trabalhando com as declarações EL. Ok. Agora vou trazer de volta nosso programa. E veja isso. Eu adicionei uma condição extra dizendo que e se o número for um número específico, que é cinco. Bem, queremos dizer Bingo. Está bem? Então, como exatamente vamos fazer isso? Está bem? Deixe-me arrastar isso para longe. Ok. Agora, veja isso. Eu vou vir aqui onde diz, imprima por que tanto, e vou pressionar Enter porque queremos adicionar o s I entre a instrução If de abertura e a declaração s de encerramento, ok? Então, agora eu vou dizer L, esta é a forma abreviada de escrever s if. Então, em vez de dizer sf, usamos LF em Python Está bem? Então L, se o inteiro N, for igual ou, desculpe, o inteiro N. Se for igual a cinco, o igual será duas vezes igual a seno, não apenas um, não apenas um Caso contrário, se o número inteiro fornecido pelo usuário for cinco, agora vou adicionar os dois pontos duplos e, em seguida, vou dizer, desculpe, vou dizer imprimir E depois, entre parênteses, Bingo. Está bem? Então, eu vou fazer isso agora. Estamos no programa. E agora vamos verificar se isso realmente funciona. Primeiro de tudo, vou digitar três, ok? Ok, então ainda está funcionando. Por que tão pouco? Ok. Vamos tentar oito. Por que tanto. Ok. E agora, se eu disser cinco e pressionar Enter, adivinhe? Não está dizendo bingo, ainda está dizendo o porquê. Você quer saber por quê? Porque o programa Python é executado linha por linha. Agora, veja a hierarquia aqui. A primeira condição que o Python está verificando é ver se o número é maior que quatro E como cinco é maior que quatro, ele imediatamente diz: Ok, por que tanto? Nem é preciso ir mais longe para verificar se o número é igual a cinco, porque a primeira afirmação está basicamente dizendo: Ei, se o número for maior que quatro, então imprima por que tanto. Então, para provar isso para você, o que eu vou fazer aqui é isso, ok? Eu vou dizer que vamos realmente mudar a hierarquia aqui Então, verificaremos, primeiro lugar, se o número inteiro é realmente igual a cinco Ok, que essa seja a primeira coisa, ele verifica. E agora, aqui, verificaremos se o número inteiro é maior que quatro Então, basicamente acabei de mudar a hierarquia. Então, a primeira coisa que vamos verificar agora é se o inteiro é realmente igual a cinco, ele vai dizer bingo, caso contrário, se não for igual a cinco e for maior que quatro, vamos dizer y. Caso contrário, se não for igual a cinco, e se não for maior que quatro, imprima y tão pequeno. Está bem? Vamos executar o programa. Então, eu vou vir aqui agora, executar, deixe-me primeiro, adicionar cinco agora e ver, Enter, e aí está. Bingo. Na verdade, eu trabalhei. Vamos executar o programa novamente. E se eu digitar dois? Entre, por que tão pouco? Um, mais uma vez, vamos com sete. Entre, por que tanto? Você pode ver agora, funciona. Portanto, a hierarquia dos seus comandos é extremamente importante sempre que você estiver trabalhando com Python ou Pgamming Ao verificar as condições, lembre-se sempre de que, no Python, se obtiver uma condição satisfeita, ele imprimirá imediatamente os resultados Não avançará mais nas linhas restantes do seu programa. Portanto, a hierarquia de suas condições, das condições que são verificadas, seus comandos é muito, muito importante E então, é claro, também esse pouco que você sabe, saber onde adicionar os dois pontos, coisas assim Isso é algo com o qual você acabará se acostumando. Pode ser um pouco cansativo no começo, mas à medida que você começa a escrever mais programas, acabará se acostumando Então, isso é tudo para trabalhar com as declarações E L L if. Obrigado por assistir. Te vejo na próxima aula. 20. Verificador de senhas simples: Tudo bem, vamos escrever nosso primeiro código relacionado à segurança cibernética e este verificará se a senha enviada pelo usuário é realmente válida ou não Você é mais do que bem-vindo a tentar escrever o código sozinho. Se não, deixe-me mostrar como você fará isso. A primeira coisa que precisamos fazer é indicar qual é a senha. Vou chamar a variável aqui que está armazenada na senha da pontuação. Vamos fornecer um valor para a senha. Eu vou escolher algo muito, muito genérico. Digamos, senha um, dois, três. Essa será a senha real. A propósito, não tenho certeza se já mencionei isso antes, mas em Python, se você quiser adicionar um comentário ou uma dica em seu código, pode fazer isso usando o símbolo da hashtag e digitando o símbolo da hashtag e Talvez eu tenha mencionado isso antes. Se não, bem, aí está. Ok, então a senha inicial aqui será a senha um, dois, três. Então, agora precisamos pedir ao usuário que forneça a senha. Depois que eles fornecerem a senha, podemos executar uma instrução EL que verificará se a senha digitada está realmente correta ou não; se estiver correta, podemos dizer que o acesso foi concedido Caso contrário, diremos que o acesso foi negado. Então, a primeira coisa que vou fazer agora é obter a entrada do usuário. Deixe-me adicionar meu comentário e dizer que obter a opinião do usuário é a primeira etapa. O que faremos agora é chamar a entrada do usuário. Podemos chamá-la de Senha inserida. Essa será a variável que armazenará a entrada. Então, eu gosto da sugestão que o Python nos deu Ele simplesmente diz que a senha digitada é igual a imputações e , em seguida, solicitaremos que o usuário forneça sua A próxima coisa que precisamos fazer agora é ver se as senhas realmente coincidem ou não. Queremos ter certeza de que tudo o que eles digitarem aqui corresponderá à senha que armazenamos. A propósito, é incrível como eu não sei se você vê exatamente a mesma coisa na sua própria tela, mas o Python está literalmente escrevendo o código inteiro para Eu prometo a você, esta é a primeira vez que estou realmente escrevendo esse código no replet. Prometo que nunca escrevi esse código antes. É incrível como é tão inteligente, tão inteligente. Ele sabe exatamente o que eu quero digitar, e é exatamente isso que eu quero fazer. Eu quero dizer, se a senha finalizada é igual à senha armazenada. O que nós vamos fazer? Nós vamos imprimir. Então, entre colchetes, acesso por string concedido, desculpe por isso Então, o que vamos imprimir? Vamos imprimir colchetes, casacos. Acesso negado. E aí está. Deixe-me tirar o casaco extra ali mesmo. Aí está. Esse é o nosso código ali mesmo. Muito simples, muito direto. Vamos experimentá-lo. Vou correr e agora vou pedir a senha. Vamos tentar James 123. Isso funcionou? Não, acesso negado. Bem, não funcionou. Vamos correr. O programa mais uma vez. Vamos tentar a senha. Senha, um, dois, três, pressione Enter e, em seguida, pronto, o acesso foi concedido, nosso código realmente funciona corretamente. Claro, isso é apenas um bloco de código muito simples. Não é o programa inteiro em si, mas esse é o primeiro passo para criar um verificador de senhas mais abrangente Obrigado por assistir ao vídeo. Te vejo na próxima aula. 21. Introdução aos loops: Agora vamos falar sobre loops, que são facilmente um dos aspectos mais importantes de qualquer tipo de programa ou linguagem de programação Mas o que exatamente eles são? Bem, eles são usados normalmente para repetir um bloco de código várias vezes até que uma condição especificada seja atendida ou para um determinado número de iterações Em outras palavras, um loop será executado até que todos os itens em uma sequência ou lista tenham sido processados, ou o loop continuará sendo executado enquanto uma condição continuar verdadeira ou for satisfeita. Então, basicamente, é um loop. Vou continuar indefinidamente até que algo aconteça. Agora, eles são muito importantes porque nos ajudam a automatizar tarefas repetitivas Então, em vez de termos que repetir a mesma tarefa repetidamente, podemos simplesmente escrever um loop que executará essa tarefa para nós automaticamente e, claro, usamos loops para criar programas eficientes que se adaptarão com base em condições dinâmicas E quando se trata de loops, existem dois tipos principais O primeiro será o loop de quatro. Olha isso, ok? Temos uma lista de 129, ok? Números. E podemos escrever um programa muito simples que dirá: Ei, imprima cada número. Então, basicamente imprima um, dois , três, quatro, cinco, seis, sete, oito, nove. Mas em vez de termos que escrever cada linha individual para cada número individual, você sabe, imprimir uma, segunda linha, imprimir duas, terceira linha, imprimir três, podemos simplesmente escrever um loop que percorrerá todos os números dessa lista e depois imprimirá esses números até, é claro, que o último número tenha sido impresso, que é nove. Essa será a definição ou um exemplo, em vez de quatro loops. O segundo é o loop W. Então, digamos, por exemplo, que o horário esteja entre 12h01 e 16h59. Portanto, desde que a hora do dia esteja entre esse intervalo, digamos, boa Observe a diferença entre as duas estruturas. Está bem? O primeiro aqui, que é o loop fol, já tem, tipo, uma lista ou sequência predefinida E, desde que tenhamos itens nessa lista específica, faça alguma coisa. O loop wil é um pouco diferente porque diz: OK, enquanto essa condição continuar sendo satisfeita ou se essa condição continuar sendo verdadeira, qual é a condição aqui? Desde que o horário seja entre 12h e 16h59 boa tarde. Tudo bem. Para finalizar, os loops devem ter um endpoint ou serão executados para sempre Basicamente, um loop pode destruir todo o programa. Vamos dar uma olhada no exemplo aqui. E se os números nessa lista fossem o número um até o infinito, certo? Isso significa que o programa continuará imprimindo os números repetidamente e nunca parará. Isso travará facilmente o programa. E se neste exemplo, neste momento, não houver um período de tempo especificado. E se o programa apenas verificar se é durante o dia ou a qualquer hora da noite, diga boa tarde Bem, sempre vai simplesmente imprimir boa tarde, boa tarde , boa tarde, boa tarde. E isso acabará por travar o programa também. Portanto, é muito, muito importante que, sempre que estivermos trabalhando com loops, sempre haja um certo tipo de condição que acabará sendo satisfeita para que esse loop termine Caso contrário, isso travará o programa. Obrigado por assistir ao vídeo, nos vemos na próxima aula. 22. Loops para e while: Agora volte para o nosso lote de curadores. E eu vou te dar dois exemplos. Um para o loop de quatro e outro para o loop Wil. Então, para criar nossos quatro loops, vamos primeiro criar a lista. Nesse caso, agora mesmo, vou fornecer o nome da lista como nomes, ok? É igual, e então eu vou colocar meus colchetes aqui. E vamos adicionar alguns nomes. Então eu tenho Alex. Eu tenho Nancy. E eu tenho James. E digamos que, por último, mas não menos importante, eu tenho Violetta Honestamente, acabei de inventar esse nome. Violetta. OK. Então, temos uma lista aqui de quatro nomes diferentes, certo? Alex, Nancy, James e depois Violeta. Uma coisa que eu posso fazer agora é criar uma variável que representaria cada item na lista. Mais ou menos como atribuímos valores a variáveis como, você sabe, X é igual a quatro, Y é igual Agora posso entrar aqui e simplesmente dizer quatro. Está bem? E agora vou dizer quatro X. Em nomes. Está bem? O que é isso aqui, deixe-me adicionar o cólon ali mesmo Então, o que fizemos com essa declaração aqui é dizer: Ok, vamos usar X para representar cada nome nesta lista. Então X será igual a Alex, que será o primeiro loop a ser executado. O segundo loop X agora será igual a Nancy, ele será executado O terceiro loop agora será X igual a James. E então, finalmente, o último loop será X igual a Violet. Isso é basicamente o que isso faz aqui. Então, estamos dizendo para X em nomes. E agora temos que dizer ao programa: Ok, o que devemos fazer? Bem, devemos imprimir o nome X. Ok. Eu vou correr, e aí está você. Alex, Nancy James e Violetta. Mas e se eu quisesse apimentar um pouco esse programa e digamos algo como, você sabe, bom dia e depois o nome dessa pessoa Então, teremos um bom dia e Alex. Bom dia, Nancy. Bom dia James. E, claro, bom dia Violetta. Como vamos fazer isso? Bem, dentro da função de impressão, vou adicionar uma string que, antes de tudo, dirá bom dia. Eu estou bem. E então teremos a vírgula, que, a propósito, é apenas parte da impressão em si Não faz parte do programa real, se você entende o que quero dizer. É parte da corda. Basicamente, o que estou tentando dizer. Nós podemos fazer isso sem o coma também, na verdade, você sabe o que? Deixe-me remover a vírgula, só para não confundir você. Então eu vou dizer bom dia, ok? E então vou adicionar um espaço porque queremos que seja um espaço entre a sequência real, bom dia, e depois o nome da pessoa. É por isso que eu adicionei o espaço ali mesmo, ok? E então, aqui mesmo, eu vou adicionar o sinal de mais e depois X. Então, basicamente, anexando a cepa “bom dia” ao nome da pessoa Vamos executar o programa e pronto. Bom dia, Alex. Bom dia, Ansy Bom dia, James. Bom dia Violetta Agora, se eu remover esse espaço porque quero que você entenda isso muito bem. Se eu remover esse espaço agora e executar o programa novamente, você pode ver agora que está tudo confuso, ok Não há espaço entre a manhã e depois o nome da pessoa. É por isso que, mais uma vez, adicionei o espaço aqui entre o G e as aspas de fechamento, ok? Então, quero dizer, mais uma vez. E aí está. Este é um exemplo de quatro loops muito simples. Primeiro, criamos uma lista de nomes. Atribuímos essa lista inteira aqui aos nomes das variáveis. E agora precisamos criar outra variável que representará cada item, cada nome nesta lista. Então, definimos quatro X na lista chamados nomes e agora a função print Bom dia, mais o nome da pessoa nessa lista. Este é um exemplo dos seus quatro Loops. Agora, o que vou fazer é criar um loop selvagem. Agora, para fazer isso, vamos descer até aqui. E sim, podemos executar vários programas e funções no mesmo arquivo, certo? Então, o que vou fazer agora é criar algo chamado contador. Ok, então contador é igual a zero. Agora, o que exatamente estou fazendo aqui? O que é esse contador? Lembre-se de que, com os loops Wil, eles continuarão funcionando enquanto a condição continuar sendo satisfeita Essa é a diferença entre um loop de outono e um loop de while. Com o ciclo de outono, temos uma lista de itens, certo? Portanto, o loop simplesmente percorrerá todos os itens dessa lista. Mas daqui a pouco, deve haver algum tipo de condição que será apresentada. E então vamos dizer ao Python que, Ei, enquanto essa condição específica continuar sendo satisfeita, execute o loop Então, a condição aqui agora é que embora nosso contador seja menor que, digamos, três, agora você vê que estamos dizendo: Ei, contanto que nosso contador, contanto que o número aqui seja menor que três, continue fazendo alguma coisa. E você pode ver que o Python meio que já nos dá uma dica de onde ir a seguir Bem, eu vou dizer imprimir imprimir, e depois vou adicionar um texto ali mesmo, a string. Olá. Está bem? E aí está. Agora, o que estamos dizendo aqui é começar do zero, ok? Comece do zero e, em seguida, verifique se zero é menor que três. Se for menor que três, imprima Olá. No entanto, na verdade, ainda não terminamos. Por quê? Bem, porque não dissemos especificamente ao Python que adicionasse um novo número ao Então, em vez de zero, agora se tornará um. Verifique se um é menor que três e depois imprima olá. Ainda não dissemos isso ao Python porque um loop pode ocorrer de qualquer maneira Podemos continuar adicionando ou um, dois, três a zero, ou podemos ir na direção oposta e, em vez de zero ir para um, pode ser zero indo para menos um, menos dois, menos três, menos quatro E nesse tipo de cenário, esses números sempre serão menores que três, e a condição nunca será satisfeita ou sempre será satisfeita , e então isso travará o programa. Então, precisamos dizer explicitamente ao Python que, Ei, depois de executar o primeiro loop zero é menor que três, adicione um ao Então eu vou entrar agora e vou dizer contador e depois mais é igual Esta é a nossa maneira de dizer: Ok, Python, o início do loop será zero Verifique se zero é menor que três. Se for menor que três, imprima olá e, em seguida, adicione um ao contador. Portanto, agora será um em menos de três. Python diz que sim, um é realmente menor que três. Vai colocar olá. Ele adicionará um novamente, então um agora se tornará dois. Python vai verificar: Ok, são dois a menos que três, sim, são menos de três, imprima E então ele vai adicionar um novamente. Então agora se torna três. E então, finalmente, Python dirá que, OK, três não é menor que três porque três é igual a três, e então ele encerrará Certo. Vamos em frente agora mesmo e corramos. E aí está. Olá, olá, olá. Você pode ver ali mesmo que ele parou em três loops porque o primeiro loop será zero O segundo loop será para um. O terceiro loop será para dois. Se eu viesse aqui e dissesse: Ok, menos de sete corridas, agora você pode ver que temos, novamente, 40, um, dois, três, quatro, cinco, seis, olá. Então essa é a diferença entre o loop quatro e o loop selvagem. Você pode ver agora, com os quatro loops, que temos nossa lista ou nosso caminho e, em seguida, o loop percorrerá o loop percorrerá cada item específico dessa matriz e fará alguma coisa. Mas para o loop Wile, precisamos primeiro especificar: Ok, qual é o ponto de partida E agora forneceremos a condição: OK, desde que isso seja igual a isso ou isso seja menor que isso, ou isso seja isso, faça alguma coisa e, em seguida, adicione ou remova uma ou apenas faça algo para garantir que o loop agora realmente comece a ser executado Essa é a diferença entre o loop quatro e o loop while. Obviamente, trabalharemos muito mais com quatro e seis loops neste Mas obrigado por assistir. vejo na próxima aula. 23. A declaração BREAK: Vamos agora falar sobre a declaração de interrupção porque é uma declaração muito, muito poderosa, e vamos trabalhar com ela neste curso. Mas antes de fazer isso, eu só quero mostrar uma maneira diferente de realmente imprimir os nomes neste exemplo em particular. No momento, estamos dizendo bom dia e depois mais e depois X. X, é claro, sendo a variável que representa cada nome em nossa lista Outra forma de escrever isso seria fazer algo assim. Primeiro de tudo, eu vou remover o mais X. Ok. Mas agora eu vou vir aqui logo no começo. Vou digitar F, ok. E agora, aqui mesmo, vou adicionar meus coletes encaracolados, não os usuais, mas os encaracolados E agora, aqui, vou simplesmente digitar X. Ok? Eu posso executar o programa, e você pode ver agora que temos exatamente os mesmos resultados. Essa aqui é uma maneira diferente e também mais eficiente de realmente imprimir os valores das variáveis em uma lista ou matriz em uma aparência de quatro ou duas vezes. Certo? E vamos andar assim daqui para frente. Agora, a declaração de interrupção, o que exatamente é a declaração de interrupção? É usado quando queremos encerrar um loop mais cedo. Por exemplo, nesse flop que estamos vendo agora, o que acontece é simplesmente examinar todos os nomes da nossa lista e depois imprimir bom dia e depois o nome da pessoa, certo? Mas e se, por um motivo ou outro, quiséssemos encerrar o loop assim que James fosse contatado, não quiséssemos imprimir bom dia Violeta porque não gostamos de violeta, certo? É aqui que podemos usar a instrução break para encerrar o loop mais cedo Para demonstrar isso, vou escrever um programa completamente diferente, ok? Então, vamos fazer isso direito? Vou digitar, digamos, números. Vou criar uma nova lista aqui, números são iguais e vou colocar meus colchetes E vamos usar uma série de números. Eu vou com um, três. Vamos com sete, oito, dez, e vamos com 11, e vamos adicionar mais um, número par 14. Está bem? Então, temos uma lista de números aqui, e o que queremos fazer agora é criar um loop que percorra todos os números. No entanto, quando o primeiro número par for alcançado, queremos encerrar o loop, o que significa que, uma vez que o número seja oito, encerraremos o loop, então ele deve ser executado quatro vezes O primeiro loop por 1 segundo p para três, terceiro, procure sete, quarto loop para oito. Então pense sobre isso, certo? Primeiro, criaremos o loop de outono e, em seguida, apresentaremos a declaração I. Então, o eu me vendo verificará: Ok, esse número é realmente par ou é ímpar Se for par, interrompa o loop porque encontramos o primeiro número par. Se não for um número par, se for um número ímpar, continue com o loop Então, como vamos fazer isso? Gatap in enter the fall loop four, digamos Num. Ok, Num representará os números. E, a propósito, não tenho certeza se já mencionei isso antes, mas acho que é hora de fazer isso. Veja, eu só digitei para o número. Você pode ver agora na minha tela Python já está sugerindo em números porque o Python é realmente muito Então, nesse tipo de situação no momento, se você estiver satisfeito com a sugestão que o programa lhe deu, basta pressionar a tecla tab no teclado e obterá exatamente o mesmo resultado, certo? Então, eu perdoo que eu não possa falar. Eu gravei o número da guia. Ou a tecla de toque no meu teclado, e agora eu tenho quatro números em números. Vou adicionar meu cólon. Está bem? Agora, vou adicionar a declaração If, e você poderia dar uma olhada? Prometo que, na verdade, nunca digitei esse programa antes, mas acho que o Python é Eu já tenho uma ideia do que eu poderia estar procurando. Sim, eu quero que um e, em seguida, a porcentagem dois seja igual Então, o que exatamente é isso? O que está acontecendo aqui? O que isso significa é que vamos verificar se o número que foi retirado, se é divisível por dois e o restante é igual a zero, então sabemos com certeza que é um número par Se você dividir sete por dois, obterá 3,5, 3,5. Sempre haverá que o restante restante tenha sido a metade Mas quando você divide oito por dois, a resposta é quatro em linha reta. Não é 4.1, não é 4.2. Não é 4,5, é quatro. Então é assim que podemos verificar se o número é realmente par. Então, se o número for, de fato, par, o que fazemos? Digamos que imprima. Ok. E agora vou adicionar a string F. Ok, e agora a própria string encontrou o primeiro número par. Ok, vamos adicionar minha vírgula. E agora eu quero mostrar o número real, chaves curvas e o que vai ser Vai ficar entorpecido. Ok. Incrível. Então, adicionamos o que o programa deve fazer se o número for, na verdade, um número par. Prince diz: Ok, encontramos o primeiro número e agora quebramos o loop. Não precisamos mais que o loop funcione. Quebre isso, acabou. Encontramos o primeiro número maligno. Vamos sair daqui. El Certifique-se de suas guias. Lembre-se de que a tabulação é extremamente importante, ok? E e L s devem estar na mesma aba, certo, no mesmo recuo, Então, basta imprimir, digamos, imprimir. Eu adiciono meus colchetes e , em seguida, meus casacos ainda procurando esse número par E aí está. Ok. Vamos em frente agora mesmo. Execute o programa e aí está. Ainda estou procurando por esse número par. Ainda estou procurando por esse número par. Ainda estou procurando por esse número par. Olha, encontramos o primeiro número par, e o número é oito. Esse é o uso da instrução break. Agora, vamos usá-lo em uma natureza L. Agora, para fazer isso, eu vou até aqui. E vamos criar um programa muito simples que pediria ao usuário que digite algo como ou digite uma letra específica, e desde que a letra não seja igual a Q, continue pedindo ao usuário uma nova letra, ok? Então, essa é basicamente a condição que precisa ser satisfeita. Portanto, enquanto o usuário estiver digitando ABCDEF, desde que não seja Q, continue pedindo que o usuário insira uma nova letra Então, vou dizer que, embora seja verdade, o que isso faz agora é uma função ou loop muito simples em Python que criou automaticamente uma condição que é sempre verdadeira, a menos que algo mais aconteça Lembre-se de que, com os loops selvagens, necessário que haja uma condição específica que seja continuamente satisfeita para que o loop realmente seja executado e, em seguida, ele deve ser encerrado quando uma condição muito específica for atendida Então, vamos assumir agora que a condição é sempre verdadeira e agora vou digitar a entrada do usuário. Essa será a variável que representará a letra que o usuário realmente digitará. Então, vou dizer que a entrada do usuário é igual, e agora a entrada, lembre-se da entrada da função, que agora solicitará que o usuário digite algo Então eu vou dizer, digite uma letra e, em seguida, entre colchetes, eu vou dizer, Oh, digite Q. Ok. eu vou dizer, Oh, digite Q. Ok. Digite Q para sair do programa. Está bem? Então, estamos dando aos usuários aqui uma escolha, ok? Você pode simplesmente digitar uma letra ou, se quiser sair do programa, basta digitar Q, ok? Então, vou pressionar Enter. Então, agora vamos digitar a condição necessária para verificar se a entrada era realmente Q. Então, vou entrar agora adicionar a instrução If Então, vamos verificar se a entrada do usuário é igual a Q. O que devemos fazer? Bem, eu vou dizer impresso. Entre parênteses. E vou dizer que você optou por sair do programa. Escolha sair do programa. Pressione Enter e aí está. E agora, já que eles escolheram, oh, deixe-me adicionar as aspas finais aqui. Como eles escolheram sair do programa, agora vamos interromper o ciclo. Caso contrário, eu vou entrar aqui agora e depois dizer imprimir. E agora códigos F, digitados. E agora, lembre-se, entre colchetes, vou dizer usuário nas entradas de pontuação E aí está. Tudo bem? Vá em frente agora mesmo. Execute o programa. Ok, agora está dizendo Digite uma letra, eu vou dizer Y. Pressione Enter. Está bem? Agora diz: Ok, você digitou Y. Digite outra letra, eu vou dizer A. Mais uma vez, está funcionando até eu digitar Q, e agora ele encerrou E aqui estamos combinando a nossa declaração Wil, o Wile Loop, em vez da declaração break Então, deixe-me repassar isso novamente. Eu sei que você pode ter uma pergunta, por que não digitamos o s? Porque temos a declaração I. Então, onde está o s? Bem, poderíamos realmente adicionar o s. Vai estar aqui, e eu vou dizer “se”. E então o byte de tabulação aqui é impresso, você digitou isso. Então eu posso ir em frente agora. Execute exatamente o mesmo programa novamente. Está bem? Chegando aqui agora, digitando G. Funciona bem, digitando, funciona bem, digitando Q, enter, e agora funciona exatamente da Então, uma coisa que você precisa entender aqui é que a razão pela qual a instrução else é realmente opcional aqui é porque estamos trabalhando com o loop wild true, a condição. Então, ele assumirá automaticamente que a condição sempre será verdadeira. E agora estamos usando a instrução break aqui para controlar intencionalmente quando o loop realmente terminaria Portanto, não há realmente nenhuma necessidade da declaração Ls aqui. O loop sempre será executado porque dissemos Wild true e só pararemos a instrução break quando o usuário digitar a letra Q. Então, realmente, a instrução Ls aqui não é necessária Você ainda pode digitá-lo. O programa ainda funcionará perfeitamente bem. Mas sempre que você estiver usando as declarações wild true e depois break, você não precisa mais adicionar a condição Ls. Então, fizemos muita coisa neste vídeo em particular. Espero que você tenha conseguido acompanhar e agora entenda como a declaração break é usada Muito obrigado por assistir ao vídeo. Te vejo na próxima aula. 24. Tente declarações exceto: Bem, volte aqui. Na lição anterior, criamos com sucesso esse programa específico que aceitará a entrada de números positivos do usuário. Ele estudará os números em uma lista e continuará fazendo isso até que o usuário digite a palavra concluído. E no final, ele imprimirá se havia um número par, imprimirá qual era o primeiro número par e, eventualmente, imprimirá todos os números da lista. No entanto, uma coisa que descobrimos foi que, quando executamos o programa e adicionamos, digamos, por exemplo, em vez de um número inteiro real como oito ou nove, adicionamos, digamos, 8,6, certo Quando pressionamos Enter, acabamos tendo essa seta de valor de mensagem de seta específica. Agora, se executarmos o programa novamente, e em vez de 8,5, eu disser, você sabe, IOF, eu digitei letras em vez disso, pressionei Enter Você pode ver mais uma vez que também temos exatamente o mesmo erro. E isso porque nosso programa foi criado de forma que se espera que receba apenas números positivos. Se executarmos o programa mais uma vez e eu digitar, digamos, menos seis, que é um número negativo e eu pressionei Enter, você pode ver que ele realmente funciona de certa forma Ele aceita menos seis porque é um número real. Acontece que é negativo. Mas isso ainda anula o propósito, porque queremos que o usuário digite apenas números positivos Então, nem deveria ter aceitado esses seis negativos. Portanto, temos alguns problemas com nosso programa específico e agora precisamos introduzir algo conhecido como o bloco try e depois o bloco accept. Portanto, o bloco tri em Python é basicamente parte do que chamamos de mecanismo de tratamento de exceções , o que basicamente nos permitiria capturar e tratar erros que possam ocorrer durante a execução do Portanto, se ocorrer um erro dentro do tri Block, o programa não falhará Em vez disso, o erro será detectado e o código dentro do bloco de exceção associado será executado. Lembre-se de que não se trata apenas de os usuários cometerem um erro sempre que digitam suas entradas Também é possível que um hacker tente inserir deliberadamente valores que o programa não aceitará em um esforço para realmente travar o É por isso que precisamos sempre garantir que nossos programas, sempre que aceitam entradas do usuário, os criemos e os projetemos de forma que sejam capazes de lidar com as entradas erradas do Então, como vamos agora detectar algum erro específico? Bem, eu vou vir aqui. Estamos quebrando, ok? Então, a razão pela qual estamos começando aqui é porque é aqui que vamos verificar se o usuário adicionou ou não a palavra concluída ou um número real. Então, depois do intervalo, certo? Depois do intervalo, porque o intervalo vai verificar, ok, está feito? Se não for feito, agora ele será executado. É aqui que vamos digitar as palavras, ou melhor, a palavra tentar, porque é aqui que queremos que o programa pegue uma flecha, se houver. Então, agora vai ser tentativa e depois cólon. E agora isso aqui, podemos simplesmente marcar isso. Ok, deixe-me apresentá-lo aqui. Então, estamos dizendo aqui que, se o usuário digitar concluído, simplesmente interrompa o programa. Desculpe, interrompa o ciclo. No entanto, se for um número real, vamos verificar se esse número é positivo. Então, agora que temos a variável de crédito NUM adicionamos a entrada do usuário ao NUM. Então, agora, vamos verificar se é positivo. A maneira mais fácil de verificar seria simplesmente dizer se o número é menor que zero. Essa é a maneira mais fácil de verificar. Se o número for, de fato, menor que zero, vamos dizer imprimir, insira um número positivo. Agora é porque depois eu venho. Agora, veja se era de fato um número positivo, agora vamos simplesmente acrescentar Vamos acrescentar à variável num dois números, e pronto aqui Está bem? E, finalmente, como tentamos, vamos encerrá-la usando a declaração de aceitação. Então, basicamente, o que estamos fazendo aqui é dizer: Ei, se o valor fornecido pelo usuário foi, de fato, menor que zero, então imprima, insira um número positivo. Mas e se o usuário não digitar um número? E se eles digitassem letras ou sequências de caracteres, basicamente, certo Então é aqui que o exceto entrará agora. Então, vamos dizer, exceto erro de valor, ok? Portanto, se houver um erro real no valor em si porque não é um número, agora vamos dizer, imprima, insira um número válido. E é isso aí mesmo. Então, vamos tentar ver se isso vai funcionar. Então, vou seguir em frente agora, executar o programa. Está bem? Então, o que eu vou fazer agora é ir para menos seis, pressionar Enter. Você pode ver aqui, diz: Por favor, insira um número positivo. Mas e se eu digitasse uma string como essa, por exemplo, agora ela diz: insira um número válido Veja como isso funciona, certo? Então, deixe-me explicar tudo de novo. Basicamente, aqui mesmo, onde estamos aceitando a entrada do usuário. Queremos verificar se é realmente um número positivo. A melhor maneira é se esse número for menor que zero, então sabemos que é negativo, podemos imprimir. Insira um número positivo. Se, por outro lado, for maior que zero, sabemos que é um número positivo. Podemos prosseguir agora mesmo e acrescentar o número à lista de números E agora teremos que dizer: Ok, mas e se houvesse um erro real no tipo de entrada que o usuário inseriu? Talvez não tenha sido um número positivo. A, talvez nem fosse um número negativo. Talvez fosse como letras ou palavras ou algo totalmente diferente. Podemos então dizer: Por favor, insira um número válido. É aí que o exceto entra em jogo. Então, isso é tudo para as declarações de tentativa e exceção. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 25. Declaração continuar: Antes de concluirmos a seção sobre loops e controle de fluxo, quero dar uma olhada em mais uma declaração, que será a declaração continue Até agora, trabalhamos com a instrução break, e é claro que ela é usada para encerrar o loop quando uma condição específica for atendida. Mas e se, por um motivo ou outro, simplesmente quiséssemos pular uma iteração específica ou parte de um loop Não queremos terminar o ciclo com exatidão. Só queremos pular uma etapa específica. É aqui que o continue entra em jogo. Deixe-me dar um exemplo. Deixe-me remover esse código. Digamos que para um número sem intervalo 16. Agora, você provavelmente está se perguntando o que exatamente é alcance. Range aqui é simplesmente uma função embutida no Python , que gerará números entre um Nesse caso, agora, estamos dizendo números de 1 a 6. No entanto, lembre-se que, ao trabalhar com a função de intervalo, o primeiro número aqui, que é um, será inclusivo, enquanto o último número aqui, que é seis, não será inclusivo para ser exclusivo. Se eu simplesmente dissesse, ok, simplesmente imprima e em seguida, entre colchetes, imprima o número Você verá agora que vamos ter um, dois, três, quatro, cinco. Por favor, tenha isso em mente. Agora, a função, por padrão, imprimirá um, dois, três, quatro, cinco. Mas e se quiséssemos pular três neste caso? Queremos que, se vamos imprimir um, dois, quatro e depois cinco, como vamos fazer isso? É aqui que a declaração contínua entrará em ação. Mas antes de tudo, preciso criar a declaração If para verificar se o número é igual a três, certo? Agora estou dizendo que, se for igual a três, continue. Não preciso adicionar a declaração aqui porque quando você está trabalhando com a declaração contínua, ela é entendida. O Python simplesmente dirá que, quando eu chegar a três, vou ignorá-la Vou pular três e depois simplesmente continuar com o resto do loop Agora, se eu fosse executar o programa, agora você pode ver que é um, dois, quatro e depois cinco. É basicamente assim que a declaração de continuidade funcionaria. Deixe-me dar outro exemplo muito rápido. E se eu ampliasse o intervalo aqui de um para, digamos, 11. Mas agora queríamos verificar se há números pares e, em seguida, simplesmente manter esses números pares, só queremos imprimir os números ímpares Novamente, como vamos fazer isso? Vamos primeiro verificar se é divisível por dois, então vou dizer porcentagem e, em seguida, dois aqui é porcentagem e, em seguida, dois igual ao que é igual a zero na minha coluna, agora vou simplesmente dizer apenas continuar e depois imprimir Agora, se o programa Sterni, agora você pode ver que é simplesmente um, três, cinco, sete e nove É assim que a declaração continue realmente funciona. Deixe-me passar 1 minuto para falar um pouco mais sobre a função de alcance. Tem mais uma coisa. Isso você deve conhecer. O problema da função range é que ela pode realmente aceitar três valores. Como exemplo, deixe-me adicionar minha hashtag. Por exemplo, com o alcance, você pode ter algo como um, dez e depois dois. A função de alcance pode aceitar três parâmetros diferentes, certo? Então, se você está se perguntando, o que exatamente eles serão? Bem, o primeiro número aqui representa o valor inicial, que é um, o segundo aqui representará o valor final, que será dez, enquanto o terceiro valor agora representará dois, que serão as etapas que devem ser ignoradas Por padrão, deixe-me mostrar como isso funciona agora. Se eu viesse aqui agora e depois dissesse um, dez ou dois. Apenas como exemplo, deixe-me remover o sedimento contínuo aqui Ok. Se eu continuar agora e imprimir esses números, você verá que agora é um, três, cinco, sete e nove y? Porque estamos pulando a cada dois. A etapa será duas, então vai para uma, vai pular para três, vai pular para cinco e assim por diante Se eu mudasse esse agora para três, você consegue adivinhar quais serão os valores? Agora serão 14, sete. Então, se eu executar o programa, aí está 147 Você pode ou não trabalhar com a função de intervalo no futuro, mas achei importante que você pelo menos entenda que a função de intervalo pode aceitar até três parâmetros diferentes. O primeiro valor aqui é o início, o segundo é o número da parada e, em seguida, o último valor aqui o número da etapa. Lembre-se de que o valor da parada é sempre exclusivo. Não será incluído nos resultados reais dessa função de intervalo específica. Última coisa a mencionar, última coisa a mencionar, você também pode se deparar uma declaração específica chamada declaração de aprovação. É assim que acontece. Em vez de continuar, por exemplo, você verá passar. O passe realmente não faz nada. Honestamente, é realmente usado para fazer comentários. Talvez o desenvolvedor do programa ainda não queira executar algo, mas queira viver como um nó. É para isso que a declaração pass é usada principalmente. Não vamos trabalhar com isso de jeito nenhum. Então, por exemplo, aqui, eu poderia dizer algo como, Ok, passe e então eu posso adicionar minha hashtag e posso dizer que adicionarei a função mais tarde Só como exemplo. Deixe-me seguir em frente e executar o programa, e você pode ver agora o programa ainda funciona de qualquer maneira, não vai funcionar, ele realmente não faz nada como tal. É mais ou menos isso. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 26. Desafio de programação: Ok, dookie, agora é hora de tentarmos juntar tudo o que aprendemos até agora para escrever um programa E o programa que queremos é aquele que fará com que o usuário continue inserindo um número positivo ou então, se quiser sair do programa, pode simplesmente digitar as palavras ou a palavra concluída para sair do programa. Então, basicamente, estamos dizendo: Ei, usuário, continue adicionando um número positivo. Continue adicionando o número. Continue adicionando números. Sempre que você estiver pronto para sair do programa, basta digitar concluído, certo? Agora, como o usuário está digitando os números dois, três, quatro, nove, 11, seja o que for, queremos adicionar esses números a uma lista Queremos ser capazes de acompanhar todos os números que o usuário continua nos fornecendo. Então, vamos adicionar esses números a uma lista. Mas também queremos que o programa verifique os números eVo que o usuário adicionou e acompanhe o primeiro número EVO fornecido para que possamos imprimir e dizer ao usuário que, Ei, esse foi o primeiro número par que você adicionou, e então podemos indicar qual era esse número. Caso contrário, se o usuário adicionou apenas números ímpares , podemos simplesmente dizer: Ok, nenhum número par foi encontrado na sua lista Agora, uma vez que o usuário tenha adicionado vários números e finalmente decida sair do programa, queremos que o programa imprima todos os números que foram adicionados pelo usuário. E se o usuário nunca adicionou um único número, basta dizer que não há números, a guerra não é difícil. OK. Então, vamos abordar isso passo a passo. Primeiro de tudo, vamos querer uma lista, certo? Vamos ligar para os números da lista, ok? Então, vamos adicionar todos os números inseridos pelo usuário. Vamos adicioná-los a essa lista chamada números. Então, obviamente, vamos usar a função de entrada para, você sabe, solicitar que o usuário adicione números, certo? OK. E teremos que criar um loop selvagem nesse cenário porque queremos que o usuário continue adicionando um número ou fornecendo um número até decidir sair do programa. Então, podemos dizer, você sabe, enquanto é verdade, e então o usuário continua adicionando um número. E então queremos verificar se o número fornecido pelo usuário era realmente um número par. Está bem? Então, teremos que ter algum tipo de declaração El que verifique se o número, se é anulável por dois, você sabe, se isso for igual a zero, você sabe , então imprima, um número par, você sabe, Sabe, caso contrário, diga não, números pares foram encontrados. Mas o que mais? Lembre-se de que também queremos continuar adicionando os números fornecidos pelo usuário. Queremos adicioná-los à lista chamada números. Então, teremos que acrescentar a entrada do usuário à lista de números, certo E vamos fazer uso de uma nova função aqui chamada Append Tudo bem, não se preocupe. Vou te mostrar como isso funciona. O que mais precisamos acompanhar? É mais ou menos isso neste momento, certo? Então, primeiro de tudo, criamos nossa lista chamada números, e aí teremos que solicitar que o usuário adicione os números verifique se os números são pares. Depois que o primeiro número par for encontrado, deixe o programa acompanhar isso e, no final, imprima qual era esse número par. E então, é claro, também no final do programa, maioria dos usuários decidiu sair dele, basta imprimir todos os números que o usuário adicionou. Então, vamos fazer isso, certo? Vamos afastar isso e vamos começar. Então, primeiro de tudo , vamos criar nossa lista vazia que conterá todos os números fornecidos pelo usuário. Então, números são iguais e depois vazios, ok? Então, o primeiro passo que vamos fazer. Agora, vamos solicitar que o usuário adicione o número. Então, vou dizer que , agora com dois pontos verdadeiros , agora queremos solicitar que o usuário forneça alguns números No entanto, teremos que atribuir a entrada dos usuários a uma variável. Então, digamos que o usuário está usando a entrada de sublinhado. Ok, isso representa o que o usuário adiciona. entrada do usuário aqui é igual aos colchetes de entrada, e agora vamos solicitar o usuário insira um número Está bem? Ou entre colchetes, eles também podem simplesmente digitar o tipo feito para finalizar Está bem? Até agora, tudo bem, atribuímos números. Temos nossa lista vazia ali mesmo. Isso coletará os números fornecidos pelo usuário e, agora, criamos um loop para solicitar que o usuário continue adicionando um número ou tipo positivo caso decida terminar. Então, o que vamos fazer agora é verificar se o usuário realmente digitou as letras concluídas ou digitou concluído Ok, porque não queremos que o produto continue funcionando se o usuário decidir digitar concluído. Então, vou dizer se o usuário On na entrada da pontuação é igual a concluído. Se esses são realmente tipos feitos, o que vamos fazer? Você adivinhou, vamos quebrar o ciclo. Tudo bem, deixe-me adicionar um pouco de espaço aqui. Está bem? Tudo bem. Então, verificamos se o dieser digitou concluído se eles quebraram o loop No entanto, se eles digitaram um número positivo real, o que queremos que o programa faça? Queremos que o programa adicione esse número à lista de números. Está bem? Então, como vamos fazer isso? Precisamos de algo que represente os números que serão fornecidos pelo usuário. Nesse caso, agora, não se engane. A variável de entrada do usuário aqui está simplesmente representando a entrada aqui, insira um número positivo ou digite feito para finalizar. É isso que está representando aqui. Os próprios números reais terão que criar uma nova variável para isso. Então, para a variável aqui, eu vou dizer num. Ok, num será igual a dois, eu não, lembro da função inteira que converterá tudo o que o usuário digitar Portanto, não será um número inteiro e agora sublinhará a entrada. Está bem? Então, basicamente, o que quer que o usuário digite nesta linha aqui, onde dizemos, insira um número positivo, se o usuário digitar 5.2, por exemplo, ok? Converta 5.2 em um número inteiro, que agora será cinco e, em seguida, atribua cinco à variável chamada número NUM Agora, a próxima etapa será adicionar esse número que o usuário adicionou à lista de números. E como fazemos isso? Vou digitar números e agora dar uma olhada no acréscimo de pontos E agora entre colchetes NUM. Então, aqui, esse acréscimo será a função que agora começará a adicionar os números adicionados pelo usuário à lista de números Vamos repassar isso mais uma vez. Então, primeiro de tudo, temos nossa lista vazia chamada números. Vamos criar o loop chamado Wil que fará com o usuário continue adicionando um número positivo. No entanto, se eles digitarem concluído, se a entrada do usuário for igual a concluído, interrompa o loop, sem necessidade de continuar Mas se o usuário realmente adicionou números reais, atribua esses números a uma variável chamada Num NUM e agora comece a acrescentar esses números à lista de números Até aí tudo bem, o que mais queremos fazer? Queremos verificar se algum número par está sendo adicionado. Então, o que vamos fazer? Vamos criar um loop de quatro. Está bem? Esse loop percorrerá todos os números na lista de números e , em seguida, encontrará o primeiro número par. Então veja isso. Eu vou dizer quatro num N em quê? Em números. Isso mesmo. Agora, vamos adicionar dois pontos. Vamos criar uma declaração I L. Então, se um número dividido por dois é igual a zero, o que queremos que o programa diga Queremos programar para dizer imprimir. E agora nossos colchetes. Vamos adicionar nossa string F e, em seguida, podemos dizer que encontramos o primeiro, o primeiro número par. E depois, é claro, colchetes encaracolados e depois NUM. Está bem? Caso contrário, se o número que foi adicionado pelo usuário nem mesmo estiver simplesmente quebrado. Vamos quebrar isso, ok? E agora podemos adicionar nossa declaração para fazer algo, podemos dizer dois pontos e agora vamos dizer imprimir quando você diz que nenhum número par foi inserido pelo usuário E aí está. No entanto, novamente, a identificação é muito, muito importante Lembre-se de que este s está abaixo dos quatro, ok? Então não é o Is Rather. É a declaração dos quatro S aqui. Então, certifique-se não cometer o erro de que os idntons serão muito, muito, muito importantes Então, é basicamente quatro e depois um número em números. Se um número dividido por dois for igual a zero print, encontramos o primeiro número e depois imprimimos qual é o número Caso contrário, simplesmente interrompa o loop quando esse número for encontrado, assim que o primeiro número positivo for encontrado. Desculpe, o primeiro número par foi encontrado. E então, se nenhum número par foi adicionado pelo usuário, eles simplesmente imprimem que nenhum número par foi inserido pelo usuário. OK. Por último, mas não menos importante, agora terá que imprimir todos os números que o usuário adicionou no final do programa. Então, eu vou vir aqui agora, adicionar a nova declaração If e simplesmente dizer o número if. Então, se o usuário realmente adicionou alguns números, então, se forem números, adivinhe, basta imprimir. E agora vamos dizer F e agora codifica números que você inseriu R e, em seguida, colchetes. Agora, números. Caso contrário, então isso vai ser s. Simplesmente imprime. Ou seja, se o usuário não adicionou nenhum número, podemos dizer que nenhum número foi inserido pelo usuário. Ah. Vamos tentar. Vou prosseguir agora mesmo. Execute o programa. E, oh, então temos um pequeno problema aqui. Diz linha 23. Ok, imprima F. O que eu fiz de errado aqui? Oh, não deveria haver nenhum espaço. Desculpe. Não deveria haver nenhum espaço ali. Você vê como apenas um único espaço pode arruinar tudo. É meio irritante, mas, sim. Portanto, sempre que você estiver usando as strings F, certifique-se de que não haja espaço entre o F e seu código Então, vamos tentar isso de novo. Corra. Ok, então eu vou adicionar um. Tudo bem, vamos adicionar três. Vamos adicionar quatro. Ok, vamos adicionar cinco. Vamos adicionar oito. Vamos adicionar seis. E agora eu vou digitar concluído, Enter, e aí está. O primeiro número par foi quatro, e agora digitamos os outros números que são um, três, quatro, cinco, oito e seis Então você pode ver agora que o programa realmente funciona. Então, deixe-me examinar o programa mais uma vez. Primeiro de tudo, criamos uma lista chamada números. Isso manterá todos os números positivos adicionados pelo usuário. Em seguida, criamos o loop while que solicitará continuamente que o usuário continue adicionando um número positivo ou, se optar por não adicionar, pode simplesmente digitar a palavra concluído para finalizar o programa Então, agora precisávamos verificar se o usuário realmente digitou concluído E, a propósito, deixe-me até tentar isso. Ok, vamos correr e vamos digitar pronto instantaneamente e ver. Bem, aí está. Então, o programa funciona muito, muito bem. Então, na verdade, verifica se esse usuário digitou pronto? Ah, funcionou. Ok, então, se digitarmos concluído, basta quebrar o loop Não precisamos mais executar o loop porque o usuário digitou concluído Então, nesse caso, neste momento, neste cenário em que o usuário digitou pronto, basicamente, tudo isso aqui é completamente irrelevante, ok O programa Python partirá diretamente da declaração break, até aqui, para simplesmente dizer: Ei, primeiro de tudo , até aqui Em primeiro lugar, diga: Ei, nenhum número par foi inserido pelo usuário. E, finalmente, nenhum número foi adicionado pelo usuário. Então, todos os números inteiros vão pular Mas e se o usuário realmente digitar um número? O que queremos que o programa faça? Bem, queremos adicionar esse número à nossa lista de números. Portanto, precisamos atribuir a entrada do usuário a uma variável. Nesse caso, agora, criamos uma variável chamada Num que representará a entrada fornecida pelo usuário. E também adicionamos o INT. Na verdade, vamos tentar isso e ver. Eu vou dizer 4.5 Enter e oh oh, oh, oh. OK. Há um pequeno problema aqui Você tem uma mensagem de erro? Não se preocupe. Vou mostrar como podemos lidar com erros no próximo vídeo. Ok, B, deixe-me rodar esse mais uma vez, ok? E digite, digamos, cinco, ok? Digite cinco, digite oito, pronto. Ok, então ainda funciona bem. Então, nos certificamos de atribuir os números adicionados pelo usuário à variável chamada NOM e, em seguida, anexamos NOM à lista de números usando essa função específica, escrevendo números , ponto, acréscimo e número, ok os números adicionados pelo usuário à variável chamada NOM e, em seguida, anexamos NOM à lista de números usando essa função específica, escrevendo números, ponto, acréscimo e número, ok ? Agora, como o usuário realmente adicionou alguns números, queríamos que o programa verificasse se algum desses números era realmente par. E, ao fazer isso, tivemos que criar um loop que percorresse todos os números na lista de números. E então, se o número fosse divisível por dois sem resto, simplesmente diga: Ok, encontramos o primeiro número par, imprima esse número Caso contrário, se o usuário não tiver adicionado nenhum número par, basta dizer que nenhum número par foi inserido pelo usuário. E no final do dia, basta imprimir os números que foram adicionados pelo usuário. E se o usuário não adicionou nenhum número, basta dizer que nenhum número foi finalizado pelo usuário. Isso é exatamente o que fizemos aqui. Portanto, sinta-se à vontade para passar por esse programa quantas vezes precisar. Espero que tenha sido relativamente simples. E, claro, como sempre, se você tiver alguma dúvida sobre qualquer coisa fizemos aqui que não tenha, você sabe, você tem certeza absoluta, fique à vontade para entrar em contato . Ficarei mais do que feliz responder a quaisquer perguntas que você tenha. Então, o Jomini Vernick Video web agora começará a dar uma olhada em como podemos lidar com erros em 27. Introdução à seção de funções: Venha para a nova seção onde vamos dar uma olhada nas funções, e eu garanto que nenhum curso programação estará completo sem falar sobre funções, ok? As funções são extremamente importantes e, acredite ou não, na verdade estamos trabalhando com algumas funções e até criamos algumas de nossas próprias funções. Neste curso. Você simplesmente não sabe ainda. Então, nesta seção, vamos nos concentrar nas funções. Vou mostrar como você pode criar suas próprias funções personalizadas e, em seguida, como usar algo conhecido como parâmetros, ok? Com o que queremos que nossa função trabalhe? Que tipos de dados , coisas assim. Também vamos dar uma olhada nos argumentos de palavras-chave, variáveis locais e globais e muito mais. E, assim como nas seções anteriores, haverá um exercício de codificação no final da seção Então, por favor, tente. Espero que você consiga passar. Caso contrário, não se preocupe, eu vou te fornecer a solução. Então, sem perder mais tempo, vamos começar a falar sobre funções 28. Definindo e chamando funções: Tudo bem, então bem-vindo a esta nova seção do Bn, onde vamos dar uma olhada nas funções, certo? E até agora tudo bem, na verdade estamos trabalhando com várias funções pré-construídas em Python Portanto, funções como impressão, entrada, intervalo e assim por diante, todas elas executam um tipo específico de operação. No entanto, e se quiséssemos criar nossas próprias funções personalizadas? Como podemos fazer isso? Bem, para fazer isso, primeiro teremos que definir o nome da função e depois decidir se essa função aceitará ou não o que chamamos de parâmetros. E então também podemos dizer: Ok, essa função adicionará esses números ou fará alguma coisa. E, finalmente, podemos escolher retornar um valor dentro dessa função. Então, vai ser algo assim. Você terá DEF, que será a função para definir o nome da função, e então você pode escolher ter parâmetros dentro dessa função, ok? E então teremos o corpo funcional. Então, você sabe, adicione A mais B, adicione isso, faça isso, divida isso, verifique se esse loop é verdadeiro, coisas assim. Basicamente, o que quer que a função faça. E, finalmente, podemos escolher retornar um valor que, a propósito, isso será opcional. Nem sempre precisamos retornar um valor sempre que estamos criando nossa própria função. Deixe-me dar um exemplo muito, muito básico. Então, digamos que quiséssemos criar uma função que imprimisse as palavras hello world, certo? Podemos dizer DF, e então eu posso chamar minha função Grit Portanto, o nome da minha função será GET e, em seguida, posso adicionar meus colchetes nos dois pontos e depois no hub final A propósito, observe que eu não adicionei nenhum parâmetro dentro dos colchetes aqui Os parâmetros são opcionais, ok? No entanto, vou entrar agora e definir o que a função realmente fará. Eu vou dizer impresso. Agora vou fornecer as palavras hello world. E agora tudo que eu teria que fazer é simplesmente chamar a função. E como eu faço isso? Eu vou dizer cumprimentos. E depois os pacotes, e aí está. Então, agora, se executar o programa, aí está, ele simplesmente diz hello world. Então, mais uma vez, começamos dando o nome greet à nossa função E então agora dissemos o que a função deveria fazer. A função deve imprimir hello world sempre que chamarmos ou usarmos essa função. E então aqui, simplesmente chamamos a função simplesmente dizendo grão e depois entre colchetes, e aí está Então, isso aqui é um dos tipos mais básicos de funções que podemos criar. Mas é isso. O Jerman Vanex Video Ware agora começará a examinar os parâmetros e argumentos das funções. Te vejo então. 29. Parâmetros e argumentos: Bem, bem-vindo de volta. Agora, vamos falar sobre parâmetros e argumentos. Veja, um parâmetro é basicamente uma entrada que podemos adicionar a uma função para personalizar seu comportamento. Nesse caso, agora, no exemplo anterior, o nome da função, que é grid, não tinha nenhum parâmetro. Está basicamente vazio. É por isso que quando dissemos: Ok, imprima e depois simplesmente olá mundo, e então chamamos a função, tudo o que ela simplesmente fez foi simplesmente dizer olá mundo. Mas e se agora quisermos adicionar um parâmetro específico dentro? Nesse caso, agora mesmo, eu vou entrar aqui agora e dizer meu nome. Está bem? Então, o perímetro aqui é chamado de nome, e agora eu quero que minha função diga olá e depois o nome que será fornecido Então, eu vou vir aqui agora. Vamos usar a string F e agora vou adicionar minhas chaves, e agora vou adicionar minhas chaves vez de colchetes encaracolados e Está bem? Então, agora, veja isso. Quando estou chamando minha função agora, posso adicionar o que chamamos de argumento. Quando você passa um valor para a função, ele se torna um argumento. Observe a diferença entre parâmetros e argumentos. Aqui em cima, quando definirmos a função pela primeira vez, usaremos o parâmetro. O parâmetro basicamente diz: Ei, estamos fornecendo essa entrada e vou usá-la para personalizar como a grade de funções se comportará. No entanto, depois que a função foi criada, informamos o que a função deve fazer. Nesse caso, agora, olá e depois nomeie o perímetro Quando chamamos essa função, quando queremos fornecer um valor, ela se tornará o que chamamos de argumento. Então, neste caso, agora, se eu quisesse cumprimentar, digamos, Alice, por exemplo, Alice agora é o argumento, e se eu fosse executar o programa, aí está Diz: Olá Alice. E se eu quisesse cumprimentar, digamos, Bob? Certo? Bob, vamos seguir em frente, executar o programa, e aí está. Olá Bob. Esses são perímetros e argumentos. No entanto, também podemos ter vários parâmetros em nossa função. Até agora, trabalhamos apenas com um único parâmetro, que é nome. E se quiséssemos criar uma função que somasse dois números? Como vamos fazer isso? Bem, podemos começar definindo o nome da função. Então, vou chamar isso de adição de números. Adicionar números será o nome da função. E agora, lá dentro, vamos fornecer dois parâmetros que serão A e B, dois pontos, ok? Agora, retorne A mais B. Ainda não falamos sobre a função de retorno ou a declaração de retorno. O que return faz aqui é simplesmente retornar o valor de uma operação específica. Nesse caso, agora mesmo, retornará os valores de A e B quando eles forem somados. É isso que o retorno faz. Então, agora eu vou entrar aqui e dizer o resultado. Está bem? O resultado será igual à soma de números. Está bem? E agora, lá dentro, posso adicionar os dois números que quero adicionar, digamos cinco e seis. E agora tudo o que preciso fazer é simplesmente imprimir o resultado. E aí está. Se eu quiser minha função, aí está 11. Viu como isso funciona? Primeiro, criamos uma função, mas usando a função definida chamada adicionar números. Esse é o nome da nossa função. E então dissemos: Ok, nossa função receberá dois parâmetros, A e B. E agora, com o retorno, estamos basicamente definindo o que a função fará. Ele retornará o valor de A mais B. Agora, tudo o que precisamos fazer é criar uma variável que armazenará o valor da nossa função. Agora, a variável aqui é chamada de resultado, que é igual ao número do anúncio. O nome da chamada da função está agora com os dois valores que são cinco e seis, e agora simplesmente imprimimos o resultado, que é igual a 11. É exatamente assim que a parametrização de argumentos e a função de retorno também funcionam A propósito, antes de concluir o vídeo, uma palavra muito rápida sobre a declaração de devolução. É usado para dois propósitos principais, ok? Normalmente, o primeiro objetivo é sair de uma função. Assim, você pode usá-lo para interromper a execução da função. A segunda é retornar um valor real. Então, como exemplo, deixe-me mostrar rapidamente. Se eu dissesse defina e depois cumprimente. Ok, deixe-me adicionar parâmetros vazios aqui. E eu disse, imprima olá. E então eu disse devolver Tudo bem, mas depois de retornar em outra linha, eu também digo imprimir E então, digamos, deixe-me dizer, como casacos, olá Jack, você pode até ver agora que nosso repleto o texto em si está meio ajustado, o que significa que o Python não executará executará Então, se eu fosse executar, você pode ver agora não faz absolutamente nada, mas isso é porque eu ainda não chamei a função. Então, deixe-me vir aqui e dizer cumprimentos e depois colchetes, e aí está Então, se eu fosse executar a função agora, você pode ver que tudo o que ela diz será olá. Por quê? Porque retornar aqui significa que, ei, pare a execução da função, ela não deve ir além dessa linha específica E é por isso que só temos olá. No entanto, se eu remover a instrução de retorno e executar o programa novamente, você pode ver agora que ele diz olá e depois olá Jack. Portanto, esse é outro uso da instrução return, mas você pode usá-la para interromper a execução da função ou, como mostrei anteriormente, você pode usar a instrução return para retornar um valor específico. Obrigado por assistir ao vídeo, nos vemos na próxima aula. 30. Argumentos de palavra-chave: Bem, volte aqui. Quero que falemos agora sobre argumentos de palavras-chave, certo? Funções do Python, elas basicamente nos permitem passar argumentos usando nomes de parâmetros Os nomes dos parâmetros são o que chamamos de palavras-chave. Eles tornarão o código mais legível e flexível, especialmente quando lidamos com muitos parâmetros Agora, até agora estamos lidando com parâmetros como A, B, X, Y, mas deixe-me mostrar outra coisa, ok? Vou criar uma nova função e vamos chamar essa função de descrever, sublinhar pessoa, ok? Então essa função vai descrever o nome, a idade e, digamos, a cidade de alguém , certo? Então, deixe-me adicionar os colchetes lá. E agora, aqui, podemos adicionar o argumento da palavra-chave. Então eu vou dizer nome, idade, e então vamos dizer cidade. OK. E agora, para a função em si, oh, desculpe, eu esqueci de adicionar os dois pontos E agora, a função em si, o que ela vai fazer? Queríamos imprimir: Ok, John tem 30 anos e mora em Londres, só como exemplo, Então, eu vou dizer impressão, colchete e agora a string F. Está bem? E agora casacos e agora suspensórios encaracolados. O espaço para nomes é colchetes, novamente, agora são chamados de perímetro etário. O suporte é antigo. E vou deixar o Python terminar o resto para mim. E aí está. Então, basicamente, a função dirá: Ok, Alex tem 100 anos e mora na cidade de Nova York, só como Então veja isso. Vou chamar a função que você possa ver agora que vou ligar para Alice Obrigado, Python, por fornecer essa sugestão. Então, vou dizer que Alice tem 25 anos e mora Então, se eu executar a função agora, você pode ver que diz: Alice tem 25 anos e mora Muito simples, certo? No entanto, confira isso. Também posso chamar a função fornecendo os valores dos próprios parâmetros . Olha isso, ok? Eu posso dizer descrever uma pessoa. E agora entre parênteses, em vez de dizer: Ok, Alex, 30, Londres, em vez disso, posso dizer que idade é igual E agora coma. E então eu posso dizer que o nome igual a Bob City é San Francisco Você viu o que eu fiz agora? Em vez de fornecer os valores reais para os argumentos diretamente, eu apenas disse: Ei, vou passar os valores para os argumentos da palavra-chave. Então, a idade será de 30 anos. O nome é Bob, a cidade é San Francisco. E, claro, preste atenção ao fato que Bob e San Francisco são cordas. É por isso que eles têm códigos duplos. Enquanto 30 é um número inteiro. Não é uma corda. É por isso que não há códigos. Então, se eu executar a função, você pode ver agora que diz que Bob tem 30 anos e mora em Apesar do fato de que aqui, a idade veio em primeiro lugar. Não dissemos que nome é igual a Bob e depois idade ou cidade. Não. Isso porque o Python simplesmente usará o que descrevemos na própria função Não importará a ordem de todos os argumentos. Python não se importa com isso. Tudo o que importa para Python é: Ok, você me deu os argumentos da palavra-chave, E agora essa é a ordem. Ele examinará a função que diz: Ok, imprima o nome primeiro e depois 8 anos e depois viva Então, esses são os que chamamos de argumentos de palavras-chave. Não é provável que trabalhemos com eles posteriormente neste curso, mas, no entanto, isso é algo que você deve pelo menos conhecer ao trabalhar com Python Então, obrigado por assistir ao vídeo, nos vemos na próxima aula. 31. Variáveis locais e globais: Bem, bem-vindo de volta. Uma última coisa sobre a qual quero falar antes de concluirmos a seção de funções será o conceito de escopo variável. Veja, em Python, ou na verdade, em qualquer linguagem de programação, temos variáveis locais e globais As variáveis têm o escopo que determinará onde elas podem ser acessadas. Agora, as variáveis que estão dentro de uma função serão locais para essa função e você não poderá acessá-las fora dessa função. Embora as variáveis definidas fora de qualquer função sejam globais , por exemplo, ok? X é igual a, digamos 12, certo? Isso aqui é o que chamamos de variável global. Por quê? Porque está sozinho. Não está dentro de nenhuma função , loop ou qualquer outra coisa , está sozinho. Só que X é igual a 12. No entanto, se eu criasse minha própria função e dissesse definir, sublinhar, modificar, variável, colchete, dois pontos, e agora eu dissesse, X O X aqui será o que chamamos de variável local porque está dentro da função que é modificada na variável de pontuação. Então, a variável global de X é 12, a variável local de X é três porque, novamente, esses três aqui estão dentro da função modificável Então, vamos dar uma olhada nisso, ok? Vou mandar minha função imprimir o valor de X, ok? E agora, vou chamar a variável de modificação da função. Qual você acha que será o valor de X aqui? O valor de X aqui será três porque estamos simplesmente chamando a função de variável modificada, que já tem o valor de X igual a três. Então, se eu executar minha função, você pode ver que está ali três. Mas e se eu quisesse chamar a variável global de X igual Quero imprimir esse valor. Tudo que eu preciso fazer é chamar o comando de impressão padrão ou a função de impressão quatro, Python, e então simplesmente dizer imprimir X. Agora, se eu executar o programa novamente, você pode ver três e Novamente, como essa impressão aqui, não é a mesma impressão que está sob a função de modificação da variável. Essa impressão aqui serve para produzir ou imprimir o valor de X, que é o valor local que está dentro da variável de modificação da função. No entanto, nesta impressão X w observe novamente o recuo Não está dentro dessa função, está fora. Então, o X aqui será aquele que pertence à variável global, que é 12. Essa é a diferença entre variáveis globais e variáveis locais. Se você quiser obter esse valor específico de X, que é três, precisará sempre chamar a função que abriga ou que contém esse valor específico, que é, obviamente, uma variável modificada. Mas a variável global, você pode acessá-la em qualquer lugar, desde que não esteja dentro da função. No entanto, podemos realmente modificar o valor de nossas variáveis globais dentro de uma função. Sim, podemos fazer isso. Olha isso, ok? Vou voltar para minha função aqui, certo? E logo abaixo, vou dizer global X. Apenas usando a declaração chamada global , podemos modificar o valor global de X. Agora estou dizendo que X global , X Nesse caso, no momento, estamos simplesmente modificando a variável global Isso é o que estamos fazendo agora, vamos simplesmente modificar a variável global de X. Então, agora, se eu ligar, se eu executar meu programa, você pode ver agora que, em primeiro lugar, a variável modificadora de função X igual a três produzirá três E como agora modificamos a variável global de X para que agora seja três em vez de 12, mesmo quando eu chamo a função de impressão que está fora da função variável modificada, ela ainda produzirá três porque, novamente, dentro dessa função, modificamos a variável global X. Alteramos o volume 12-3 usando a palavra-chave global aqui Então é assim que você também pode modificar as variáveis globais dentro de uma função local. Muito obrigado por assistir ao vídeo. Te vejo na próxima aula. 32. Introdução à seção de estruturas de dados: Bem-vindo à seção de estruturas de dados. E aqui, vamos nos concentrar em três tipos principais de estruturas de dados. Vamos falar sobre listas, dicionários e conjuntos. E, claro, vou destacar para você as diferenças entre esses três. Então, você aprenderá exatamente o que torna uma lista diferente de um dicionário. Você aprenderá exatamente o que é um conjunto. E depois que você aprender a criar seus próprios conjuntos, dicionários e listas, aprenderemos como incorporar loops a Então, digamos, por exemplo, que você tenha uma lista de senhas e queira um loop para percorrer cada senha e fazer algo Você aprenderá como fazer algo semelhante nesta seção específica. E, claro, haverá uma grande variedade de exercícios de codificação diferentes, então, por favor, experimente-os. Também haverá dois desafios de programação, os quais, é claro, vou explicar como resolvê-los. E, claro, assim como em todas as outras seções no final, teremos o principal exercício de codificação que eu quero que você tente Então, por favor, certifique-se de fazer isso sem perder mais tempo, vamos direto 33. Listas: Tudo bem, então vamos começar falando sobre listas. Agora, listas não são novidade para nós. Na verdade, já trabalhamos com algumas listas. Tivemos listas de nomes, listas de carros e assim por diante. Mas uma coisa sobre listas é que elas são o que chamamos de mutáveis O que significa que os itens ou elementos que você tem em uma lista, podemos realmente modificá-los, certo? Então, podemos adicionar à lista. Podemos remover da lista e modificar quaisquer elementos que já existam nessa lista específica. Agora, aqui, eu tenho uma lista de senhas comprometidas Então, a senha usual, um, dois, três, quatro, cinco, QW, TY e assim por diante Agora, quero te mostrar algumas coisas que podemos fazer aqui, certo? Eu posso dizer impresso, ok? E agora, entre colchetes, posso chamar a lista de senhas de comprometimento E agora eu posso fornecer o número de índice do item que eu quero listar. Nesse caso, agora, é o índice número zero. Se eu executar meu programa, você pode ver que será uma senha. Então, a primeira coisa que eu quero que você entenda é que todos os itens em uma lista têm números de índice começando do zero. Então, se eu fosse imprimir o índice número dois, qual você acha que seria a resposta? Sim, vai ser QWERTY. Ok, essa é a primeira coisa que eu quero que você entenda. A seguir, o fato de podermos executar vários tipos de funções em nossa lista. Por exemplo, eu posso dizer, deixe-me chamar a lista novamente, e agora eu posso adicionar essa função aqui chamada append Anexar aqui, em termos técnicos, é o que chamamos de Métodos também são funções, mas são tipos de funções muito especiais. Falaremos sobre métodos um pouco mais tarde. Mas, por enquanto, entenda que temos funções muito especiais que chamamos métodos que você pode aplicar diretamente nas listas e elas farão alguma coisa. Então, agora, o que uma caneta faria é adicionar qualquer novo item que quisermos à nossa lista Como exemplo, posso abrir meus colchetes. E digamos que adicionamos peixe-espada. Está bem? Essa é outra senha muito, muito popular usada por muitas pessoas, ok? Então, eu acrescentei peixe salgado à lista. Então, se eu voltar agora e imprimir minhas senhas comprometidas, você pode ver que o Sordfsh foi adicionado à lista Portanto, este é o primeiro método ou função que eu quero que você entenda que você pode usar com sua lista. A próxima será o que chamamos de função de extensão. Veja, uma caneta com uma caneta, você pode adicionar, você sabe, itens individuais, elementos e assim por diante. Com o Extend, você pode realmente adicionar todos os elementos de outra lista. Então, como exemplo, eu tenho minha primeira lista aqui, senhas comprometidas. E digamos que criamos outra lista de senhas comprometidas. Está bem? É igual, e agora deixe-me abrir os colchetes aqui. E vamos adicionar um novo lote de senhas. Vamos ver. Temos uma das senhas mais comuns que as pessoas costumam usar. Ok, digamos um, dois, três, A, B, C, que tal isso. E deixe-me adicionar mais um. E vamos chamar um cachorro, gato, osso. Você sabe, só uma coisa, certo? Ok, então agora temos duas listas diferentes, certo? Uma para as senhas de comprometimento e outra para as novas senhas de comprometimento. Então veja isso, ok? Posso vir aqui agora e dizer: comprometa as senhas e agora estenda. E agora, entre colchetes, posso dizer algo novo sobre essa senha comprometida. Então, basicamente, estou anexando as novas senhas à lista de senhas antigas E agora, se eu executar meu programa, agora você pode ver que 123 ABC e dog cat Bone foram adicionados à minha lista de senhas comprometidas Agora, outro método que eu quero que você conheça será exatamente o oposto do append , que será removido Então, deixe-me, em primeiro lugar, recortar nossa primeira ou segunda lista e vou modificar essa linha aqui e depois dizer: remova. E agora, entre colchetes, apenas como exemplo, tudo bem, posso fornecer o que eu quero remover, que é um, dois, três, quatro, cinco Então, digamos que eu queria remover esse elemento em particular muito, muito fácil. Vou apenas dizer Não remova, execute, e agora você pode ver que 12, três, quatro, cinco não estão mais na lista de senhas comprometidas. Então, muito, muito simples. Outra coisa que podemos fazer é simplesmente limpar. Podemos limpar a lista inteira como exemplo. Então, se eu viesse aqui agora, troque remove para Clare, certo? Não preciso ter nada dentro dos colchetes. Então, só Clare e Iron, aí está, vai ficar vazio Não há mais nada na lista. Portanto, existem alguns outros métodos com os quais você pode seguir. Acho que são cerca de 11 deles. Mas deixe-me te dar mais dois, certo? Outra coisa que podemos usar será reversa, certo? Então, basicamente, o que isso simplesmente fará é inverter a ordem dos itens na lista. Isso vai reverter a ordem. Então, se eu executar isso, aí está, começa com Uh, deixe-me entrar e volta até a senha E mais um que eu quero mostrar que pode ser muito útil seria o método de cópia. Então, como exemplo, aqui, deixe-me vir aqui e eu vou criar um backup, ok? Então, faça backup e, digamos, sublinhe as contas, ok? Posso atribuir o backup às minhas contas de backup variáveis e agora posso dizer senhas iguais e agora comprometidas, e agora pontuar, copiar e agora minhas contas de backup variáveis e agora posso dizer senhas iguais e agora comprometidas, e agora pontuar, copiar e agora entre colchetes. Tudo bem, então, basicamente, o que estou fazendo agora é fazer um backup dessa lista, dessa lista de senhas de comprometimento e, em seguida, atribuí-la às contas de backup variáveis Então, agora, se eu fosse imprimir as contas de backup e executar, você verá agora que temos exatamente a mesma lista, exatamente os mesmos itens. Então, isso é o que você usaria para criar backups ou copiar os itens em uma lista específica. Então, como eu disse, você tem alguns outros, como sort, pop e assim por diante. Falaremos sobre métodos um pouco mais tarde no curso. Mas, por enquanto, essa é a introdução às listas e aos métodos que você pode usar para trabalhar com elas. Obrigado por assistir. Te vejo na próxima aula. 34. Usando loops em uma lista: Continue trabalhando com nossas listas e quero que tentemos escrever um programa que simplesmente imprima os dias de alta atividade. Agora, o que você vê na minha tela é uma lista de tentativas de login por dia. Então, vamos escrever um programa que examinará essa lista e imprimirá os dias de alta atividade. No entanto, para determinar qual seria uma alta atividade, digamos que as tentativas de login sejam dez ou mais. OK. Então, para fazer isso, vamos criar uma variável que armazenará os dias de alta atividade. Então, posso dizer alto e depois sublinhar atividade nos dias de pontuação. OK. Agora, isso será igual a, digamos, tentativas. Está bem? Queremos criar um loop de quatro que percorrerá a lista, ok? Então, temos nossos colchetes aqui, e então eu posso dizer tentativa: Ok, quatro, lembre-se agora tentativa em onde estamos verificando o número de tentativas Ele estará na lista de tentativas de login. Então, vou dizer nas tentativas de login. E agora ainda não falamos sobre isso, mas você também pode incluir uma instrução if diretamente dentro de um loop de quatro. Então, queremos criar um loop que percorra nossa lista e, se a tentativa for dez ou mais, imprimiremos um dia de alta atividade. Portanto, tente por tentativa nas tentativas de login. Agora, se a tentativa for maior ou igual a dez. Você entendeu, ok? Então, agora, o que deveria acontecer? Vamos simplesmente imprimir. E então, entre parênteses, podemos dizer algo como dias de alta atividade, cólon e, em seguida, coma, alto sublinhado Agora, se eu executar o programa, aí está. Nos dias de alta atividade, temos dez, 12, 15 e 20. Então, é assim que podemos executar quatro loops para percorrer nossa lista e depois imprimir ou fazer outra coisa. Então, vou te fornecer um exercício, um desafio no próximo vídeo. Por favor, analise e tente responder às perguntas. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 35. Dicionários: Vamos falar sobre dicionários. E, assim como nas listas, você pode modificar, adicionar remover elementos em seus dicionários No entanto, a principal diferença entre suas listas e seus dicionários é que, diferentemente sua lista, em que você tem elementos, valores ou itens individuais em seu dicionário, teremos o que chamamos de par de valores-chave Então, como exemplo, eu posso ter um dicionário chamado user info, e agora é igual a eu vou usar os colchetes, ok, normalmente usamos os colchetes para dicionários . Então, aqui, eu posso ter informações como o nome de usuário, que seria admin. Então, aqui, o nome de usuário será a chave, enquanto admin será o valor da chave. Também podemos ter uma senha, ok? E digamos que a senha aqui seja “deixe-me entrar”, apenas como exemplo. E poderíamos até ter outro, como, digamos, o último login. Ok, último login, ligue, e eu posso ter uma data, digamos, 2024 10-22, só como exemplo, Portanto, observe que sempre que você estiver adicionando seus pares de valores-chave em seu dicionário, no final de cada linha, você terá a vírgula Mas então, para o último par de valores-chave, não há necessidade de adicionar a vírgula no final, certo? Então, anote isso. Então é isso que chamamos de dicionário, certo? Temos nossos pares de valores-chave, nome de usuário, o valor é admin, temos a senha da chave, o valor é deixe-me entrar. E, claro, temos a chave do último login e, em seguida, temos a data como valor. Então, a partir daqui, eu poderia decidir imprimir as informações. Eu poderia vir aqui e depois dizer imprimir. E agora, se eu quisesse imprimir, digamos, o nome do usuário, eu começaria dizendo as informações de sublinhado do usuário, e agora os colchetes regulares aqui, eu simplesmente diria o nome do usuário, e pronto Então, agora, se quiser executar, você pode ver que o administrador foi fornecido. Então é assim que você pode imprimir os valores das chaves em seu dicionário. Você simplesmente indica a chave cujo valor deseja imprimir e o programa fará o resto. Bem. Agora, assim como eu disse com os dicionários, você pode facilmente adicionar ou modificar os elementos em seu Então, por exemplo, se eu quiser adicionar algumas informações novas, como, digamos, o e-mail do usuário, tudo o que preciso fazer agora é vir até aqui e simplesmente dizer informações de sublinhado do usuário, OK E agora eu terei os colchetes regulares, e agora vou simplesmente adicionar a chave aqui, que será um e-mail E então, de forma muito simples, vou dizer iguais, e agora posso adicionar o endereço de e-mail ali mesmo Digamos que seja administrador em labcyber.com. Tudo bem. Só como exemplo, certo? Então, se eu viesse aqui agora e imprimisse as informações do usuário, deixe-me remover a chave de lá. Então, queremos imprimir todas as informações do usuário aqui. Eu executo o programa e aí está. Vai imprimir tudo. Então, o nome de usuário é admin. A senha é “Deixe-me entrar”. O último login é nesta data e, em seguida, o e-mail ali mesmo é do administrador em labsyber.com Também poderíamos atualizar. Também podemos atualizar as informações em nosso dicionário. Então, mais uma vez, por exemplo, se eu quisesse atualizar, digamos a senha, certo? Então, posso dizer as informações de pontuação do usuário Oder, e agora entre colchetes, é claro, a chave aqui será a senha, certo? Então, senha. E agora preciso fornecer a nova senha. Então, vamos chamá-lo de peixe SOD. Peixe SOT E aí está. Se eu executar meu programa, agora você pode ver que a senha realmente mudou para SOD fish Assim como com suas listas, você pode adicionar novos pares de valores-chave ao seu dicionário, você também pode modificar os valores das chaves existentes. Além disso, assim como nas listas, temos uma variedade de métodos que podemos realmente aplicar em nosso dicionário. Então, o primeiro sobre o qual eu quero falar aqui será o método G, que recuperará o valor associado a uma chave Então, por exemplo, deixe-me remover todas essas informações aqui, certo? Se eu quiser imprimir as informações do usuário, ou quando obtiver o nome do usuário, o valor do nome de usuário chave, tudo o que eu preciso fazer aqui é dizer imprimir informações do ponto do usuário e depois ponto G. Tudo bem. E agora, entre colchetes, adicionarei novamente a chave que é o nome do usuário Então, isso aqui deve imprimir o nome do usuário. Se eu correr, aí está o administrador. Assim como na sua lista usamos caneta, cópia e assim por diante. Também temos exatamente os mesmos métodos para o dicionário, e aqui está um deles. Outro método serão as chaves, nas quais você pode simplesmente imprimir todas as chaves que temos em um dicionário. Então, deixe-me remover todas as informações aqui. Então, se eu correr, aí está. Temos todas as chaves que são nome de usuário, senha e último login. Também temos o oposto , que seriam valores. Então, é meio que uma chave. Vou mudar isso aqui para valores e, se eu executar, agora teremos todos os valores listados na saída. Agora, também podemos criar um loop que percorrerá nosso dicionário. E como podemos fazer isso? Bem, podemos usar o loop de quatro porque temos um dicionário. Lembre-se de que os quatro loops funcionam bem com listas, dicionários e Então eu vou dizer quatro, e agora eu vou ter que dizer Key, ok? Então, para a chave e, em seguida, o valor da vírgula, e agora as informações de sublinhado do usuário, temos que adicionar outro método chamado itens de itens e agora colchetes, dois pontos e pronto É assim que você criará seu loop que percorrerá seu dicionário. Então, ele dirá um valor de vírgula de quatro chaves e, em seguida, no dicionário de nomes, e então você adicionará o método items a ele E agora tudo o que precisamos fazer a partir daqui é simplesmente imprimir as informações. Então, eu vou dizer imprimir. E vamos usar a string F. Então, nossos colchetes regulares primeiro. E agora a corda F e agora os casacos, colchetes para segurar e exibir a chave, e agora teremos dois pontos, e agora os outros colchetes para segurar o que manter colchetes para segurar e exibir a chave, e agora teremos dois pontos, e agora os outros colchetes para segurar o que manter o valor. E agora, se eu correr, aí está, use o nome Admin, a senha, deixe-me entrar e, claro, a data do último login ali mesmo. Assim, você também pode usar loops para percorrer seus dicionários, suas listas e Então, isso é tudo para dicionários. Joy no próximo vídeo, onde agora daremos uma olhada no que chamamos de dicionários aninhados. Te vejo então. 36. Dicionários aninhados: E de volta. Na lição anterior, falamos sobre dicionários, mas agora vamos dar um passo adiante para falar sobre dicionários aninhados Então, basicamente, dicionários dentro de outro dicionário. Até agora, estamos lidando com uma única informação de usuário. Mas e se tivéssemos vários usuários, certo? Como podemos criar isso? Então, o que vou fazer aqui é mudar o nome de informações do usuário para credenciais do usuário, certo? Esse será o novo nome de um dicionário, e agora colchetes. Agora podemos adicionar o primeiro dicionário NSTA que conterá as informações para Admin Então eu vou vir aqui, digitar Admin. Esse será nosso primeiro usuário. E agora as credenciais, colchetes encaracolados. Vamos usar a senha. A senha está aqui. Os dois pontos, e então podemos usar o administrador 123 Tudo bem? Então, o primeiro usuário aqui , admin, a senha será admin 123, e podemos adicionar outra credencial que seria o último login Então, no último login, vamos colocar esse em nossos códigos. Vamos fazer login. Agora cólon. Vamos adicionar as datas. Digamos, algo como 202-04-1019 Tudo bem. Só como exemplo, há uma pequena seta aqui. Deixe-me ver o que exatamente estou fazendo de errado? Ah, aqui com a senha, a coluna deve estar do lado de fora. Eu cometi um erro lá. Ok, muito melhor. Portanto, este é o primeiro dicionário Nesta que temos administrador que tem os pares de valores-chave. Ele tem a senha chave, e o valor para uma senha aqui será admin 123. E então a outra chave aqui será o último login, e o valor é, obviamente, 2024, 1019 Mas podemos adicionar outro dicionário. Eu vou dizer vírgula. E agora podemos adicionar outro usuário. Vamos chamar essa pessoa de usuário um. E vou deixar o repl fazer o resto, preencher todas as informações e pronto Portanto, o dia da senha será usuário um, um, dois, três e, em seguida, o último login também será Não, vamos alterar a data aqui para outra. Então, vamos com 06 e depois talvez com 14. Tudo bem, para variar. Então, isso aqui é o que chamamos de dicionário aninhado O dicionário está dentro de outro dicionário. E, claro, podemos acessar as informações de forma bastante simples Então, por exemplo, se eu quiser imprimir a senha do administrador, como posso fazer isso, ok? Posso simplesmente dizer imprimir. E agora, entre colchetes, vou dizer credenciais de sublinhado do usuário E agora, os colchetes normais e as camadas internas duplas, vou dizer admin OK. E agora queremos imprimir a senha do administrador. Então, entre colchetes novamente, vamos adicionar a senha. E aí está. Então, se eu executar o programa agora, você pode dizer que diz Admin de um a três porque, ao dizer: Ei, imprima do dicionário de credenciais do usuário, queremos que você imprima o valor da senha chave pertencente ao administrador do usuário E é por isso que temos o Admin 123. Ou eu poderia dizer, ok, imprima e colchetes, as credenciais do usuário, e vamos imprimir o último login do usuário Como vamos fazer isso? Novamente, muito simples Vou simplesmente entrar aqui e dizer usuário um, e agora novos colchetes e, em seguida, simplesmente colocar a última chave de login, última na pontuação, login E aí está. Então corra, e aí está 202-04-0614 Então, aqui está um exemplo de dicionários aninhados. E isso pode ser particularmente útil se você estiver tentando criar funções ou programas para firewalls ou uma ferramenta de check-in de pastores ou uma ferramenta que verifica as credenciais do usuário, coisas assim, certo Você pode usar dicionários aninhados para esses tipos Então, obrigado por assistir e, claro, nos vemos na próxima aula. 37. Conjuntos: Continue com as estruturas de dados, e a próxima será o que chamamos de conjuntos. Agora, na minha tela aqui, parece que eu tenho duas listas diferentes que são semelhantes nos elementos dentro delas. No entanto, observe que as senhas de comprometimento usam colchetes regulares, enquanto as novas senhas de comprometimento usam chaves curvas. Agora, acredite ou não, isso é extremamente importante porque os colchetes regulares indicam que esses itens estão em uma lista, enquanto os colchetes indicam que os itens não estão em uma lista, mas dentro de um conjunto indicam que os itens não estão em uma lista, mas dentro de Então, a pergunta natural agora seria, bem, qual é a diferença entre uma lista e um conjunto? Há muitos deles. O problema é que, com seus itens em uma lista, você pode encomendá-los. Você pode encomendá-los. Você pode referenciá-los usando um número de índice, enquanto em um conjunto, eles não estão em nenhuma ordem específica. Eles estão encomendados, certo? Na verdade, eu provo isso para você. Se eu fosse imprimir agora as senhas comprometidas, certo? E então eu também imprimo as novas senhas de comprometimento. Examine o pedido. Para a lista real, você pode ver que ela segue a mesma senha de pedido, 1234 QWERTY Mas com o conjunto, é quase aleatório. Partiu às 123, quatro, depois foi para o ABC 123, foi para o Monkey e assim por diante Então, o problema é que, com os conjuntos, os itens não estão em nenhum tipo específico de ordem. Outra grande diferença é que sua lista permitirá duplicatas, certo? Então, por exemplo, eu poderia adicionar na minha lista 123, quatro novamente. No entanto, se eu fizesse o mesmo no meu set, você notaria a diferença. Então, se eu executar, novamente, você pode ver agora na lista, 1234 é repetido Enquanto estiver no conjunto, 1234 é listado apenas uma vez. Isso não é permitido. Você não tem permissão para ter duplicatas em seus conjuntos. E é por isso que sempre que você está tentando criar uma função ou um programa envolvendo, exemplo, uma lista de itens que devem ser exclusivos, como, digamos, senhas, endereços de e-mail ou contas de usuário, você quer usar conjuntos para esses itens em vez de uma lista, porque você sabe que, ok, dois usuários não podem ter exatamente as mesmas credenciais Portanto, será mais ideal usar um conjunto. Portanto, os conjuntos geralmente são muito mais rápidos de executar. O programa pode ser executado em um conjunto muito mais rápido do que uma lista. Agora, ambos são mutáveis. Suas listas e seus conjuntos são mutáveis, o que significa que você pode fazer alterações Você pode adicionar elementos, mover elementos, modificá-los. E é mais ou menos isso. Mas, assim como com suas listas, também temos operações ou métodos que podemos usar em nossos conjuntos. Na verdade, os chamamos de operações matemáticas como interseção de união, diferença Deixe-me te mostrar, ok? Deixe-me remover isso aqui. E agora, deixe-me vir aqui e vamos trabalhar com dois conjuntos diferentes. Está bem? Acho que não preciso mais dessa linha, na verdade. Ok, então aqui, definimos um, definimos dois e, em seguida, ambos têm dois endereços IP. Agora, eu poderia decidir encontrar endereços IP comuns em ambos os conjuntos, certo? Então, eu poderia dizer, por exemplo, IPs de sublinhado comuns agora serão iguais ao conjunto um e agora Está bem? Então, interseção, certo? Interseção e agora defina dois. Então, a interseção aqui é o que chamamos de operador que encontrará os elementos comuns em ambos os conjuntos Então, se eu aparecesse agora e dissesse imprimir, IPs comuns e eu executo, você verá que 10.0.0.1 é comum É por isso que está impresso. Mas também temos o que chamamos operador matemático da União. Então eu posso mudar um símbolo aqui para o símbolo do sindicato. O que isso fará é como o método extend for list, em que você adicionará os elementos de uma lista em outra. Então, agora, se eu correr, você pode ver que agora temos todos os endereços IP. No entanto, observe que, novamente, por se tratar de um conjunto, o IP 10.0.0.1 presente em ambos será listado apenas uma vez, certo Temos outro operador aqui, que será o operador da diferença. Basta usar o sinal de menos. Agora, o que isso fará é encontrar elementos que estão presentes em um conjunto, mas não no outro. Então, se eu executar isso agora, você pode ver que 192 um.um.01 é um elemento que está presente no primeiro conjunto, mas está ausente no segundo conjunto mas está ausente Então, podemos fazer o oposto, ok? Posso dizer conjunto dois menos um, e agora isso nos dará o 19216 oito.um.102, que está, obviamente, presente no conjunto dois, mas não presente no conjunto um . Também temos métodos como adicionar, remover, Clare. Então, por exemplo, se eu quisesse adicionar um novo endereço IP para definir um, tudo o que eu precisaria fazer aqui é dizer definir um e agora adicionar pontos, e agora entre colchetes, posso adicionar o novo endereço IP, o novo endereço IP, então eu posso dizer 192.168.0.10 Tudo bem, só como exemplo. Então, agora, se eu fosse imprimir o primeiro conjunto, corra e pronto. Você pode ver agora que 192-16-8010 foi de fato adicionado ao Você também pode usar outros métodos, como remover, limpar e assim por diante. Sinta-se à vontade para pesquisar isso no site do Python, se quiser Então é isso para os sets, obrigado por assistir. Te vejo na próxima aula. 38. Programando conjuntos e loops de desafios: Volte. Agora, quero orientá-lo um exercício que tem duas tarefas. E na minha tela, você pode ver que temos um dicionário de registros diferentes. Você pode ver os pares de valores-chave lá, o nome de usuário e, em seguida, os IPs e, em seguida, os status, certo Portanto, as duas tarefas são as seguintes. Em primeiro lugar, queremos identificar e imprimir todos os endereços IP exclusivos nos registros. E depois, em segundo lugar, é procurar um endereço IP especial que possa existir. Se existir, então vamos imprimir alguma coisa. Se não existir, podemos imprimir outra coisa. Portanto, você é mais do que bem-vindo a pausar o vídeo e realmente tentar resolver essas duas tarefas sozinho Uma dica que vou dar é que definitivamente teremos que trabalhar com algum tipo de quatro loops. Eu examinaria cada registro e, em seguida procuraria especialmente o valor dos endereços IP, e teríamos que passar os resultados para um conjunto, porque lembre-se de que, com conjuntos, não teremos duplicatas E como estamos procurando endereços IP exclusivos, conjuntos seriam a opção ideal. Assim, você pode pausar o vídeo e experimentá-lo sozinho. Caso contrário, vou explicar como podemos resolver as duas tarefas. Então, primeiro de tudo, na primeira tarefa, precisamos identificar todos os endereços IP exclusivos. Então, uma coisa que poderíamos fazer agora é simplesmente criar um conjunto que armazenará esses endereços IP exclusivos. E vou chamar isso de conjunto de IPs exclusivos. OK. E agora, o que eu vou fazer é porque é um cenário, eu vou abrir meus lugares encaracolados Mas agora pense sobre isso, ok? Queremos examinar cada registro. Em seguida, procure o valor da chave I P. Então veja isso, ok? Vou dizer log, e agora vou abrir meus colchetes porque queremos definir qual é a chave, que é IP Então, basicamente, estamos dizendo: Ok, para cada log, vamos acessar o IP, e agora vou apresentar meus quatro loops dizendo quatro logs de login. Certo? Então, o que fizemos agora foi criar os quatro loops que percorrerão cada registro em nosso dicionário de registros e procuraremos especificamente o valor da chave IP. Então, como passamos tudo para um conjunto, tudo o que precisamos fazer agora é simplesmente imprimir. E então, entre colchetes, podemos dizer algo como endereços IP exclusivos, dois pontos e, em seguida, simplesmente adicionar uma vírgula e, agora, IPs de sublinhado exclusivos E aí está. Tenho certeza de que você esperava que isso exigisse mais algumas linhas de código. Então, parabéns se você conseguiu resolver isso sozinho, independentemente de serem duas linhas ou três linhas ou quatro linhas ou cinco linhas porque existem outras maneiras de resolver a tarefa, mas essa é facilmente a maneira mais curta e eficaz Então, deixe-me seguir em frente e executar o programa agora mesmo , apenas para ter certeza de que funciona, e pronto. Incrível. Então, temos tudo lá, 182, 168, 11, um ponto cinco, um a dois, um ponto quatro e depois um ponto Incrível. Legal. Tudo bem. A próxima será a tarefa dois. Está bem? Então, o que estamos procurando aqui? Estamos procurando um IP especial que seja igual a 182168, um Portanto, podemos dizer que um IP especial é igual a 19216814. Então, o que vamos fazer agora? Teremos que usar a instrução Is porque estamos dizendo: Ok, se esse endereço IP especial foi encontrado aqui, faça isso, senão, faça outra coisa. Então, vou dizer se um IP especial de sublinhado está em qual N está em nosso conjunto exclusivo Desculpe, sublinhado exclusivo, IPs exclusivos, IPs sublinhado bastante exclusivos. O que queríamos fazer. Queríamos dizer imprimir, e então podemos dizer, você sabe, um endereço IP especial foi encontrado, ok? Senão. Oh, desculpe por isso E então podemos dizer outra coisa: Imprimir. E então o endereço IP especial não foi encontrado. E aí está. OK. Vamos seguir em frente, executar o programa, e aí está. O endereço IP especial foi realmente encontrado. Agora, se eu mudar quatro aqui para, digamos, dez, só para ter certeza de que está realmente funcionando, e eu executar o programa novamente, aí está. O endereço IP especial não foi encontrado. Então, mais uma vez, parabéns se você conseguiu resolver uma ou ambas as tarefas sozinho. Se não, não se preocupe. Tudo isso faz parte do processo de aprendizado, mas vou lhe dar um exercício agora que você terá que tentar sozinho. Então, nos vemos na próxima aula. 39. Programando dicionários e loops: Bem vindo de volta. Então, decidi adicionar mais uma tarefa para torná-la a terceira tarefa, e vai ser um pouco mais complicado. E essa tarefa envolverá a contagem do número de tentativas de login malsucedidas por usuário. Então, basicamente, vamos examinar cada registro, contar o número de vezes um determinado usuário falhou em seu status e, em seguida, simplesmente imprimir que Ale tem, você sabe, quatro flechas, Bob tem uma falha e assim por diante, você sabe, algo parecido Portanto, você pode pausar o vídeo e tentar resolver essa tarefa sozinho Se não, vamos analisar os dois juntos. Então, como eu disse anteriormente, tenho meu arquivo do bloco de notas aqui porque quero que resolvamos isso logicamente, ok Então, vamos passo a passo. A primeira pergunta aqui é essa. Vamos lidar com um conjunto, um dicionário ou uma lista? Vamos pensar sobre isso, certo? Obviamente, não pode ser um conjunto porque os conjuntos não aceitam duplicatas Então, se vamos usar um conjunto aqui e Bob teve uma tentativa de login com falha, na e Bob teve uma tentativa de login com falha, segunda vez que Bob tiver uma tentativa malsucedida, o conjunto não o aceitará porque lembre-se, conjuntos não aceitam duplicatas Portanto, os conjuntos não funcionarão aqui. Também não pode ser uma lista porque pense bem, ok? Precisamos associar o nome do usuário ao número de vezes que eles falharam, e os dicionários são ótimos para trabalhar com pares de valores-chave Portanto, a chave aqui será o nome do usuário e, em seguida, o valor será o número de vezes que esse nome de usuário específico falhou em seu status. Então, vamos trabalhar com um dicionário. Portanto, precisamos de um dicionário para armazenar o nome do usuário e suas respectivas tentativas de login com falha, certo? OK. Agora, o que precisamos fazer para realmente descobrir o número de vezes que cada usuário preencheu? Precisamos criar um loop de quatro. Então, o loop percorra cada registro, certo? E então um loop, quando passa por um log, o que estamos procurando exatamente? Queremos procurar o status que diz falha. Não estamos interessados no sucesso. Estamos interessados em falhar. Então, podemos dizer se o status. Então, se status, é igual a falha. O que nós queremos fazer? Queremos identificar o nome de usuário associado a essa falha. Então, vamos extrair o nome do usuário, ok? Vamos extrair o nome de usuário e então podemos armazená-lo em uma variável chamada, digamos nome de usuário, certo? Assim, podemos armazenar os nomes de usuário na variável nome de usuário. Então, uma vez que esse nome de usuário tenha sido encontrado, deixe-me corrigir este extrato. Ok, então, quando se descobre que um nome de usuário tem um status ou falha, há dois cenários possíveis aqui. Pense nisso, ok? Ou é a primeira vez que o nome de usuário teve uma tentativa de login malsucedida, ou pode ser a segunda vez, terceira ou quarta vez. Essencialmente, pode ser que não seja a primeira vez. Está bem? Então, precisamos criar condições para os dois, que possamos dizer se é a primeira vez. Ok? Podemos dizer, certo, o nome do usuário aqui, a pontuação é zero porque é a primeira vez, ok? No entanto, se não for a primeira vez, se não for a primeira vez, precisamos adicionar uma, ok, e depois adicioná-la ao registro anterior. Então, se for a primeira vez, você começa do zero e obtém um. Mas se não for a primeira vez, se for a segunda ou terceira vez, vamos simplesmente adicionar um ao seu registro anterior. Espero que isso faça sentido. E, finalmente, podemos simplesmente imprimir as tentativas de login malsucedidas. Está bem? Assim, você pode pausar o vídeo novamente e tentar resolver essa tarefa sozinho Se não, vamos escrever o programa juntos. Ok, então o que estamos fazendo, primeiro de tudo? Estamos criando nosso dicionário. Então, vou chamar o dicionário de tentativas fracassadas, ok? Equals, e depois Curly Braces, ficarão vazios porque não há nada lá Então, em seguida, virão os quatro loops. Eu vou dizer que para os registros de login, dois pontos. E agora, o que estamos procurando? Estamos procurando verificar se o nome de usuário tem o status de falha. Então, especificamente, estamos procurando verificar se o status é uma falha. Então, eu vou dizer, eu registro, e agora queremos segmentar o status, certo? Então, se o status aqui é igual, Oh, desculpe por isso. Deveria estar lá fora. Então, se o status é igual ao fracasso. F. Se for igual a uma falha, o que estamos procurando é extrair o nome do usuário Então, vou dizer que o nome de usuário será igual a. E agora vamos extrair o nome. Eu vou dizer log, e agora entre colchetes, nome de usuário. Deixe-me adicionar os códigos ali mesmo. E aí está. Ok, então o que fizemos até agora? Em primeiro lugar, criamos as tentativas fracassadas do dicionário. Agora, criamos nossos quatro ciclos para percorrer cada registro nos registros e, em seguida, procurar qualquer registro cujo status seja igual a falha. Quando você encontrar esse status igual a falha, vamos extrair o nome do usuário e atribuí-lo à variável nome de usuário. Agora lembre-se, haverá duas condições. É a primeira vez que esse nome de usuário tem o status de falha ou não é a primeira vez? Então, veja isso. Eu vou dizer que, se usar um nome OK, não é. Como verificamos se é a primeira vez? Se não estiver nas tentativas fracassadas? Está bem? Então, ao dizer que, se esta é a primeira vez que estamos realmente descobrindo que esse usuário tem um registro falhado, podemos verificar se usar o nome não está nas tentativas fracassadas. O que nós queremos fazer? Queremos dizer que foram tentativas fracassadas. E agora, entre colchetes, usar um nome será igual a zero No entanto, se estiver funcionando, desculpe por isso. Deixe-me tentar falhar. Tentativa. Na verdade, eu peço desculpas Eu cometi um erro com as tentativas. Que ela seja T para o S ta ta ta ta. Eu peço desculpas. Deixe-me adicionar meu T lá e adicionar meu T lá. Ok, então, se não for a primeira vez, se for a segunda vez, a terceira vez, o que estamos fazendo? Estamos dizendo tentativas fracassadas. E agora, use um nome. Usar um nome será igual mais igual a um. Porque vamos incrementar o valor. Se era um antes, agora vai se tornar dois, se era dois antes, agora vai se tornar três e assim por diante. Quero ressaltar o fato de que observe que a segunda tentativa fracassada aqui está do lado de fora. Não está dentro dessa declaração If, ok? Porque aqui, a linha 21 22 serve apenas para verificar se o nome de usuário não existia anteriormente. E agora, a segunda tentativa de campo aqui é para verificar se, de fato, a tentativa fracassada já foi registrada anteriormente e agora estamos incrementando Então, tudo o que precisamos fazer agora é imprimir Ok. E então certifique-se de que está lá fora, imprima. E agora, entre colchetes, podemos dizer algo como tentativas de login preenchidas por usuário e, em seguida, continuar, e então podemos simplesmente adicionar tentativas preenchidas de sublinhado E aí está. Ok, então espero que isso funcione. Vou executar o programa, e aí está. Incrível. Então, Bob tinha três anos. Alice tinha dois anos e Dave tinha um. Eu acho que isso está correto. Bob tem um aqui, um, um que é três. Ok, Alice tem. Alice teve sucesso aqui. Ok, isso é um fracasso, dois, ok. E então Dave é um. E, claro, Carol não jogou porque Carol tinha apenas um tronco e teve sucesso Então, é basicamente isso na solução dessa tarefa específica. Então, mais uma vez, criamos um dicionário chamado tentativas fracassadas. Criamos um loop para percorrer cada registro e dizer: Ok, se encontrarmos um status que seja falha, queremos verificar primeiro, extrair o nome de usuário associado a essa falha e, em seguida, verificar se o nome de usuário esteve em nossas tentativas fracassadas anteriormente ou se é a primeira vez. Se for a primeira vez, atribuo a eles o valor zero e, se não for a primeira vez, simplesmente adiciono um ao valor anterior. A propósito, uma confusão você pode estar tendo aqui é: espere, Alex, por que aqui na linha 21 22, se é a primeira vez que o recorde falha, que o NM tem um registro de falha, por que não dizer igual a POR Z NÃO? O motivo é que, na linha 23, nós , independentemente disso, adicionaremos um ao valor, seja na primeira vez ou na segunda vez, então isso nem importa. Espero que você entenda o que estou dizendo, certo, porque isso vai acabar. Então, se for a primeira vez, certo, em primeiro lugar, o programa dirá: Ok, número do seu campo de Ts é zero na linha 22 e, em seguida, na linha 23, ele adicionará um de qualquer maneira. É por isso que atribuímos zero aqui e não um. Se atribuirmos uma aqui , automaticamente, quem teve apenas uma tentativa fracassada agora terá duas contra seu recorde E para provar isso para você, você pode ver que agora Dave tem apenas uma tentativa fracassada de login, certo? Se eu viesse aqui agora e, em vez disso, trocasse zero por um e execute o programa, veja só. Dave agora tem dois, e é por isso que fizemos esse 10 primeiro, porque sabemos que na linha 23, logo na próxima etapa, um será adicionado ao registro desse usuário independentemente de ser ou não primeira vez ou a segunda vez Então, espero que você entenda o que fizemos lá. Obrigado por assistir e, claro, nos vemos na próxima aula. 40. Projeto de sistema de autenticação: Tudo bem, então bem-vindo ao desafio de programação em que vamos criar para nós mesmos um sistema de autenticação muito básico Vamos aplicar tudo o que aprendemos até agora , de variáveis a funções, a loops e, claro, os dicionários mais recentes Agora, eu já escrevi o programa. Essa é a saída. Então, a forma como o programa vai funcionar é assim. no início, o usuário verá três opções para se registrar, fazer login ou simplesmente sair do programa. Agora, se eles disserem três, ele sairá imediatamente do programa e encerrará todo o sistema de autenticação. No entanto, se eles escolherem um e pressionarem Enter, agora eles serão X e fornecerão um nome de usuário. Eu vou com John, deixe-me fornecer minha senha como senha, e aí está. O registro será bem-sucedido. Agora, se eu fosse digitar um novamente e tentasse usar exatamente o mesmo nome de usuário John para criar uma nova conta, o sistema verificaria se, Oh, John já existe, tente um nome de usuário diferente. Portanto, nosso programa verificará se o nome de usuário já existe. Agora, para o número dois, se tentarmos fazer login, ele solicitará o nome de usuário. Agora, se eu disser John, certo, e depois fornecer a senha correta, você pode ver agora que vai dizer que o login foi bem-sucedido. Bem vindo de volta. Agora, se eu tentar fazer login novamente com exatamente o mesmo nome de usuário, John, mas desta vez eu usei a senha obviamente errada, ela dirá nome de usuário ou senha inválidos , tente novamente Então, esse será nosso sistema básico de autenticação. É assim que vai funcionar. E o que eu quero fazer agora é trazer meu arquivo do Bloco de Notas aqui só para dar uma ideia do que vamos trabalhar com Então, obviamente, precisaremos de um dicionário que armazene as credenciais do usuário porque teremos que comparar e ver se o novo nome de usuário que o usuário deseja inserir já foi criado antes, se a senha estiver correta, coisas assim E vamos usar um dicionário porque teremos que criar o par de valores-chave, usá-los e o software de senhas, usá-los será a chave e, em seguida, o valor da chave será a senha. Portanto, os dicionários serão úteis aqui. Vamos precisar de duas funções diferentes. A primeira função será registrar o usuário e, em seguida, a outra será fazer o login do usuário. Agora, para que a função real registre o usuário, o que precisamos? Em primeiro lugar, teremos que pedir ao usuário que forneça o nome de usuário e, em seguida, teremos que ter algum tipo de declaração EL que verificará se o nome de usuário já existe. Se isso acontecer, peça outro nome de usuário. No entanto, se for um nome de usuário totalmente novo, o programa poderá continuar solicitando a senha. Depois que o usuário fornecer o nome de usuário e a senha, teremos que criar o nome de usuário, senha, chave, valor, pagamento. Eu vou te mostrar exatamente como fazer isso. Feito isso, podemos dizer que o registro foi bem-sucedido, de forma bastante simples Para que a função faça login no usuário existente, novamente, teremos que solicitar que o usuário forneça o nome de usuário e a senha. E então teríamos que verificar se o nome de usuário corresponde à senha que já foi armazenada no dicionário. Se for falso, imprimiremos nome de usuário e senha inválidos Caso contrário, se for verdade, se a senha e o nome de usuário corresponderem, podemos dizer que o login foi bem-sucedido. E, finalmente, a terceira etapa será criar o sistema de autenticação real, no qual o usuário terá três opções para se registrar, fazer login ou sair. E dependendo da opção escolhida pelo usuário, teríamos que chamar a função relevante Então, vamos construir esse sistema de autenticação do zero. Você está animado? Espero que você esteja. Vamos começar imediatamente. 41. Passo 1: crie a função de registro: Então, a primeira coisa que faremos será criar a função que registrará o usuário. No entanto, vamos criar um dicionário que será usado para armazenar as credenciais do usuário Então, para o dicionário, podemos chamá-lo de credenciais de sublinhado do usuário Tudo bem, iguais, e então vamos usar nossos coletes Colly. Tudo bem. Agora, para a função real de registrar nosso usuário, na verdade, deixe-me adicionar a nota lá bem rápido. Função para cadastrar usuário. OK. Vamos definir a função. Eu vou morrer e, em seguida, digamos, registrar o usuário underscore Ligue. Agora, o que precisamos? Em primeiro lugar, precisamos pedir ao usuário que insira o nome do usuário. Podemos atribuir isso a uma variável. Vamos chamar a variável nome de usuário igual a. Agora, vamos solicitar que o usuário forneça a entrada do nome de usuário e, em seguida, podemos dizer que digite seu nome de usuário. OK. Apenas como exemplo, vamos pressionar Enter. Deixe-me deixar algum espaço aqui entre os dois pontos e os códigos ali para ter algum espaço Então, agora, precisamos verificar se o nome de usuário que o usuário fornece realmente já existe. Deixe-me adicionar um nó aqui em uma linha separada. Vamos adicionar a nota, verificar se o nome de usuário já existe. Então, como vamos fazer isso? Bem, podemos fazer isso usando a instrução If. Vou dizer se é nome de usuário e agora nas credenciais do usuário Novamente, o Python já nos deu o código. Se o nome de usuário nas credenciais do usuário, Colon, vamos imprimir o nome de usuário já existir, escolha um nome de usuário diferente Acho que gosto disso. No entanto, vou remover a devolução. Nós não precisamos disso. No entanto, se o nome de usuário não existir, se for um nome de usuário totalmente novo, podemos adicionar nosso s. O que mais precisamos fazer agora? Precisamos pedir ao usuário sua senha. Eu vou dizer outra coisa. Vamos criar uma senha variável e, em seguida, atribuí-la às entradas e, em seguida, entre colchetes, digamos: Digite uma Ligue e, em seguida, vamos adicionar o código de fechamento, e aí está. partir daqui, agora, a próxima etapa que teremos que fazer é criar o par de valores-chave para nome de usuário e senha. Agora, como vamos fazer isso? Bem, vamos fazer isso chamando as credenciais do usuário do dicionário OK. Agora veja isso. Vou abrir meus colchetes e fornecer a chave que será o nome do usuário e agora é igual É assim que podemos criar o par de valores-chave. Você fornece o nome do seu dicionário e, em seguida, entre colchetes, fornece o nome da chave igual ao seu valor, e aí está ela Então, a etapa final agora será simplesmente imprimir o registro com sucesso. E aí está. Agora, vamos tentar algo. Vou chamar essa função e vamos ver se ela realmente funciona. Vou dizer que registre o usuário, colchetes, dois pontos e aí está Vamos tentar isso. Portanto, não precisamos de dois pontos aqui. Peça desculpas. Não precisamos de dois pontos aqui Vamos executar o programa. Tudo bem, digite use um nome. Eu vou dizer John, vamos digitar uma senha. Digamos que seja John para a senha. John, entre mais uma vez e diz que o registro foi bem-sucedido. No entanto, observe que o programa terminou, porque não temos um loop real que seja executado continuamente para continuar solicitando o usuário forneça um novo nome de usuário, uma nova senha O que podemos fazer para executar esse programa indefinidamente? Bem, podemos apresentar o loop while true. Aqui, logo abaixo da função de registro do usuário, não vou chamar em um loop que diz while e depois true No entanto, a indentação será muito, muito importante. Vou anotar tudo isso para ter certeza de que tudo se enquadra na verdadeira afirmação. Olha, deixe-me adicionar minha coluna aqui mesmo, e aí está, agora vamos ter o programa rodando continuamente. Vamos verificar se ele realmente verificará se o nome de usuário que fornecemos já existe. Vamos executar o programa novamente. Tudo bem. Então, esse eu vou com Mark. Senha é senha. Ok, tudo bem. Registro bem-sucedido. Agora você pode ver que ele está solicitando outro nome de usuário. Vamos experimentar Nancy, Password, vamos com SOD, Fish. Está funcionando. Agora, vamos tentar usar Mark novamente, Enter e agora diz que nome de usuário já existe, escolha um nome de usuário diferente. Incrível. Podemos ver agora que a primeira parte do nosso programa, aquela que verifica se a que registra o usuário e verifica se o nome de usuário já existe, você pode ver agora que está funcionando perfeitamente e isso é incrível Junte-se a mim no próximo vídeo em que agora vamos passar para o estágio dois, onde criaremos a função para fazer login do usuário. 42. Passo 2 - Crie a função de login: Bem-vindo de volta. Agora vamos para o segundo estágio onde vamos criar uma função dois, fazer login com um usuário existente. O que vou fazer é empurrar a função aqui até o final e, do lado de fora, vamos adicionar uma nova nota que diz função dois, faça o login do usuário. O que precisamos? Vamos primeiro criar o nome da função que será def, digamos, login underscore user E vamos adicionar dois pontos. Do que vamos precisar? Vamos precisar do nome de usuário e da senha. Digamos que o nome de usuário seja igual e, agora, insira, solicitaremos que o usuário forneça seu Digite seu nome de usuário. Colon, vamos adicionar um pouco de espaço aqui. Ok, a seguir será a senha, vou dizer que senha é igual e seguida, insira sua senha, produza Agora teremos que verificar se o nome de usuário realmente corresponde à senha que tínhamos na seção de registro. Vou adicionar minha nota bem rápido. Verifique se o nome de usuário e a senha coincidem. Então, como fazemos isso? O bom e velho nome de usuário e crédito de sublinhado do usuário, desculpe por isso Eu uso um nome nas credenciais do usuário e, como o nome de usuário e a senha precisam ser verificados e as credenciais de sublinhado do usuário e agora os colchetes, uso um nome igual Veja o que fizemos aqui, estamos verificando se o nome de usuário que já foi armazenado nas credenciais do já foi armazenado nas usuário do dicionário e agora o par de valores-chave para o nome de usuário e a senha, se eles realmente corresponderem poderemos imprimir, direi imprimir, digamos, bem-vindo de volta Muito, muito, muito simples. Caso contrário, se não for compatível, podemos imprimir. Agora podemos dizer que minha senha é inválida Tente novamente. Tudo bem. Aí está. Muito simples O que vou fazer agora é chamar as duas funções de registro de usuário e, em seguida, fazer login no usuário de pontuação. No entanto, precisamos prestar muita atenção ao fato de que o loop atualmente reside dentro da função de registro Não está lá fora. Precisamos executar nosso loop independentemente da função de registro e da função de login. O que vou fazer é cortar a verdade selvagem, recortá-la e depois colá-la fora sozinha, enquanto for verdadeira. No entanto, todo o resto deve se enquadrar nisso. Vou tabelar tudo abaixo, deixe-me fazer isso de novo e aí está Aí está. Você pode ver agora que as credenciais do usuário e, em seguida, o loop inteiro são independentes do lado de fora Agora, na verdade, todo o loop começa com o registro do usuário e, em seguida, o login do usuário, verificando se há correspondências, coisas assim. Isso deve funcionar. Vou prosseguir agora mesmo para executar o programa e nos deixar ver. Vou fornecer o primeiro nome de usuário. Vamos usar Mark e, em seguida, a senha será um registro de administrador bem-sucedido. Agora vamos tentar fazer login como Mark. Vou dizer Mark e depois admin Desculpe, Mark e depois Admin, e aí está. Bem-vindo de volta. Funciona com sucesso. Agora voltou à fase de registro. Se eu tentar criar outra conta agora com Mark, vou dizer que o nome de usuário já existe. Escolha um nome de usuário diferente. Vamos com a Nancy. Senha para Nancy, vamos usar a senha. Ok, agora você pode ver que diz, desculpe, usuário ou senha inválidos, tente novamente. A razão pela qual isso acontece é porque, da forma como o programa está escrito agora, ele simplesmente segue passo a passo, passo a passo independentemente de a etapa anterior ter sido bem-sucedida ou não. Aqui, você pode ver que começou com a fase de registro que funcionou. Em seguida, passei para a fase de login que funcionou. Agora chegou aqui para a fase de login novamente. Desculpe pela fase de registro novamente, vi que o Mac já existe como usuário. Então dizia, por favor, escolha um nome de usuário diferente. No entanto, ele continua pedindo o usuário crie outro nome por aqui, ele foi direto para a fase de login, onde verificou se Nancy Nancy não existia. É por isso que o nome ou a senha dos EUA são inválidos . Tente novamente. No momento, ele voltou à fase de registro. Se eu disser Nancy novamente, agora você pode dizer que está pedindo a senha de Nancy porque está na fase de registro Agora, digitando Admin, diz que o registro foi bem-sucedido Agora vamos tentar fazer login porque Night entrou na fase de login. Eu digo que a senha de Nancy Nancy é admin, mas vou digitar algo diferente, Enter, e então aparece o nome da senha dos EUA inválido , tente novamente Podemos ver agora que o programa funciona em 80%. A fase de registro e a fase de login funcionam, no entanto, se quisermos idealmente, ao tentar criar uma nova conta de usuário e se estivermos tentando usar um nome de usuário que já existe, o programa não deveria passar para a segunda etapa, que é apenas fazer login do usuário até que o usuário realmente forneça um novo nome de usuário para o registro. Vamos corrigir isso na terceira e última parte desta tarefa. 43. Passo 3: criando o sistema de autenticação: Vou chegar à parte final de nossa tarefa, que é agora criar o sistema de autenticação real Isso fará com que o usuário se registre, faça login ou talvez até mesmo saia do sistema. Agora, o que vou fazer, em primeiro lugar, é remover as funções aqui, me cadastrar e fazer login. Também vou remover o loop while aqui porque vamos executá-lo em um local diferente. Agora vou alterar o recuo e garantir que as funções registrem o usuário e o usuário de login na mesma linha Isso aqui deve estar na função Login do usuário e aí está. Vamos começar criando o sistema de autenticação. Vou adicionar minhas notas e chamá-la de menu principal. Agora podemos definir nossa função aqui, sistema de sublinhado de autenticação E aí está. O que precisamos aqui? Precisamos solicitar que o usuário se registre, faça login ou saia. Vamos imprimir algumas declarações. Vamos começar imprimindo e eu vou dizer, digamos, sistema básico de autenticação. Isso estará no topo. Em seguida, vamos imprimir a primeira opção para o usuário. Podemos dizer que um registro será a primeira opção e, em seguida, imprimir a opção número dois, esse será o login de dois pontos. Então, a opção final aqui seria três e, em seguida, vamos chamá-la de saída. Aí está. Temos nossas três opções aqui. Agora, o usuário precisará adicionar um, dois ou três. Vamos criar uma variável que representará essa opção específica. Vou chamar isso de uma opção, opção será igual à entrada, e agora vamos pedir ao usuário que insira sua escolha. Estamos perguntando ao usuário agora: Ei, forneça o que você deseja fazer. Teremos que criar o cenário if que verificaremos se o usuário escolhe a Opção 1, que é registrar, podemos chamar a função de registro de usuário Se eles escolherem a opção dois, podemos chamar a função de usuário de login ou, se eles saírem, podemos simplesmente encerrar o loop. Eu vou dizer agora que se a opção aqui é igual, e agora eu posso dizer Cólon. O que fazemos se esses queijos forem a primeira opção Bem, podemos chamar a função register underscore user. Muito, muito simples. Agora, se o que vai ser se. Se fosse a opção dois, o que vamos fazer? Vamos chamar a função login underscore user. Agora, para o último, se a opção for igual a três, o que fazemos? Nós podemos imprimir. Em seguida, codifique, podemos dizer que está saindo do sistema. E aí está, e então podemos dizer outra coisa se o usuário talvez forneça a opção quatro, cinco, seis, que não existem, então podemos dizer, caso contrário, imprimir e , entre colchetes, podemos dizer opção inválida, e então podemos dizer, por favor, escolha entre as opções um, dois ou Aí está. Aí está. Agora, finalmente, podemos executar o sistema de autenticação. Podemos fazer isso simplesmente dizendo sistema de autenticação, e aí está. Há uma coisa que ainda não adicionamos. Não sei se você consegue identificar o que é, mas esse é o loop. Porque, no momento, esse programa será executado apenas uma vez, mas queremos que o usuário continue fazendo login, registrando-se ou saindo O que fazemos? É aqui que teremos que chamar o Wild True Loop. Mas onde você acha que vamos colocá-lo? Vamos colocá-lo logo abaixo da função do nosso sistema de autenticação É aqui que vou dizer uma verdade selvagem. Agora lembre-se, tudo aqui terá que se enquadrar na verdadeira afirmação. Portanto, certifique-se de que sua identificação esteja correta e, em seguida, teremos que adicionar a instrução break também para finalizar o loop Agora, onde vamos terminar o loop, terminamos o loop em que o usuário escolhe a opção três, que é sair do sistema Logo abaixo, abaixo da impressão, vou dizer pausa e aí está nosso programa, espero que funcione espero que Deixe-me ir em frente agora e executá-lo. Temos um problema aqui porque a pausa está fora do circuito, veja só. Nossa, a indentação é muito importante. Você pode ver agora que, se tudo isso não for o mesmo recuo da declaração while Então, vamos voltar aqui e indentá-los corretamente e aí está Você pode ver até que eu também cometo erros com meu recuo Então, vamos garantir que todo o resto esteja indentado corretamente. Vamos tentar executar o programa mais uma vez. Felizmente, funciona agora. Vamos testá-lo. Eu vou com a opção número um. Primeiro de tudo, vamos registrar Mark e sua senha é admin. Incrível. Agora vamos tentar ir para a opção número dois para fazer login, usar o nome. Vamos tentar Nancy como exemplo, senha, digamos, Bob Mas agora diz nome inválido, usando o nome da senha, tente novamente. Obviamente, está funcionando muito bem. Vamos tentar registrar novamente desta vez como Mark, verifique novamente se o programa detectará que Mark já existe, então Mark e ele diz: Ok, nome já existe, escolha um nome de usuário diferente. OK. Vamos tentar fazer login desta vez como Mark. Vamos fornecer a senha que é admin e diz: bem-vindo de volta. Na verdade, eu trabalhei. Vamos tentar fazer login novamente como Mark. Mas desta vez, vamos usar uma senha diferente, uma senha longa e, em seguida, diz: Nome de usuário ou senha inválida, tente novamente. Parece que está funcionando corretamente. O teste final é sair, entrar e pronto. Saindo do sistema, o loop terminou, o programa terminou. Aí está. Criamos com sucesso um programa, que é um sistema básico de autenticação que permitiria ao usuário registrar o login ou simplesmente sair do programa. Obviamente, adicionamos cheques para garantir que nenhuma conta duplicada possa ser registrada Também adicionamos verificações para garantir que os nomes de usuário e senhas sejam iguais, e aí está. Parabéns. Espero que tenham gostado dessa tarefa, desse desafio Obrigado por assistir. Te vejo na próxima aula. 44. Introdução à seção de manipulação de arquivos: Bem-vindo a esta seção em que falaremos sobre manipulação de arquivos e, acredite ou não, este é oficialmente o começo dos tópicos mais avançados sobre programação em Python, porque aqui você aprenderá como escrever programas que podem criar arquivos e até modificá-los E talvez ainda mais importante, você aprenderá exatamente como lidar com erros de arquivo. Então, digamos, por exemplo, que algo aconteceu em seu programa não funcionou da maneira que deveria funcionar. Você aprenderá exatamente como modificar ou projetar seu programa de forma que esses tipos de erros sejam tratados de maneira profissional. Então essa vai ser uma seção muito, muito interessante. E, claro, você também aprenderá os diferentes tipos de métodos que podemos aplicar aos nossos arquivos, como ler de um arquivo, ou talvez até mesmo gravar em um arquivo ou talvez até mesmo acrescentar ou modificar um arquivo específico E, claro, você também aprenderá como lidar com os erros de arquivo sobre os quais já falei usando os blocos de várias exceções e também a instrução finally. Então, sem perder mais tempo, vamos começar a falar sobre o tratamento de arquivos 45. Leitura e escrita em arquivos: Tudo bem, vamos falar sobre o tratamento de arquivos e, no momento, o único arquivo com o qual estamos trabalhando é o arquivo dot py principal. É apenas um arquivo Python e nada mais. No entanto, poderíamos criar outros tipos de arquivos. E se quiséssemos escrever um programa que solicitasse ao usuário que fornecesse seu nome de usuário ou senha e, em seguida, armazenássemos essas informações do usuário em um arquivo separado. Como podemos fazer isso? Bem, podemos fazer isso de várias maneiras. Isso é o que você vai aprender aqui. A primeira coisa que quero mostrar é como criar um arquivo. Há uma declaração chamada with e, em seguida, uma função chamada colchetes abertos O que isso fará é que a função aberta normalmente aceite dois parâmetros. Você precisará fornecer o nome do arquivo com o qual deseja trabalhar e, em seguida, o segundo parâmetro será o que você deseja fazer com esse arquivo. Talvez você queira ler o arquivo, gravar no arquivo, anexar o arquivo e assim por diante Como exemplo, deixe-me dizer que eu quero abrir um arquivo chamado example dot TXT é um arquivo de texto, agora vírgula, e agora eu tenho que fornecer a operação Eu quero abrir esse arquivo? Eu quero ler o conteúdo do arquivo? O que eu quero fazer? Eu quero gravar no arquivo, então vou usar W para representar a função correta, a operação correta. E agora, para terminar isso, vou dizer um arquivo. Isso aqui, normalmente é a sintaxe. Você dirá com aberto e, em seguida, entre colchetes, fornecerá o nome do arquivo e, em seguida, o operador relacionará W para gravação, R para leitura e assim por diante e, em seguida, dirá um Agora vou pular para a nova linha e dizer file dot w. Essa será a função que vamos usar para realmente escrever a string ou o que quer que seja que queiramos gravar no arquivo. Entre colchetes, vou dizer Olá, mundo. Isso é o que eu quero gravar no arquivo. Agora, veja isso. Eu vou seguir em frente. Agora observe que até agora eu ainda tenho apenas um arquivo, o ponto principal PY. Mas se eu fosse executar o programa, agora você verá que diz exemplo de ponto. Mesmo que eu não tenha criado esse arquivo antes, sempre que você estiver gravando em um arquivo, se esse arquivo não existisse antes , o Python criará automaticamente esse arquivo para Agora, se eu abrisse meu exemplo para texto, você pode ver agora que diz Olá, mundo. E se eu viesse aqui agora e escrevesse outra função correta e dissesse, isso é incrível. O que você acha que vai acontecer? Vamos seguir em frente e executar o programa. Se eu voltar ao meu exemplo, doc TXT, agora você pode ver que diz olá mundo, isso é incrível Agora ele adicionou isso é incrível ao nosso arquivo. Deixe-me voltar e fechar isso. Deixe-me remover a segunda função de arquivo. Agora, podemos ver que hello world é, na verdade, no exemplo, dot TXT Mas e se, em nosso console, quiséssemos exibir o conteúdo de um exemplo de ponto TXT O que vou fazer aqui é dizer com aberto novamente e agora entre colchetes, mais uma vez, o nome do arquivo, exemplo TXT Agora vamos usar a função R em vez disso. Isso é o que usamos para ler o arquivo. Vou dizer como arquivo, dois pontos. Agora, e se quiséssemos imprimir o conteúdo do arquivo? Eu posso atribuir uma variável chamada content equals, e agora vou usar um arquivo de função dot Red Nesta função, aqui no arquivo, ponto vermelho lemos o conteúdo do nosso arquivo. Ele vai passar o conteúdo para o conteúdo variável. Agora, tudo o que precisamos fazer a partir daqui será simplesmente dizer impressões e, em seguida, entre colchetes, o que estamos imprimindo, estamos imprimindo conteúdo OK. Agora eu vou correr e aí está, aqui mesmo em um console, você pode ver que temos hello world sendo exibido. Isso é basicamente uma introdução à leitura de arquivos, gravação em arquivos. Uma pergunta que você pode ter é: ok, podemos realmente criar nossos arquivos sem usar a instrução with? Na verdade, a resposta é sim, podemos fazer isso sem usar a declaração with. Como faríamos isso? Bem, deixe-me primeiro remover a programação aqui. O que precisamos fazer, em primeiro lugar, é dizer que arquivo é igual e depois Essa será a função aberta em si. Lembre-se de que open aceita dois parâmetros. Agora teremos que abrir nosso exemplo de ponto TXT, agora o que queremos fazer é gravar no arquivo Eu vou dizer W. Deixe-me remover, deixe-me excluir este exemplo de arquivo de texto com pontos. Deixe-me deletá-lo. Estamos começando do zero. Agora, eu disse ao Python, quero que você crie esse arquivo chamado example dot O que queremos agora gravar no arquivo? Eu vou entrar agora mesmo e dizer file dot write. Porque agora estou escrevendo no arquivo e depois entre colchetes, vamos fornecer a string hello world Agora, o que eu vou ter que fazer é fechar o arquivo. Quando você está abrindo um arquivo ou lendo um arquivo ou está em um arquivo, por padrão, o arquivo precisa ser aberto para que essa operação ocorra. O que você sempre quer fazer é garantir que o arquivo seja fechado após a conclusão da operação. Se você não fizer isso, isso pode fazer com que os programas vazem memória e ficar muito vulnerável a diferentes tipos de ataques Então, para fechar o arquivo de forma muito simples, arquivo ponto W ponto fechar. E é isso. Agora, se eu executar o programa novamente, você pode dizer, por exemplo, que o texto está lá, eu posso abrir o arquivo e está tudo bem, mundo. A razão pela qual preferimos ou a maioria dos desenvolvedores prefere usar a instrução W é porque, com a instrução With, deixe-me desfazer tudo isso Com a instrução W, você notará que, na verdade, não precisávamos fechar o arquivo manualmente. Python é inteligente o suficiente para saber que, ao usar a instrução W, assim que você tiver executado qualquer operação que deseja realizar no arquivo, feche-o automaticamente É por isso que os desenvolvedores costumam usar a declaração with. Você não precisa mais fechar o arquivo porque o Python fará isso automaticamente Além disso, também é mais limpo, você tem menos linhas de código. É por isso que a instrução Wi é normalmente usada em conjunto com a função open Obrigado por assistir. Te vejo na próxima aula. 46. Leitura e escrita de entradas para arquivos de texto: Vamos agora falar sobre como podemos ler e gravar em arquivos de texto. Digamos, por exemplo, que quiséssemos criar um programa que aceitasse uma entrada do usuário. Digamos que o usuário tenha sido solicitado a fornecer seu nome de usuário e , em seguida, queremos armazenar esse nome de usuário em um arquivo separado. Como podemos fazer isso? Bem? Em primeiro lugar, vamos atribuir uma variável que aceitará a entrada do usuário. Vou chamar minha variável username equals e agora a função de entrada Agora digite seu nome de usuário, bem simples. Agora, lembre-se da lição anterior com sintaxe aberta, vou dizer com e agora aberta e, claro, lembre-se de que open aceitará dois parâmetros Primeiro de tudo, o arquivo com o qual você deseja trabalhar e, em seguida, o operador, vou criar um arquivo chamado users dot txt E então vamos adicionar a ideia funcional W para escrever e, em seguida, vou dizer um arquivo. Agora, o que queremos fazer? Queremos gravar o nome de usuário no arquivo. O que vou fazer agora é um arquivo muito simples, pontuar, escrever Agora entre colchetes, nome de usuário. Então, apenas por uma boa medida, podemos imprimir algo depois que o usuário fornecer o nome de usuário. Digamos que imprimir e eu direi que o nome de usuário foi adicionado ao arquivo, apenas como exemplo. Vamos em frente agora mesmo. Execute o programa. Digite seu nome de usuário, vou dizer Alex, pressione Enter e agora diz que o nome de usuário foi adicionado ao arquivo e você pode ver que o TextFile dos usuários foi criado e se eu o abrir, você pode ver que está aí Alex. Até agora, tudo bem. No entanto, se eu voltar e executar o programa novamente, e desta vez, eu usei um nome de usuário diferente, eu disse Alice, eu pressiono Enter Se eu for até meus usuários ou enviar uma mensagem de texto para o arquivo, você pode ver agora que Alice substituiu Alex Isso porque sempre que você aceita entradas de seus usuários, você as armazena em um arquivo de texto Quando você usa o operador certo, ele simplesmente sobrescreve tudo o que existia naquele arquivo anteriormente E se não quisermos isso? E se quisermos continuar adicionando arquivos ou nomes de usuário ao nosso arquivo sem sobrescrever os anteriores? Como fazemos isso? Em primeiro lugar, deixe-me limpar meu histórico, remover o texto pontilhado de nossos usuários no arquivo. Vamos fingir que estamos começando do zero? Em vez de usar a função W, vou usar A, que representa uma caneta. Com uma caneta, podemos continuar solicitando que o usuário forneça um novo nome de usuário e uma vez que ele continue adicionando novos nomes de usuário, eles serão armazenados em nosso arquivo e os nomes de usuário anteriores não serão substituídos Vou executar o programa novamente. Forneça meu nome de usuário, Alex. Agora você pode ver que temos o arquivo dot txt de nossos usuários, Alex, assim como fizemos com o operador certo Mas agora, se eu voltar, executo o programa novamente e, desta vez, digo Ale. O que acontece agora, eu vou para o meu usuário dot textifle e então você vai, temos Alex, temos Alice Você pode ver que Alex não foi sobrescrito. A propósito, se você quiser armazenar seus nomes de usuário em linhas separadas, tudo o que precisamos fazer aqui é escrever o nome de usuário do arquivo Podemos apenas dizer mais, agora veja isso. Você quer dizer barra para frente, desculpe, barra invertida e depois N. Então , aqui, é isso que usamos para criar linhas, o que quer que você esteja adicionando será adicionado em uma Então, o que vou fazer aqui é remover o doteXifle do usuário Deixe-me executar o programa mais uma vez. Alex, pressione Enter. Vamos executar o programa novamente. Desta vez, vou dizer Alice. Pressione Enter. Agora, se eu abrir meus usuários do TextFile, agora você pode ver que Alex e Alice estão em Aqui está a diferença entre o operador certo e o operador de acréscimo. Mas e se quiséssemos ler os dados, os nomes de usuário do arquivo? Como podemos fazer isso? Bem, eu vou descer aqui, dizer com os colchetes abertos novamente, e vou dizer usuários TXT, então o que vamos fazer? Códigos R. Então, como arquivo, Colm, agora queremos criar um loop de quatro Vou dizer quatro nomes por nome no arquivo. Para os nomes de usuário dos nomes no arquivo, o que queremos fazer? Queremos imprimir. Eu vou dizer imprimir e então podemos dizer, use um nome. Cólon e agora vou adicionar coma e agora nomeie a faixa de pontos Essa é uma função nova e ela terá seus próprios colchetes vazios e aí está Agora, se eu executar o programa, Alex, e pronto, use-os como adicionados ao arquivo. Agora, devido à nossa função aqui, estamos lendo o arquivo, ele dirá nome de usuário, Alex, nome de usuário Alice e, em seguida, nome de usuário Alex novamente porque o usuário TextFle tem Alex Alice Alex É assim que podemos ler o conteúdo do nosso arquivo. A propósito, a faixa de pontos aqui é um método muito usado sempre que lidamos com arquivos. Agora, nós o usamos para remover qualquer caractere de espaço em branco inicial ou trilhante Isso pode incluir coisas como espaços, facadas ou até mesmo um novo caractere de linha É apenas uma maneira muito eficiente de garantir que qualquer texto que estejamos produzindo ou imprimindo seja da maneira mais eficiente, seja da maneira mais eficiente sem espaço desnecessário É por isso que o strip é muito usado sempre que lidamos com arquivos de texto. Agora, é totalmente opcional. Na verdade, você não precisa usar o método strip. Se eu remover o método strip e fechar meu suporte normalmente, se eu executar o programa, ele funcionará exatamente da mesma maneira Deixe-me fornecer um novo nome. Digamos que Mandy. Como exemplo. Aí está. Temos o nome de usuário Alice, o sobrenome Alex, o nome Mandy, aí está, ainda vai funcionar Mas você pode ver agora que temos o espaço extra, as linhas entre sname Ale, nome de usuário Alex, use o nome Mandy porque estamos usando o novo caractere de linha, a nova string de linha aqui para adicionar cada entrada em uma linha separada É basicamente isso para ler e escrever em arquivos de texto. Obrigado por assistir. Te vejo na próxima aula. 47. Métodos de leitura e escrita: Bem, volte aqui. Agora, antes de prosseguirmos, gostaria de informar que existem métodos diferentes para escrever e ler nossos arquivos. Agora, até agora, estamos lidando com o método file dot, que é, obviamente, muito simples Então, se eu executar o programa agora, ele criará meu ponto THD de exemplo. Eu abro e lá está Hello World. Agora, file dot write é útil e é usado sempre que escrevemos strings individuais ou muito simples em nosso arquivo Hello world é muito simples, é muito simples. Mas e se quiséssemos escrever várias sequências de caracteres ou quiséssemos escrever grandes quantidades de texto A gravação de arquivos não será mais usada. Teremos que usar um método diferente. Por exemplo, se eu tivesse uma lista de nomes, deixe-me criar os nomes da minha lista. Deixe-me adicionar o primeiro nome, Alex, e deixe-me adicionar o novo caractere de linha, slash, deixe-me permitir que o Python adicione os Temos Alex, Bob, Caroline, Dave e Fred Se eu quiser escrever essas strings, não posso mais usar arquivo, terei que usar um método diferente O que vou fazer agora é usar a largura usual, abrir e depois colchetes e lembrar que teremos que abrir nosso arquivo, exemplo, ponto CxT depois W, claro dois, escrever que temos dois pontos e depois vou dizer, desculpe, como arquivo e depois Agora você pode ver o ponto do arquivo, as linhas direitas e, em seguida, nossos nomes. Escreva o arquivo com pontos e escreva linhas, isso é usado sempre que estamos escrevendo várias sequências de caracteres ou escrevemos grandes pedaços de texto em nosso arquivo Se eu executar um programa agora e abri-lo, então você vai, temos os nomes aí. Por favor, esteja ciente disso. No futuro, se você for criar programas avançados que exijam a criar programas avançados que exijam gravação de grandes quantidades de texto ou cadeias de caracteres em um arquivo específico, use as linhas de gravação de arquivos em vez da gravação normal de pontos de arquivo Assim como na escrita, também temos métodos diferentes de leitura. Agora, até agora, usamos a simples leitura do arquivo dot read deixe-me copiar alguns códigos aqui. Deixe-me passar isso aqui bem rápido. Até agora, temos lidado com códigos como esse. Teremos um arquivo e, em seguida, diremos conteúdo e chamaremos arquivo de ponto lido e aí está. Se eu executar um programa agora, muito, muito simples, temos Alex Bob, Caroline, Dave e Fred Ok. O problema de usar o file dot RED é que ele lê o arquivo inteiro de uma vez, o que é ótimo sempre que você estiver trabalhando com arquivos muito pequenos. No entanto, se você estiver lidando com arquivos grandes, ele ainda funcionará. Não me interpretem mal. Eu ainda vou trabalhar, ele ainda vai ler tudo. O problema, porém, é que ele vai ler o arquivo inteiro de uma vez, ele precisará usar muita memória para carregar todo o texto desse arquivo de uma só vez. Esse é o problema. Não é muito eficiente quando você está lidando com grandes quantidades de texto em um arquivo, como arquivos grandes. Você quer usar um método diferente. Agora, deixe-me te mostrar. Vou criar um novo programa aqui e dizer com aberto. Agora vamos supor que o exemplo de TXT, neste cenário, tem grandes quantidades de texto, é um arquivo muito grande Vou declarar a saída usual, adicionar nosso nome de arquivo e depois R e dizer um Agora, veja isso. Eu vou dizer que a linha é igual à linha de leitura de pontos do arquivo. Perceba a diferença. Não é mais arquivo lido, agora é uma linha de leitura de pontos de arquivo, e então eu posso criar meu loop e dizer enquanto linha. Enquanto nosso arquivo está aberto, ele contém texto. Queremos imprimir a linha. Também podemos dizer que linha é igual à linha de leitura de pontos do arquivo. E aqui está. Se eu fosse executar o programa novamente, você verá agora que temos exatamente as mesmas saídas Você realmente não notará a diferença porque, independentemente disso, estamos lidando com um arquivo pequeno. No entanto, lembre-se de que, no futuro, assim como com o método correto, se você estiver lidando com grandes quantidades de arquivos dos quais precisa ler, use a linha de leitura de pontos. Se for um arquivo muito pequeno, arquivo dot Read seria usado. É ideal para esses cenários. No entanto, ainda não terminamos. Existe outro método que são as linhas de leitura de pontos do arquivo. O que isso faz é ler todas as linhas de uma vez e retorná-las como uma lista de strings em que cada elemento é uma linha do arquivo Em outras palavras, ele combina os benefícios da leitura e linha de leitura lendo o arquivo inteiro de uma só vez, assim como o ponto lido do arquivo. No entanto, ele armazenará cada linha como um elemento individual em uma lista. Então, deixe-me dar um exemplo. Eu vou voltar para cá. Vou modificar isso para alterar a linha duas linhas. É igual às linhas lidas por pontos do arquivo. Agora, em vez de usar o loop Wil, vou mudar isso para o loop de quatro. Vou dizer quatro linhas em linhas, dois pontos, e agora podemos simplesmente imprimir entre colchetes. Ou melhor ainda, vamos adicionar o método de faixa para remover qualquer espaçamento desnecessário Aí está agora, se eu fosse executar o programa, aí está. Alex, Bob, Caroline, Dave e Fred. Novamente, você não notará a diferença ao lidar com um arquivo muito pequeno. Mais uma vez, lembre-se de que, se estiver lidando com arquivos grandes, use a linha de leitura ou as linhas de leitura. O último método que quero mostrar a você será a linha for no arquivo. O objetivo aqui é ler o arquivo linha por linha de forma eficiente em termos de memória. Eu vou voltar para cá. Deixe-me remover as linhas. Temos um exemplo aberto de arquivo TXT, RS. Agora eu vou dizer que para entrada de linha , eu poderia dizer arquivo, para linha em arquivo, agora basta imprimir uma faixa de pontos de linha e nunca mais executar o programa, aí está. Na verdade, essa abordagem é muito semelhante ao uso da linha de leitura, mas na verdade é mais concisa e considerada a melhor prática para ler arquivos grandes, pois cada iteração recupera uma única linha, portanto, o uso de memória será baixo Resumindo, se você quiser ler um arquivo pequeno, a leitura usual de nosso arquivo será a melhor Se você estiver lendo um arquivo grande, pode continuar com sua linha no arquivo. É melhor do que a linha de leitura por pontos do arquivo e também melhor do que as linhas de leitura por pontos do arquivo. Agora, também quero salientar que, além dos modos de leitura, modo de acréscimo, modo de gravação, também temos modos adicionais, como o modo de leitura e gravação, o modo de gravação e leitura, bem como o modo de acréscimo Por exemplo, em vez de R aqui, posso dizer R e depois mais. Tudo isso é conhecido como modo de leitura e gravação. Isso abrirá um arquivo para leitura e gravação. No entanto, lembre-se de que o arquivo deve existir e que o conteúdo pode ser lido e modificado. Seu arquivo já deve existir para que você possa usar esse modo específico. Também temos o modo de gravação e leitura, que será W e depois plus. Isso aqui abrirá um arquivo para leitura e gravação, mas substituiria qualquer conteúdo existente. Então, finalmente, é claro, você tem o modo Append plus, que é o modo de leitura anexada Isso abrirá um arquivo para leitura e escrita, anexando novo conteúdo no final sem alterar nenhum conteúdo existente Você é mais do que bem-vindo para experimentar esses modos e ver como eles modificam seu arquivo. Obrigado por assistir. Eu vou te ver na próxima aula. 48. Manipulando erros de arquivo: À medida que você continua progredindo em sua jornada como programador de Python ou como programador em geral, há um hábito que eu quero que você adote e esse hábito envolverá escrever programas ou projetar programas capazes de lidar com possíveis erros de maneira Veja o fato é que a maioria dos programadores criam todos esses ótimos programas que podem fazer isso, fazer aquilo No entanto, se algo der errado, talvez o usuário do programa tenha adicionado algum tipo de entrada ou talvez tenha usado números em vez de letras ou algo parecido. Muitas vezes, esses programas acabam falhando porque o programador não o projetou de forma que, se esses erros em potencial ocorrerem, o programa saiba como lidar com Falamos brevemente sobre como lidar com erros quando falamos sobre loops, mas agora vamos nos aprofundar um pouco mais Na minha tela agora, tenho um programa muito simples que lê o arquivo, o exemplo dot TXT Mas note, no entanto, que esse programa, o pequeno bloco de código, se baseia nesse arquivo, por exemplo, ponto TXT que realmente existe E se eu talvez tenha cometido um erro ou o uso do programa, o uso do programa, tenha cometido um erro. Em vez do exemplo de ponto TXT, temos o exemplo de ponto TXT Agora, esse arquivo não existe. Não está no meu diretório. Se eu executar o programa, agora você pode ver que temos um erro. Python está nos dizendo que, ei, desculpe, esse arquivo ou diretório não existe, erro arquivo não encontrado. Isso não parece bom. Queremos escrever nossos programas de forma que, se esse erro ocorrer, ele o resolva de uma maneira muito elegante e profissional O que queremos fazer agora é deixar eu voltar aqui e adicionar um exemplo de ponto TXT Vamos usar o bloco Try except. Já falamos sobre isso quando falamos sobre loops, mas vamos falar sobre isso novamente. O que você quer fazer é no bloco de código em que existe a possibilidade de o erro ocorrer, como aqui, uma coisa que você quer fazer é começar dizendo try. Experimente e agora verifique se está indentado corretamente, pois o código após a tentativa deve estar abaixo dele Agora estamos dizendo: Ok, tente abrir este arquivo de exemplo dot THD. Se existir e tudo mais, você pode imprimir o conteúdo do arquivo. No entanto, e se o arquivo não existir? Agora podemos dizer exceto e, em seguida, em exceto, podemos dizer imprimir, e então podemos dizer algo como arquivo não encontrado. Vamos adicionar uma coluna ali mesmo para exceto. Aí está. Basicamente, estamos dizendo: Ei, tente executar esse bloco de código se, por um motivo ou outro, o arquivo não for encontrado e simplesmente imprima o arquivo não Se eu executar o programa agora, tudo funcionará corretamente porque o arquivo existe. No entanto, se eu mudar o nome do arquivo e executar o programa, você pode ver de forma muito profissional que ele simplesmente diz arquivo não encontrado Isso porque estamos usando o bloco try except. Embora isso funcione bem, para ir mais fundo, quero que você comece a usar o que chamamos de exceções comuns relacionadas a arquivos Há uma grande variedade deles. O Python tem exceções específicas para muitos dos erros comuns relacionados a arquivos O primeiro e o mais comum é o erro de arquivo não encontrado, assim como temos aqui. Tudo o que você precisa fazer é, em vez de simplesmente dizer tentar, exceto onde você tem o, exceto, agora você pode digitar o erro de arquivo não encontrado. Aqui, estamos dizendo ao Python que verifique especificamente se o erro é causado pelo fato de o arquivo não ter sido encontrado Se eu executar meu programa novamente agora, você pode ver que ele ainda funciona perfeitamente bem. No entanto, essa é uma maneira muito mais limpa e eficiente de lidar com o erro, pois aqui, estamos verificando especificamente se o erro ocorreu porque o arquivo não existe. O bloco try except por si só lida com todos os erros. Se o arquivo não foi encontrado, seja uma seta de permissão ou talvez seja uma seta de diretório ou talvez seja um erro de sistema aberto, ele cuidará de tudo. Então, sim, funcionará muito bem. Eu vou manusear a flecha. Mas, novamente, uma maneira mais limpa será especificar o tipo de erro que você realmente espera Portanto, temos o erro de arquivo não encontrado. Também temos o erro de permissão. Talvez, por exemplo, o arquivo em questão só possa ser acessado por um administrador. Agora ele está tentando ser acessado por um usuário comum. Obviamente, você terá o erro dizendo: Ei, desculpe, você não tem permissão. Nesse cenário, tudo o que simplesmente fazemos é dizer, você sabe, desculpe, você não tem permissão para visualizar esse arquivo, e isso é tudo o que precisaríamos fazer. Portanto, se você está esperando um erro de permissão, use o bloco de código de seta de aceitação de permissão Também temos uma seta de diretório. Talvez o usuário estivesse tentando abrir um diretório que não existe novamente. Basta entrar aqui e depois digitar , há um erro de diretório e aí está. E agora, a partir daqui, podemos especificar a mensagem de impressão exata. Então, nesse caso, será algo como Desculpe. Você não tem permissão para acessar esse diretório ou SOI Esse diretório não existe, algo parecido. Então, o último será o erro do sistema operacional. Normalmente, essa é a exceção geral para outros erros relacionados a arquivos. Talvez o disco esteja cheio, talvez seja um problema de entrada e saída, algo parecido. Então, tudo o que você precisa fazer agora é dizer exceto e, em seguida, O. erro. Depois, você pode simplesmente digitar algo como, desculpe, ocorreu um erro ou ocorreu um erro de sistema aberto , algo assim. É exatamente assim que isso funcionaria. Mais uma vez, você deseja adotar essa abordagem profissional para garantir constantemente que seus blocos de código, sempre que houver a possibilidade de ocorrer um erro, sejam projetados de forma que sejam capazes de lidar com quaisquer erros em forma que sejam capazes de lidar com potencial usando o bloco try except e, em seguida, a própria declaração de o bloco try except e aceitação, você pode especificar o erro exato que você espera que ocorra. Obrigado por assistir. Te vejo na próxima aula. 49. Vários, exceto blocos: Bem vindo de volta. No vídeo anterior, falamos sobre como lidar setas e também sobre os diferentes tipos de erros específicos, exceto relacionados a arquivos com os quais deveríamos trabalhar No entanto, e se quiséssemos verificar vários tipos de erros? Talvez, além do arquivo não ter sido encontrado, seja possível que o arquivo tenha sido encontrado, então talvez as permissões para o arquivo não estejam corretas ou talvez o diretório não esteja correto, algo assim. Queremos criar um programa, um bloco de código que possa lidar com vários tipos de erros e também imprimir mensagens de erro diferentes para cada erro. Do jeito que está agora, tenho um erro que é o erro de arquivo não encontrado e ele vai imprimir o arquivo não encontrado. Mas e se eu quisesse incluir a permissão Al também. É muito, muito simples. Tudo o que preciso fazer é simplesmente abrir outro bloco e dizer aceitar e depois permitir Al adicionar meus dois pontos e agora posso imprimir entre colchetes e dizer, desculpe, você não tem permissão meus dois pontos e agora posso imprimir entre colchetes e dizer, desculpe, você não tem Para acessar esse arquivo. Isso é tudo que eu tenho que fazer. Vamos adicionar mais uma seta, para que eu possa dizer exceto, e então eu posso dizer seta OS. Talvez tenha havido um problema com o sistema de abertura, e então eu verifico meus dois pontos e depois posso dizer imprimir e, entre colchetes , há uma seta do sistema operacional Agora, e se eu quisesse adicionar mais um bloco de código que possa lidar com qualquer outro tipo potencial de seta existente? Tudo o que eu preciso fazer é dizer novamente, exceto agora a chave. Vou dizer exceção como E. Basicamente, essa linha tratará qualquer outro tipo de erro que possa ocorrer. Então eu vou simplesmente dizer uma mensagem geral e dizer imprimir, e então vou dizer uma flecha inesperada que ocorreu. Agora queremos enfatizar o E aqui. Esse E vai representar a seta. O que vou fazer agora é usar a string F como de costume. E então colchetes encaracolados, vou adicionar o E ali mesmo. A última linha aqui tratará qualquer outro tipo de erro e o sistema dirá que ocorreu um erro inesperado e, em seguida, você especificará o tipo de erro por causa da variável E aqui que criamos aqui e pronto. Vou executar meu programa e, claro, você pode ver, ele vai funcionar perfeitamente bem. É assim que você pode criar vários blocos de exceção que lidarão com vários tipos diferentes de possíveis erros que possam ocorrer. Para assistir. Te vejo na próxima aula. 50. A declaração final: Quando se trata de abrir arquivos com Python, lembre-se de que nem sempre precisamos usar a instrução with A razão pela qual usamos with na maioria das vezes é porque, com a instrução with, automaticamente, o arquivo será fechado assim que for acessado. Neste cenário em que estamos simplesmente trabalhando com a função open para abrir o arquivo, temos que fechar manualmente o arquivo dizendo file that close. Caso contrário, o arquivo permanecerá aberto e isso poderá levar a possíveis erros. A questão agora é: como lidaríamos com os erros nesse cenário específico? Bem, teremos que usar o bloco final. Agora, no topo, vou começar tentando, como de costume, e depois lembrar, é claro, que tudo tem que ser testado. Agora, na linha cinco, é aqui que vamos adicionar a aceitação. Agora vamos procurar o erro de arquivo não encontrado. Cólon. Se o arquivo não foi encontrado, podemos simplesmente imprimir o arquivo não encontrado. No entanto, e se o arquivo foi de fato encontrado, não há erro. O que vamos fazer agora é dizer finalmente. Agora, se for arquivo, espere. Agora estamos dizendo, finalmente, se não houve nenhuma mensagem de erro, se o arquivo foi de fato encontrado, o que fazemos agora? Podemos simplesmente imprimir o conteúdo e agora também podemos fechar o arquivo. Na verdade, por uma boa medida, não é necessário, mas por uma boa medida, podemos simplesmente imprimir o arquivo fechado, apenas como exemplo. Claro, se eu executar o programa agora, você pode ver que ele funciona perfeitamente bem e até diz que o arquivo está fechado. Este programa na superfície agora parece bom. Não houve erros, o arquivo foi encontrado, foi impresso e, claro, o arquivo também foi fechado. No entanto, ainda não terminamos. Porque, na verdade, se eu alterasse deliberadamente o nome do arquivo para obtermos o erro de arquivo não encontrado, se eu executar meu programa, oh, você pode ver agora, ainda estamos tendo a maneira desagradável usual de exibir ou lidar com erros É como se o bloco de código try, exceto que não funcionasse de jeito nenhum. O que está acontecendo aqui? Outra coisa que você precisa ter em mente é que, se não estiver trabalhando com a instrução de largura, não só precisará fechar o arquivo manualmente, mas também inicializá-lo logo no início Porque, no momento, o Python nem sabe realmente o que é o arquivo em si, qual é o valor padrão do Um arquivo não é igual ao exemplo obtido se o arquivo não fosse encontrado Como o Python saberia disso? Na verdade, há uma seta aqui, qual será o valor padrão que a variável do arquivo precisa ter É aqui que teremos que estar no topo, digamos que arquivo seja igual No momento, logo no início, estamos inicializando a variável de arquivo, atribuindo-a ao valor padrão de none Essa é uma prática comum ao lidar com recursos que podem ou não ser alocados com sucesso Usar non here permitiria um valor padrão muito seguro que evitaria qualquer operação acidental em uma variável não inicializada Isso é outra coisa que você deve ter em mente. No momento, se eu executar o programa mais uma vez, ele funcionará bem. Se eu alterar o nome do arquivo deliberadamente para produzir a mensagem de erro, você pode ver agora que ele tratou o erro normalmente É exatamente por isso que, quando se trata de lidar com arquivos, normalmente usamos a instrução with porque, com a instrução with, você não precisa inicializar suas variáveis ou seus arquivos e não precisa fechá-los manualmente A instrução W é tão poderosa que inicializará automaticamente nossos arquivos e variáveis e também fechará o arquivo automaticamente depois de acessado Porém, você deve estar ciente disso se encontrar um cenário ou qualquer código de programação que a instrução de largura não fosse usada, como você lidaria com os erros? Como você fecharia o arquivo manualmente? Claro, como você também inicializaria o arquivo manualmente? Obrigado por assistir. Te vejo na próxima aula. 51. Introdução à seção de bibliotecas e módulos: Bem-vindo à seção de bibliotecas e módulos. E, claro, aqui, você aprenderá a trabalhar com eles. O que exatamente são bibliotecas e módulos? Pense neles basicamente como programas que já foram escritos por outros desenvolvedores de Python Lembre-se de que a comunidade Python é grande. Você tem desenvolvedores que escreveram seus próprios tipos de código. Talvez exista um programador que já tenha escrito seu próprio código sobre como criptografar uma senha. Então, em vez de ter que escrever um programa desse tipo do zero, você pode simplesmente importar esse programa para o seu próprio programa. E então modifique para fazer outra coisa. Então esse é o objetivo principal de trabalhar com bibliotecas e módulos. Então, nesta seção, você aprenderá os diferentes tipos de bibliotecas e módulos existentes, as diferenças entre bibliotecas e módulos. E, claro, também teremos diferentes desafios e exercícios de codificação Então, sem perder mais tempo, vamos começar imediatamente. 52. Introdução às bibliotecas e módulos: Bem-vindo a uma nova seção, e aqui vamos falar sobre bibliotecas e módulos. Então, o que exatamente são esses? Vamos pintar um cenário, certo? E se quiséssemos escrever um programa que faça hash de texto simples, certo? Então, digamos, por exemplo, que quiséssemos armazenar senhas em um arquivo. Obviamente, gostaríamos de decifrá-los. Não queremos armazenar senhas em texto simples. Então, como escreveríamos um programa que hash essas senhas Há duas opções, ok? Podemos decidir escrever o programa do zero, que pode levar muito tempo, ou, simplesmente, podemos usar algo chamado módulo que já tem o código necessário para fazer o hash do nosso texto Portanto, um módulo normalmente é um arquivo Python que já contém código Podem ser funções, variáveis, classes, declarações, etc., que servem a um propósito específico, enquanto uma biblioteca, como você já deve ter imaginado, geralmente é um grupo empacotado desses módulos organizados em torno de um objetivo mais amplo Portanto, você pode pensar nos módulos como funções muito específicas que servem a um propósito muito específico, enquanto uma biblioteca seria uma coleção desses módulos. Como exemplo, temos o ponto pi da data e hora. Este é um módulo que tem funções específicas para caminhar com datas e horários. Também temos uma biblioteca chamada HH Lib, a Biblioteca HH, que seria a biblioteca que precisaríamos usar para fazer o hash de nosso texto Agora, o que temos na biblioteca de hash? Temos diferentes tipos de algoritmos. Temos o MD five, que criará um hash de 128 bits Temos o Shall one, que gerará um hash de 160 bits, Shaw 256, que gerará 25, seis e, claro, o Shell cinco e dois, que gerará um hash de 512 Também existem outros tipos de funções nessa biblioteca, como o hash leap dot u, que aceitam dois parâmetros, dados de nome que podemos usar para criar um hash com um nome de algoritmo específico Então, daqui para frente, as bibliotecas podem ser incorporadas. Nós as chamamos de bibliotecas padrão. Isso virá por padrão com sua instalação do Python ou também podemos usar bibliotecas externas Nós nos referimos a eles como terceiros. Essas bibliotecas não vêm com a instalação do Python, então você mesmo precisará instalá-las manualmente, e elas são desenvolvidas pela comunidade Python Então, mais uma vez, os módulos têm um código muito específico que serve função muito específica, enquanto as bibliotecas serão uma coleção desses módulos. Outra coisa que eu quero que você perceba é que dentro da comunidade Python, você também pode ouvir falar de outro termo chamado pacotes Os pacotes estão em algum lugar entre os módulos e as bibliotecas pois também são uma coleção de módulos, mas os módulos tendem a ter um propósito muito próximo. Eles não são tão amplos quanto as bibliotecas. Então, por exemplo, você pode ter seu pacote de e-mail e, no pacote de e-mail, você terá módulos como email dot message, seu email dot mime, seu email dot Utils e muito mais Outra vantagem dos pacotes é que eles podem nos permitir organizar esses módulos em uma estrutura hierárquica usando pastas e subpastas Portanto, cada pacote normalmente conterá o arquivo int PY. O que diz ao Python que, Ei, esse diretório em particular, não é uma biblioteca Na verdade, é um pacote. É assim que podemos ajudar o Python diferenciar entre o pacote e a biblioteca O pacote terá um arquivo chamado especificamente de arquivo ini dot py. Então é isso para bibliotecas, módulos e pacotes. German Vinexway, não começaremos a trabalhar com eles. 53. Criando um módulo personalizado: Comece a trabalhar com os módulos e bibliotecas padrão do Python Quero que criemos nosso próprio módulo personalizado e depois o usemos em um de nossos programas, ok Então esse é o nosso arquivo de programa principal aqui, o ponto principal pi. O que vou fazer é criar um novo arquivo, ok, e então chamar isso de matemática na pontuação de anúncio. Dot PY. Está bem? Esse será o arquivo que conterá nosso próprio módulo personalizado. Agora, o módulo que vamos criar será muito simples, pegará dois números e depois os somará. Está bem? Então, lembre-se de como criamos nossas funções personalizadas. Usamos a função fina. E agora vou adicionar o nome da função, que será adicionado aos números quadrados e, em seguida, duas variáveis. Vai pegar dois números e adicioná-los. Podemos usar qualquer letra para representá-las. Vou usar F e V, apenas como exemplo, e depois adicionar minha coluna no final. Agora, o que eu quero que a função faça? Eu quero adicionar F e V. Então eu vou dizer que retorne o valor de quanto de F mais V. E aí está. Agora temos um módulo personalizado que adicionará duas variáveis, F e V, e depois transformamos o resultado. Ok. Se eu fosse voltar ao meu arquivo PI principal agora e quiser usar esse módulo que criamos no método e no arquivo Pi, o que vou fazer agora é usar a função chamada Importar. Essa é a função que agora precisamos usar para importar nosso módulo personalizado. Então, será o nome do arquivo, que é a matemática do anúncio de pontuação. Está bem? E agora, o que precisamos fazer? Precisamos fornecer dois números. Está bem? Então, posso dizer que o número um é igual a cinco e, em seguida, o número dois é igual Está bem? Só como exemplo. Tudo bem. Agora, queremos imprimir os resultados da adição do número um e do número dois. Então, a propósito, me perdoe. Não deve haver nenhum espaço entre número um e o número dois. Me perdoe. Já que é uma variável, ok? Então, sem espaços nos nomes das variáveis, me perdoe. Então, queremos imprimir esse resultado. Então eu posso atribuir uma variável chamada resultado para ser igual a quê? Agora vou inserir o módulo personalizado, que era matemática na pontuação e OK. E agora, ponto, qual era a função? A função que tínhamos em nosso método Ad file é adicionar números de sublinhado. Está bem? Então, agora vou voltar aqui para o meu arquivo principal e agora dizer adicionar números de sublinhado E agora, entre colchetes, o que estamos adicionando? Estamos adicionando o número um e o número dois. E aí está. Tudo o que preciso fazer agora é simplesmente imprimir os resultados. Vou dizer impressões e, em seguida, entre colchetes, vamos adicionar um código, e então eu posso dizer que a soma é, e eu posso adicionar vírgula e então simplesmente dizer o resultado, e aí está E agora, se eu executar o programa, aí está, ele diz que a soma é 12. Então, para recapitular rapidamente, primeiro criamos um arquivo separado e, a propósito, os arquivos estão na mesma pasta Ok, isso é muito, muito importante. Então, criamos um arquivo chamado Mth Underscore ad, e esse seria nosso módulo personalizado Definimos o nome da função Adicionar números de sublinhado Ele recebe quaisquer duas variáveis, F e V, e então retornamos o valor da adição dessas duas variáveis. Então, voltando ao nosso arquivo principal agora, a primeira coisa que precisávamos fazer era importar esse módulo personalizado, que é um anúncio de sublinhado matemático aqui Agora precisamos fornecer os valores de nossas duas variáveis. Eu não quero que você se confunda. Não pense assim, Oh, porque em nosso módulo personalizado, usamos F e V. Portanto, no arquivo principal, F deve ser igual a cinco e, em seguida, V deve ser igual a sete. Por que estamos usando o número um, o número dois? Sempre tenha em mente que essas variáveis, esses parâmetros aqui, não representam basicamente nada. É apenas uma forma de dizer à função de ATLPyn que, Ei , dentro dessa função, aceitaremos duas variáveis e depois as somaremos Poderíamos ter usado qualquer letra aqui. Poderíamos ter usado B, C, Z. Poderíamos ter usado X. Poderíamos ter usado qualquer coisa. Poderíamos ter usado o número um. Número dois, usamos qualquer nome, coisa para representar esses parâmetros, ok? Então não pense que, Oh, quaisquer parâmetros que você especificar aqui devem ser os mesmos aqui, não, ok? Tudo o que o Python deve saber é que, OK, essa função aceitará duas variáveis Vai pegar dois números e depois adicioná-los, ok? Então, aqui, dissemos que o número um é igual cinco, o número dois é igual E agora essa é a parte complicada, ok? Linha seis. Queremos imprimir os resultados, então criei um v chamado result, que agora seria igual, em primeiro lugar, ao nome do módulo que é math dot add e depois dot porque queremos acrescentar a função que criamos A função aqui é Adicionar números subscritos. Então, nós o anexamos à matemática no anúncio de pontuação e, agora, entre colchetes, basta o número um, o número dois, e a última coisa é imprimir os Então dissemos que a soma é e depois o resultado e foi assim que obtivemos. Então, parabéns. Você escreveu seu primeiro módulo personalizado e também conseguiu importá-lo e usá-lo com sucesso. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 54. Como fazer wok com um módulo padrão: Bem vindo de volta. Então, na lição anterior, criamos com sucesso nosso próprio módulo personalizado e pudemos importá-lo e usá-lo em nosso arquivo principal. Mas agora eu quero mostrar como podemos importar algumas das bibliotecas e módulos padrão que vêm com o Python Então, deixe-me remover todo esse código, e vou deixar a palavra-chave Import, a função principal, e o nome do módulo que vamos importar é chamado de random. Este é um módulo embutido no Python que nos permitiria criar ou gerar números aleatórios a partir de Na verdade, deixe-me mostrar um pouco da documentação aqui. Você pode ver que o Python tem um módulo embutido chamado random. E o problema do aleatório é que ele é tão poderoso, tem muitos métodos que o acompanham. Dê uma olhada no método de escolha. Isso retornará um elemento aleatório da sequência fornecida. Vou usar esse método específico para gerar uma letra aleatória. Então veja isso, ok? Primeiro , vou criar uma variável chamada letras e depois igual a dois, e vou digitar todas as letras aqui, de A a Z, ok Então, queremos que nosso programa gere uma letra aleatória dessa lista, ok, dessa sequência. Então, como vamos fazer isso? Bem, vou criar uma nova variável chamada random dos chamada Letter, ok? E agora, aqui, eu vou dizer aleatório Lembre-se, a sequência, primeiro de tudo, teremos que adicionar o nome do módulo ou biblioteca, então é aleatório aqui. E agora o método, que é a escolha, será o ponto e agora a escolha. E agora, entre colchetes, letras. Isso é tudo que eu tenho que fazer. E agora, o que fazemos, imprimimos e posso dizer que a letra aleatória escolhida é. E então eu posso adicionar minha vírgula e simplesmente adicionar uma letra de sublinhado aleatória E aí está. Isso é tudo o que temos que fazer. Então, agora, se eu executar o programa, aí está. A letra aleatória escolhida é M. Ok. Vamos tentar executar o programa novamente. Talvez escolhamos uma carta diferente que eu deveria. E aí está. Agora é C. Novamente, agora é A. Mais uma vez agora é V. Você pode ver agora que realmente funciona. Então, uma rápida recapitulação, o que fizemos? Primeiro, importamos o módulo padrão chamado random, que tem uma lista de diferentes tipos de métodos que gerarão uma letra aleatória. Então, a primeira coisa que fizemos foi criar uma variável de letras que conterá todas as letras de A a Z e, em seguida, atribuímos outra variável chamada letra aleatória que agora conterá a letra real que será gerada. Na verdade, é uma letra aleatória que foi gerada. E então dissemos random bin o nome do módulo e, em seguida, anexamos o método que é dot Choice e, em seguida, entre colchetes, letras E agora simplesmente imprimimos a letra aleatória que foi escolhida na linha quatro. Então é isso, obrigado por assistir ao vídeo. Te vejo na próxima aula. 55. Geração de senhas com módulos aleatórios e de string: Bem, volte aqui. Na lição anterior, aprendemos com sucesso como gerar uma letra aleatória usando o módulo aleatório e também o método de escolha de pontos aleatórios. Uma pergunta que você pode ter aqui é, bem, se quiséssemos gerar várias letras e não apenas uma? O que precisamos fazer é, antes de tudo, alterar o método da escolha aleatória de pontos para opções aleatórias de pontos, porque agora está no plural Estamos lidando com mais de uma carta. Outra coisa sobre escolhas aleatórias como método de função é que ela aceitará dois parâmetros em vez de um. A primeira será o que chamamos de população, que é basicamente de onde estamos retirando as letras E então a segunda será o número real de letras que queremos gerar. Então, neste caso, agora, eu vou dizer que K é igual a três. Tudo bem. E agora eu posso mudar o texto impresso de letra para letra e depois mudar E para R. Agora, se eu executar o programa, temos KJ, posso executá-lo novamente Temos QMW, certo? Então você pode ter isso em mente. No entanto, queremos dar um passo adiante para gerar uma senha aleatória. Então, não estamos mais lidando apenas com cartas. Agora vamos combinar letras com maiúsculas e números e assim por diante E tenho certeza de que você já viu geradores de senhas aleatórios antes Talvez esteja no site em que você deve criar uma conta. Você deseja criar uma conta e, em seguida, eles se oferecem para gerar uma senha para você, que você pode alterar posteriormente. Vou mostrar como podemos criar nosso gerador de senhas aleatórias e usaremos apenas cinco linhas para fazer isso. Na verdade, quatro linhas, apenas quatro linhas, ok? Você não acredita em mim. Dê uma olhada nisso. Então, primeiro de tudo, vamos manter a importação aleatória porque obviamente, queremos randomizar as letras e os números, mas vamos importar uma biblioteca aqui chamada string porque vamos manipular nossas strings, que incluirão letras, que incluirão letras, números e Então, temos a string de importação e agora vou criar uma variável que representará a senha. Vou chamá-lo de senha igual. E lembro que, na lição anterior, vou dizer opções aleatórias, ok, de pontos, porque agora vamos lidar com várias letras. E agora, entre colchetes, lembre-se de que o primeiro parâmetro para essa função ou método será a população Temos que dizer à função de onde retirar a corda das letras. O problema da biblioteca de strings é que, deixe-me mostrar aqui, o módulo de string. Em vez disso, temos uma variedade de métodos ou, nesse caso, os chamamos de constantes, ok? Então, podemos dizer string dot Ask the score letters. Isso exibirá letras maiúsculas e minúsculas E então podemos especificar. Podemos dizer string dot Ask em minúsculas Isso exibirá apenas letras minúsculas e, em seguida, temos para maiúsculas, dígitos, dígitos hexadecimais, pontuação e assim por diante Portanto, temos todos esses métodos, todas essas constantes com as quais podemos trabalhar ao importar o módulo de string Então, deixe-me arrastar isso para longe. O que vamos fazer agora é para as escolhas aleatórias, queremos puxar a string dot ask e agora sublinhar as letras. Está bem? Vamos pegar letras aleatórias. Além disso, também queremos inserir quais dígitos, também queremos ter números em nossa senha Então, basicamente, estamos dizendo à função, estamos dizendo ao Python que, Ei, para as opções de letras, para a senha, vamos inserir letras maiúsculas e minúsculas e também dígitos E então, é claro, o segundo parâmetro, precisamos especificar quantas letras e dígitos estarão em nossa senha Eu vou dizer que K é igual, e vamos com dez Está bem? Então, uma senha bem forte. E agora, tudo o que temos que fazer é o quê? Basta imprimir. Vamos imprimir. E eu vou dizer gerado. Então gerou a senha. OK. E então deixe-me adicionar minha vírgula e depois a senha É isso mesmo. Vamos gerar a senha. E agora vamos tentar, ok? Então, eu vou prosseguir agora mesmo, executar o programa, e aí está. Temos K, temos seis, temos F maiúsculo, temos seis, zero Smoleta, H, J, zero, W maiúsculo e depois capital você pode ver agora, ele criou com sucesso uma senha com dez caracteres. Também tínhamos letras maiúsculas, minúsculas e alguns números. Mas e se, em vez de ter os caracteres separados por uma vírgula e códigos, quisermos unir tudo, para termos apenas uma única string Como vamos fazer isso? Teremos que fazer uso de uma função especial chamada função de junção, ok? Na verdade, é um método. Então, o que você quer fazer agora é aqui, onde diz aleatoriamente as opções, vamos adicionar função muito especial chamada junção de pontos, e é assim, ok? Teremos um único código e, em seguida, junção de pontos, e agora teremos que abrir um colchete para cobrir tudo aqui, e aí está Então, o que isso vai fazer é gerar a senha, mas então todos os caracteres serão unidos para chegar lá. Agora, se eu executar o programa mais uma vez, aí está. Agora temos uma aparência muito melhor. Eu posso executá-lo novamente, e aí está. Execute-o mais uma vez e pronto. Então, é incrível como, com apenas quatro linhas de código, conseguimos criar nosso próprio gerador de senhas aleatórias. Obviamente, tivemos que usar dois módulos padrão, o módulo aleatório e depois o módulo string e, claro, duas linhas adicionais de código, e aí está. Então é isso. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 56. O módulo datetime: Vamos continuar trabalhando com os módulos padrão. E o próximo será muito, muito importante porque não só é um módulo muito útil, mas também é relevante para o mundo da segurança cibernética E eu estou falando sobre o módulo de data e hora. Este é um módulo que você pode usar para exibir coisas como sua hora, a data atual. Você pode manipular a data e assim por diante. Então, deixe-me mostrar como trabalhar com isso. Vou remover tudo isso e simplesmente dizer importação e depois data e hora, ok? Agora, vamos supor que quiséssemos registrar a data e a hora atuais. Vou vir aqui e vou dizer que o tempo atual de sublinhado é igual E agora teremos que chamar o módulo que é data e hora, ponto e agora o método, que será usado para realmente exibir a data e a hora atuais. E também é chamado de ponto de data e hora agora. É meio interessante que, no módulo daytime, você tenha uma função chamada day time agora que é realmente usada Então, tudo que eu tenho que fazer a partir deste ponto agora é simplesmente dizer imprimir. E então, entre colchetes, posso dizer que a data e a hora atuais são espaço, e então você pode adicionar minha vírgula aqui e depois dizer atual na pontuação, hora e vamos ver Eu vou executar o programa, e aí está. A data e a hora atuais são 27 de outubro de 2024, e essa é a hora certa, como você pode ver No entanto, quero apresentar a você outra coisa. Veja, dado o fato de que aqui temos dia e depois o dia novamente, é meio redundante Quero dizer, o código ainda funciona perfeitamente bem. Não me interpretem mal. O código funciona. Mas se você quiser ser muito profissional sobre isso, uma coisa que podemos fazer é dizer isso, sabe o que? A partir do módulo diurno, vamos importar especificamente o método de data e hora Então, o que vou fazer agora é aqui, vou dizer a partir da data e hora, importar a hora do dia E agora a beleza é que aqui, não precisamos mais dizer ponto diurno, mas você pode simplesmente remover tudo isso E simplesmente diga o ponto diurno agora. Porque agora dissemos ao Python que, ei, do módulo chamado daytime, eu quero que você importe especificamente a classe ou o método chamado datetime Agora, se eu executar o programa novamente, você pode ver que ele ainda funciona perfeitamente bem Só que essa é uma maneira um pouco mais profissional e muito melhor de escrever seu código. Agora, quero que levemos esse programa um passo adiante e realmente combinemos o módulo diurno com o módulo aleatório Então, basicamente vamos gerar atividades aleatórias, como login, logout, upload de arquivo, alteração de senha, você sabe, coisas que um usuário pode fazer em um sistema de computador, vamos gerá-las aleatoriamente e também gerá-las com alguns registros de data e hora, ok? Então, eu vou voltar aqui. E logo após o módulo diurno, agora vamos importar aleatoriamente Está bem? Agora, vamos indicar os diferentes tipos de ações que vamos randomizar Então, vou dizer que ações são iguais, e agora podemos criar nossa lista E vamos adicionar uma variedade deles, ok? Em primeiro lugar, vamos continuar com a vírgula de login. Vamos usar o Logout também. Ok, temos algumas sugestões aqui, como registrar, redefinir a senha e, ok, acho que gosto dessas quatro. Acho que quatro é o suficiente, ok? Então, ações diferentes, como login, logout, registro, redefinição de senha Então, vamos randomizar essas ações. Deixe-me adicionar um sublinhado entre a redefinição e a senha. Sempre que suas cordas tiverem mais de uma palavra, se forem duas palavras, sempre use um sublinhado para juntá-las, é uma maneira muito melhor de escrever Então, uma coisa que vou fazer agora é aqui, vou manter a hora atual igual ao ponto diurno igual ao ponto diurno No entanto, também precisamos criar uma variável que conterá a ação aleatória Então, vou vir aqui agora e dizer que a ação de sublinhado do usuário é igual a uma escolha aleatória E depois, entre parênteses, as ações. E aí está. E tudo o que precisamos fazer agora é imprimir que o usuário executa a ação de visualização em um determinado momento. Então, podemos fazer isso. Vou dizer print e agora a string F, e direi que o usuário executou e agora nossos colchetes para representar a Então, essa será a ação do usuário na pontuação. E agora posso dizer, às vezes , os colchetes encaracolados, a hora atual do sublinhado Adicione os códigos de fechamento, feche o colchete e pronto Então, vamos seguir em frente agora e executar o programa, e aí está. O usuário realizou o cadastro em S e assim. Vamos executá-lo novamente. Realizei o login desta vez, ok, executei uma senha definida. Como você pode ver , está funcionando. Agora, e se, assim como na lição anterior, quiséssemos ter mais de uma ação sendo executada pelo usuário? O que você vai fazer de forma muito simples? Nós vamos vir até aqui, mudar de escolha para escolhas. E então lembre-se, teremos que indicar quantas ações queremos randomizar Vou dizer que K é igual a dois, e agora, aqui, posso dizer que o usuário executou vamos manter o texto impresso como está Vamos executar o programa novamente. E agora você pode ver que diz que o usuário executou, você disse login com senha aqui, execute-o novamente, e agora é login e agora é logotipo. Então é assim que você pode trabalhar com o módulo diurno acordo com o módulo aleatório para gerar ações aleatórias em horários diferentes Obrigado por assistir ao vídeo. Te vejo na próxima aula. 57. Trabalhando com uma biblioteca externa: Ao completar esta seção sobre bibliotecas e módulos, preciso mostrar como você pode trabalhar com uma biblioteca externa. E aquela com a qual trabalharemos será uma biblioteca muito, muito poderosa, e será a biblioteca de criptografia E, de fato, deixe-me arrastar a documentação. Então, essa biblioteca em particular é desenvolvida e mantida pela comunidade Python Você pode acessar cryptography dot IO se quiser saber mais Mas aqui, eles nos fornecem ideias sobre como realmente importar a biblioteca e especificamente, uma função específica, que é a função Fernet Está bem? Isso é o que é usado principalmente para criptografar e também criptografar mensagens. Então, deixe-me mostrar como vamos trabalhar com isso. E eu adicionei algumas notas aqui porque é muito importante que você entenda passo a passo como nosso programa realmente vai funcionar porque, para ser honesto, pode ficar bem confuso, ok? Eu não vou mentir. Lembre-se de que, na criptografia, podemos criptografar uma chave, certo, vamos usar uma cifra, que podemos usar para criptografar Mas então também podemos decifrar a mensagem que foi criptografada Então, a forma como funciona é que, primeiro lugar, usando a função frente, teremos que gerar a chave que vamos usar tanto para criptografia quanto para criptografia e , em seguida, podemos passar essa chave para nossa Lembre-se de que, no mundo da criptografia, usaremos cifras que combinam um algoritmo e a chave para a criptografia e a criptografia reais Então, são basicamente quatro etapas. Em primeiro lugar, geramos nossa chave. Então, dizemos que frente não gera chave. Isso gerará a chave e, em seguida, poderemos passar a chave para nossa cifra E agora, para criptografar a mensagem real, diremos cifra porque agora ela está segurando a chave e depois criptografa E então, entre colchetes, nossa função message dot encode. E então, ao contrário de descriptografar, podemos dizer que a mensagem descriptografada será igual a Cipher dot decrypt . E agora entre colchetes porque estamos decifrando qual é a mensagem criptografada qual Então, vamos passar isso e adicionar o último método dot decode para descriptografar Então, vamos começar do começo, ok? A primeira coisa que vou fazer é importar. Então, eu vou dizer que do criptógrafo P dot Fernet, vamos importar a classe de Está bem? Esse é o primeiro passo. Agora, o primeiro passo, lembre-se, é gerar a chave. Então eu vou dizer que chave é igual, e agora a samambaia gera a chave de pontuação. Isso criará uma chave. E agora podemos dizer que a cifra será igual a Fernet e depois à Neste momento, gostaria que, em primeiro lugar, imprimíssemos a chave gerada que criamos. Então, eu posso entrar aqui agora e dizer imprimir, e depois entre colchetes, digamos chave gerada Está bem? Então, narrado e, em seguida, tecla, posso adicionar meus dois pontos e, em seguida, adicionar uma vírgula e, em seguida, pontuar o código Tudo bem. Então, isso aqui, essa função específica aqui é o que vamos usar para mostrar a chave como uma string. Agora, o próximo passo será realmente criptografar a mensagem. Então, o que fazemos? Podemos dizer que mensagem é igual Vamos adicionar a mensagem. O padrão aqui diz hello world. Vamos tornar isso um pouco mais complexo. Eu vou dizer olá, mundo. É uma mensagem de circuito. Ok, eu acho que está tudo bem. É uma mensagem de circuito. Está bem? Então, essa é a mensagem que vamos, primeiro, criptografar e depois descriptografar Então, agora vou entrar aqui agora e dizer criptografado na mensagem do escopo. Agora vamos criptografar a mensagem e, como vamos fazer isso, vamos dizer cipher dot encrypt e, em seguida, entre colchetes, vamos passar a mensagem e o método dot encode para criptografar nossa mensagem encode Até agora tudo bem. O próximo passo agora será imprimir. Podemos imprimir a mensagem criptografada agora, então vou imprimi-la entre colchetes. Vamos adicionar nossos códigos, e então eu posso dizer que a mensagem criptografada tem dois pontos e agora adicionar minha vírgula e simplesmente dizer criptografada na mensagem de pontuação Está bem? Até agora tudo bem. A última etapa, é claro, após a criptografia será descriptografar Então, eu vou dizer que a mensagem de sublinhado decifrada é igual A cifra pontilha a cripta. Em seguida, entre colchetes, passaremos qual é a mensagem criptografada de sublinhado criptografada e, em seguida, pontuaremos o código Colchetes, feche o último suporte e aí está Então, o último passo agora é imprimir a descriptografada e, em seguida, a mensagem descriptografada Agora eu posso ver aqui que temos Oh, não há nenhum colchete de fechamento, para me perdoar. Eu cometi um erro ali mesmo. E espero que isso funcione. Deixe-me ir em frente agora e correr. E aí está. Então, agora você pode ver na minha tela. Diz: Carregando o ambiente Nix. Portanto, a beleza do Python em trabalhar em plet é que embora seja na verdade uma biblioteca externa, ele importará automaticamente a biblioteca, pois basicamente instalou a E agora temos o programa em execução, e ele diz que a chave gerada foi essa, ok? Essa é uma chave longa. Então, a mensagem criptografada agora está aqui, muito, muito longa, como você pode ver. E, claro, a mensagem criptografada é hello world. Essa é uma mensagem secreta. Vamos tentar mudar a mensagem para outra coisa. E eu vou dizer que o Python é incrível. Vamos executá-lo novamente, e aí está. Então, agora temos uma chave gerada diferente e, claro, uma mensagem criptografada diferente. Então é assim que se trabalha com a biblioteca de criptografia. E só para dar uma rápida recapitulação, em primeiro lugar, importamos o módulo furnit da criptografia da biblioteca Então, é claro, no mundo da criptografia, teremos uma chave que usaremos para criptografia e decodificação Geramos a chave aqui mesmo com o uso do método de chave Fn Dogenerate e, em seguida, atribuímos essa chave à nossa Imprimimos a chave gerada usando a função de decodificação de teclas E então, para criptografar a mensagem, temos que, primeiro de tudo, adicionar o que a mensagem realmente é A mensagem aqui é que o Python é incrível. E então dizemos: Ok, a mensagem criptografada será igual a agora a função cipher dot encrypt e, em seguida, entre colchetes , e, em seguida, entre colchetes Então, o método de codificação de pontos aqui converterá o texto simples ou a string em bytes, ok? E agora o dot encrypt receberá a mensagem codificada. Em seguida, vou criptografá-lo produzindo uma versão criptografada. E, claro, a saída será igual à criptografada na mensagem de pontuação. E então, a última etapa agora é realmente decifrar a mensagem. Então, decifrar pontos decifrados aqui. Vamos pegar a mensagem criptografada e depois descriptografá-la, devolvendo-a ao formato original e, em seguida, decodificaremos a porta, aqui mesmo e, em seguida, decodificaremos a porta Esse método converterá os bytes descriptografados de volta em um formato de string legível E, claro, finalmente, imprimimos a mensagem decifrada real Então é isso, obrigado por assistir ao vídeo. Te vejo na próxima aula. 58. Introdução ao projeto da ferramenta de criptografia e descriptografia: Bem-vindo ao próximo Mini Projeto. E aqui, vamos criar uma ferramenta para criptografar e descriptografar arquivos Agora, a forma como funciona é que, depois que o usuário executar o programa, ele receberá quatro opções diferentes. Você pode ver na tela que eles podem gerar uma chave de criptografia, criptografar o arquivo, descriptografar o arquivo ou simplesmente Então, se eu escolher a opção número um aqui para gerar uma chave de criptografia, agora você pode ver que seremos solicitados com a pergunta: digite o caminho do arquivo para salvar a chave Agora, o objetivo disso é que, na verdade, forneceremos ao usuário a capacidade de usar a chave padrão que nós mesmos criaremos ou que ele possa usar sua própria chave personalizada. Esse é o objetivo dessa pergunta ou solicitação, solicitando que o usuário forneça o caminho do arquivo. Então, se o usuário decidir usar a chave padrão, então eu vou pressionar Enter agora, agora você verá que criamos um arquivo aqui chamado Encryption underscoolk dot key que agora tem uma chave específica Então, agora, se eu voltasse ao programa e digitasse a opção número dois para criptografar um arquivo, criei um arquivo tx de amostra aqui com algum texto aleatório Então, digamos, por exemplo, que quiséssemos criptografar esse arquivo Agora vou fornecer o nome do arquivo, ponto de amostra TXT, pressionar Enter E agora podemos fornecer um nome para o arquivo de saída. Então, podemos chamá-lo de criptografado no arquivo sco dot TXT, ok . E agora pressionamos Enter. E agora podemos inserir o caminho da chave de criptografia a ser usada. Novamente, vamos usar a tecla padrão, então pressionarei Enter e agora nosso arquivo foi criptografado e salvo em outro arquivo criptografado e salvo chamado arquivo de sublinhado criptografado DTXT Você pode ver que este é o arquivo aqui. Então, se eu abri-lo, agora, você pode ver que esta é a versão criptografada do nosso arquivo DTXT de amostra Agora, se eu voltar e usar a opção número três para descriptografar um arquivo E agora vamos decifrar o arquivo que acabamos de criptografar Então, vou criptografar o arquivo Underscore dot TXT. Este é o arquivo que acabamos de usar Este é o arquivo recém-criptografado. Então agora eu pressiono Enter. E agora qual é o nome do arquivo de saída? Podemos dizer arquivo descriptografado e sublinhado dot TXT. Pressionamos Enter e, em seguida, pressionamos Enter novamente para usar a tecla padrão. E agora descriptografamos o arquivo e o enviamos para um novo arquivo chamado Decrypted Underscore file Decrypted E se eu abrir aqui, agora você pode ver que recebemos exatamente o mesmo texto novamente. Então, basicamente, a forma como o programa funciona é que vamos fornecer um arquivo, neste caso, agora será amostrado em TXT Vamos criptografá-lo usando a chave de criptografia que geramos Vamos armazená-lo em um arquivo chamado texto NSCOfldo criptografado e, em seguida, tentaremos descriptografar o arquivo e salvar o conteúdo em textos criptografados do Osco salvar o conteúdo em textos criptografados do E, como você pode ver agora, funciona perfeitamente bem. Então, vou mostrar exatamente como podemos criar esse tipo específico de ferramenta. Vou dividir o projeto inteiro em três tópicos diferentes. Então, no primeiro, vamos criar uma chave de criptografia, depois no segundo vídeo, vamos criar as chaves de criptografia e decodificação, as funções E, finalmente, na tarefa número três, adicionaremos a interface do usuário. Sem perder mais tempo, vamos começar. 59. Tarefa 1 - Crie a chave de criptografia: Tudo bem, então vamos começar. E a primeira coisa que vamos fazer é importar a biblioteca necessária, que, obviamente, será o ponto criptográfico Furnt Então, eu vou entrar aqui e dizer a partir de e depois criptografia dot furnt e agora importar rede. OK. Agora, queremos escrever uma função que possamos usar para gerar e salvar nossa chave de criptografia. Então, vamos continuar e criar uma função. Vou chamar isso de definir e, digamos, gerar chave de sublinhado, e agora em Bracket Então, esse será o nome da nossa função que vamos usar para gerar nossa chave de criptografia. Agora, sempre que você estiver gerando suas chaves, sempre que estiver usando essa função, podemos realmente adicionar um tipo específico de parâmetro, que será o caminho do arquivo. Podemos criar o nome do nosso arquivo. Então, o que vou fazer agora é dizer arquivo, e agora sublinhar o caminho Ok, agora será igual, e agora podemos adicionar o nome do arquivo Nesse caso, agora em códigos, vou dizer que criptografia sublinha chave de ponto É assim que você deseja salvar o arquivo para sua chave de criptografia. Vai ser o nome e depois a tecla de pontos. E vou adicionar minha coluna no final. Muito, muito importante. Agora, para gerar a chave real em si, você pode ver que já nos fornecemos as informações. Eu vou dizer que a chave é igual e agora a frente, agora o ponto gera a chave de sublinhado e agora e Então, isso aqui é o que vamos usar para gerar a chave real. Vamos usar esse método, que é a samambaia para gerar a chave, e vamos salvá-la em uma variável chamada key Então, agora, vamos criar o arquivo real em si. Então eu vou entrar agora, e vou dizer com, ok, W e agora aberto. Então, vamos criar nosso arquivo e, agora, entre colchetes, vou adicionar o caminho do arquivo, ok? E agora vírgula e agora o modo certo. Então, será WB, e agora vou dizer S K no arquivo de partitura Então, isso aqui abrirá um arquivo no que chamamos de modo binário correto. Agora, você pode estar se perguntando o que exatamente é WB. É semelhante ao modo de gravação, que será apenas W, com o qual já estamos familiarizados, no entanto, no WB, você gravará dados em formato binário em vez de texto simples Então, basicamente, isso significa que ele gravará dados como bytes brutos em vez de caracteres. Agora você pode estar se perguntando, ok, então qual é exatamente o objetivo? Qual é a vantagem? Bem, se você escrever dados binários usando seu modo de texto normal, que será W, o programa tentará interpretar os bits como caracteres, que muitas vezes pode resultar em erros de codificação, corrupção de dados ou talvez até perda da integridade dos dados Portanto, é sempre recomendável usar o WB sempre que você estiver trabalhando com criptografia, arquivos de imagem ou qualquer dado não textual para garantir que os dados sejam armazenados corretamente em seu formato de bits original sem qualquer alteração Tudo bem, então agora teremos que escrever a chave para o arquivo. Então, eu vou vir aqui agora, e vou dizer a chave no arquivo de partitura, e agora o método write, e agora o que estamos transmitindo? Estamos passando a chave real em si. Então, aqui, escreveremos a chave do arquivo e pronto, mas também podemos escrever algo para imprimir. Então, digamos que imprima. E agora, entre colchetes, podemos usar uma string E eu vou dizer códigos. Digamos que a chave de criptografia também foi salva, e agora podemos adicionar o caminho de sublinhado do caminho do arquivo, e aí está Portanto, criamos com sucesso a função para gerar nossa chave de criptografia. Mas agora também escreveremos outra função para carregar a chave de criptografia do arquivo. Então, eu vou entrar aqui. Vou dizer definir a chave de sublinhado de carregamento e agora, entre colchetes, vou adicionar um caminho de arquivo E agora isso será igual, é claro, à criptografia da chave de criptografia, sublinhado, chave de ponto chave Então, a partir daqui, vou dizer largura e agora abrir vou adicionar o arquivo no caminho da pontuação. E agora queremos ler. Queremos ler o arquivo. Então, o que você acha que vamos usar? Vamos usar RB em vez de WB. Então, agora serão códigos. Vai ser RB. Deixe-me adicionar meu coma aqui mesmo, e depois fechar o colchete e agora como chave no arquivo de pontuação Tinha uma coluna. E agora, finalmente, para ler a chave do arquivo, podemos simplesmente dizer chave é igual e, em seguida, chave, arquivo de sublinhado, ponto, o método de leitura e agora entre colchetes, e agora podemos simplesmente Portanto, na função que acabamos de criar aqui, a chave de sublinhado de carregamento, simplesmente lerá e retornará a chave de criptografia armazenada no arquivo e, claro, essa será a chave necessária para criptografia e decodificação Próximo vídeo do Jelly, onde vamos continuar escrevendo funções para criptografar um arquivo e também para descriptografar o arquivo 60. Tarefa 2: criar as funções de criptografia e descriptografia: Bem vindo de volta. Então, no vídeo anterior, criamos com sucesso a chave de criptografia e fornecemos a ela o caminho do arquivo de criptografia onscorekey dot key E também escrevemos uma função simples para carregar a chave. Então, agora, vamos escrever as funções que vamos usar para realmente criptografar nossos arquivos, mas também descriptografá-los A propósito, acabei de notar aqui na linha nove que não adicionei meu cólon no final Então, por favor, se você ainda não fez isso, certifique-se de fazer isso também. E também na linha cinco, eu também perdi outros dois pontos, então, por favor, adicione as colunas à linha cinco e à linha nove também, ok, então vamos escrever uma função para criptografar nosso arquivo. Então, eu vou vir aqui e, digamos, definir. E vamos chamar a função criptografar, criptografar, sublinhar arquivo, Agora, pense sobre isso, ok? Nossa função, porque vamos criptografar um arquivo, vamos exigir três parâmetros diferentes, ok? O primeiro parâmetro será o arquivo em si, que vamos criptografar Então, vamos chamar esse arquivo de entrada no arquivo de pontuação. Está bem? Agora, também precisaremos criar um arquivo que conterá a versão criptografada. Então, vamos chamar esse arquivo de saída no arquivo sco. Ok. E, finalmente, precisaremos da chave real que usaremos para criptografar o arquivo de entrada, certo? Então, deixe-me adicionar meu cólon no final. Então, a primeira coisa que vamos fazer agora é criar nosso objeto frente com a chave fornecida. Então, vou dizer que Fernet agora é igual a F, Fernet e agora entre colchetes, vamos Ok. Então, a partir daqui, queremos ler o arquivo de entrada. Está bem? Obviamente, a próxima etapa será realmente abrir o arquivo de entrada que queremos criptografar Então, vou dizer com aberto e agora entre colchetes, vou dizer a entrada no arquivo de pontuação, e agora qual modo vamos usar com o modo binário de leitura, então R B, ok E agora eu vou dizer um arquivo e agora, o que vamos fazer é ler o conteúdo do arquivo, e vamos passar esse conteúdo para outra variável. Então, vamos chamar a variável de original. Eu vou dizer que o original agora será igual a quê? O arquivo é lido porque queremos ler o conteúdo do arquivo, e vamos adicionar nossos colchetes ali mesmo Ok, estamos indo muito bem. Estamos indo muito bem. Agora precisamos criptografar o arquivo. Está bem? E, a propósito, esqueci de adicionar a coluna aqui na linha 16 Então, vamos adicionar uma coluna ali mesmo. Ok, agora que abrimos o arquivo, tudo bem, agora queremos criptografá-lo. Então, vou dizer que vamos chamar isso de criptografado. Essa será a variável para armazenar a versão criptografada real. Então, eu vou dizer que criptografado será igual a agora Furnt dot encrypt Agora, entre colchetes, porque passamos ponto do arquivo lido na variável original Eu vou entrar aqui agora e simplesmente dizer leia nulo, então qual é a última coisa que vamos fazer? Teríamos que gravar o conteúdo criptografado em um arquivo. Então, eu vou dizer largura aberta, e agora entre colchetes, a saída em nosso arquivo de chamada, e agora o modo será binário correto, então WB E agora eu vou dizer como arquivo em nosso cólon, ali mesmo E tudo o que precisamos fazer agora é dizer o ponto certo do arquivo porque estamos criptografando nosso arquivo e, agora, entre colchetes, o que será Vai ser criptografado. Então, eu vou dizer criptografado. Então, isso gravará o conteúdo criptografado no arquivo. E, claro, podemos simplesmente adicionar uma declaração impressa que você pode dizer impressa. E sim, podemos usar esse arquivo de impressão criptografado e salvo no arquivo de saída. Então, a partir daqui, o que temos que fazer agora será criar a funcionalidade que podemos usar para descriptografar Então, basicamente, será o contrário do que acabamos de fazer. Então verifique isso para que eu venha aqui. E vamos chamar nossa função decrypt no arquivo de pontuação. E então, assim como com a criptografia, precisaremos de três parâmetros, o arquivo de entrada, o arquivo de saída e a chave. Então, vou adicioná-los, como você pode ver, arquivo de entrada, arquivo de saída e, em seguida, chave. E agora, como sempre, vou dizer que Fernet é igual, depois Fernet maiúsculo e depois chave de Backeds vou dizer que Fernet é igual, depois Fernet maiúsculo e depois chave de Backeds . Então, essa será a chave que vamos usar para descriptografar Então, agora o que queremos fazer ler o conteúdo do arquivo criptografado. Então, eu vou entrar aqui em uma nova linha. Eu vou dizer com aberto, e agora o que estamos abrindo? Estamos abrindo a entrada no arquivo de pontuação, e agora qual modo R B? Eu vou dizer arquivo S e dois pontos. Então, agora o que queremos fazer? Queremos decifrar. Então eu vou dizer que o criptografado criptografado aqui é igual ao ponto lido do arquivo, estamos passando o conteúdo do arquivo criptografado para uma variável chamada criptografado porque agora o que vamos fazer é criar outra variável chamada decrypted, e agora isso será Agora vou passar a decodificação entre colchetes criptografada. Então, aqui está como vamos decifrar o conteúdo do E agora, qual é o último passo? Queremos salvar as informações descriptografadas em um novo arquivo. Então, agora vou simplesmente dizer com aberto, e agora entre colchetes, e agora entre colchetes, o arquivo de sublinhado de saída, e agora WB um arquivo, dois pontos, e agora simplesmente arquivo com ponto à direita, e agora descriptografado, então vamos E, finalmente, podemos simplesmente adicionar as declarações impressas usuais. Portanto, podemos dizer algo como imprimir, colchetes na coluna F e, digamos , arquivo descriptografado e salvado no arquivo de Eu acho, Ok, eu acho que está tudo bem. E aí está. Ok. Na verdade, deixe-me melhorar esse. Eu posso dizer arquivo. Está bem? E agora colchetes frios e depois o arquivo de entrada Ok. E agora, direi que foi decifrado e salvo no arquivo de saída Eu acho que isso é melhor, e aí está. Então, mais uma vez, criamos funções para criptografar e descriptografar Para a função de criptografia, precisamos de três parâmetros. O arquivo de entrada que vamos criptografar, o arquivo que vamos criar, eu armazenarei as informações criptografadas, que são o arquivo de saída e, em seguida, a chave para a criptografia real Então, criamos essa chave aqui dizendo find é igual a finite e, em seguida E agora abrimos o arquivo original e armazenamos o conteúdo do arquivo em nossa variável chamada original, dizendo que o ponto lido do arquivo é igual E agora, para fazer a criptografia em si, dissemos criptografado é igual a freno encrypt e agora entre colchetes original, e agora com open porque queremos armazenar as informações criptografadas em um novo arquivo, o arquivo de saída, criamos o arquivo aqui nas linhas 19, 20 e 21, e então fizemos exatamente o oposto com a função dissemos criptografado é igual a freno encrypt e agora entre colchetes original, e agora com open porque queremos armazenar as informações criptografadas em um novo arquivo, o arquivo de saída, criamos o arquivo aqui nas linhas 19, 20 e 21, e então fizemos exatamente o oposto com a função de descriptografia. Então, no próximo vídeo, vamos seguir em frente e agora criar a função principal para a interação do usuário 61. Tarefa 3: adicionando a interface do usuário: Chegue à parte final do programa, onde criaremos a interação principal do usuário. Vamos fornecer ao usuário quatro opções diferentes. Talvez eles queiram gerar um arquivo criptografado com chave, um arquivo descriptografado, talvez até mesmo sair E então, dependendo da opção que eles escolherem, teremos que fazer alguma coisa. Então, vamos começar, certo? Então, eu vou dizer definir principal. Esse será o nome da nossa interface e vamos imprimir uma mensagem geral de boas-vindas. Isso não é necessário, mas ei, vamos fazer isso. Bem-vindo à ferramenta de criptografia e decodificação. OK. OK. Agora vamos criar o loop while que percorrerá as quatro opções. Eu vou dizer que antes e agora o cólon é verdadeiro. E agora vamos imprimir o estado das opções. Então, vou usar a impressão. E agora, número um, gere uma chave de criptografia. OK. E agora vamos com a opção número dois, que seria simplesmente criptografar criptografar um arquivo. A opção número três será o que as Arquivo. E agora a opção final, que é a mais chata , saia do programa Ok, aí está. Agora, como agora temos as quatro opções, vamos solicitar que o usuário nos forneça qual opção ele gostaria de escolher. Então, eu vou vir aqui agora, e vamos com a variável ou opção. Está bem? Então eu vou dizer opção e agora é igual e agora entrada. Então, vamos pedir ao usuário que nos diga qual opção você gostaria de usar com o ponto de interrogação, ok? Então, vamos perguntar ao usuário: Ei, o que você gostaria de fazer? Agora, teremos que criar as declarações IL para cada opção específica. Então, vamos com o primeiro aqui. Então, vou dizer que se a opção for igual a um, o que queremos fazer de forma muito simples, podemos gerar nossa chave. Então, eu posso vir aqui agora e simplesmente dizer gerar chave de sublinhado, e agora entre colchetes, qual é o nome da Isso é criptografia, sublinhado, chave de ponto. Então, podemos executar a função imediatamente, certo? E isso funcionará perfeitamente bem. No entanto, eu quero te mostrar uma coisa, ok? Isso não é necessário. Mas e se quiséssemos oferecer ao usuário a opção de realmente usar sua própria chave personalizada e não apenas a chave padrão que já criamos Então, estamos dando ao usuário duas opções, ok? Você pode usar a chave padrão que já temos ou pode nos fornecer o caminho para sua própria chave de criptografia. Agora, como faríamos isso? Bem, eu já escrevi a linha aqui, ok? Então, deixe-me pegar isso, cortar. Eu vou descer aqui e depois colar. E deixe-me explicar para você o que está acontecendo aqui. Então, teremos que passar isso para o caminho de sublinhado do arquivo variável. E agora insira. Então, vamos pedir ao usuário que, ei, insira o caminho do arquivo para salvar a chave. Agora, aqui, onde diz que criptografia padrão em baixo chave, a tecla de ponto ainda faz parte da string. Estou apenas indicando ao usuário que, se você não nos fornecer sua própria chave personalizada, usaremos a chave padrão, que é a criptografia sob a tecla de ponto-chave. Agora, isso é muito importante, onde diz, ou criptografia sob a tecla de ponto-chave. Agora, aqui, estamos dizendo ao Python que, Ei, deveria, no caso, mesmo que o usuário tenha a opção de usar sua própria chave personalizada, se quiser usar nossa própria chave padrão, use-a Então, aqui dissemos ou e agora o nome da nossa chave padrão. Então, tudo o que precisamos fazer aqui é remover a opção padrão e, em seguida, simplesmente passar o arquivo no caminho da pontuação. E aí está. Então essa é a opção número um, toda definida. Vamos passar para a opção número dois. Eu vou entrar aqui e dizer, L F, escolha é igual a dois, dois pontos Então, aqui, gostaríamos de criptografar o arquivo. Agora lembre-se, para criptografar o arquivo, precisamos de três parâmetros Antes de tudo, precisamos pedir ao usuário que nos diga o arquivo que ele gostaria de criptografar, que será o arquivo de entrada E também onde gostaria de armazenar o conteúdo criptografado. Qual será o nome do arquivo de saída? E então, terceiro, qual chave eles gostariam de usar para fazer a criptografia. Então, eu vou vir aqui agora. Vamos passar a entrada variável na escolha da pontuação. Oh, me perdoe. Deve ser a opção LI. Sem escolha. Eu me deixei levar pela opção, sem escolha. Então, insira o arquivo de entrada. Perdoe-me, insira o arquivo de sublinhado. Eu vou dizer iguais. E agora vamos solicitar que o usuário nos diga qual é o nome dos arquivos. Vou dizer que insira o caminho do arquivo a ser criptografado, deixe-me remover esta mensagem Então, insira o caminho do arquivo a ser criptografado. Está bem? Então, vamos solicitar que o usuário faça isso. E então a saída no arquivo Sco será igual à entrada E agora, vamos solicitar que o usuário nos diga o nome do Apple fs. Eu vou dizer que digite o nome do arquivo de saída. Coluna. E agora, finalmente, o que dizer da chave? Eu vou dizer a chave no caminho do escopo. Ok, vai ser igual à entrada. E agora podemos dizer: insira o caminho da chave de criptografia. Caso contrário, o padrão será usado, ok? Então, vou simplificar a declaração de string aqui. Não vou indicar o nome da criança padrão. Eu não acho que isso seja necessário. Então, tudo o que temos que fazer neste momento é dizer também a criptografia ou. Chave de sublinhado, chave de ponto. E aí está, certo? Então, uma coisa que precisamos fazer aqui é levar em conta os erros, ok? E se o usuário e se talvez ele tenha fornecido o arquivo de entrada errado ou o nome do arquivo de saída esteja incorreto, ou talvez até mesmo a chave não esteja correta. O que deveria acontecer? Então, vamos fornecer a opção agora para atender a isso Então, eu vou dizer tente. Lembre-se disso, e agora a tecla é igual à tecla de sublinhado de carregamento. E agora, entre colchetes, o caminho principal, ok? E agora as partes mais importantes são criptografadas no arquivo de partitura E agora, entre parênteses, quais são os três parâmetros? Temos a entrada no arquivo de pontuação, temos a saída, no arquivo de pontuação e agora também temos a chave. Então, esses são os três parâmetros. E se houver algum erro, vamos gerar isso. Eu vou dizer, exceto Exceção. Ok, como E. E agora podemos imprimir nossa mensagem de seta. Então, vou usar a string F e, em seguida, vou dizer algo como seta durante a criptografia. Ok, dois pontos e agora podemos usar nossos colchetes de cores para indicar qual é o erro específico, e aí está Portanto, criamos com sucesso a opção número dois com o usuário x para fornecer o caminho do arquivo que eles desejam criptografar, o nome do arquivo de saída e também a chave E também adicionamos alguns métodos de tratamento de erros. Fantástico. Agora, tudo que eu vou fazer é pegar esse bloco de código, ok? E eu vou simplesmente colar porque pense bem, ok? A criptografia e o processo de criptografia são quase exatamente a mesma coisa. É exatamente o oposto, certo? Então, eu vou copiar todo esse bloco de código, e eu vou vir aqui, e agora eu vou colá-lo. Está bem? Agora, observe, porém, que o recuo não está correto Portanto, certifique-se de que ao fazer exatamente a mesma coisa que eu fiz, verifique se o recuo está correto Certifique-se de que tudo esteja alinhado corretamente, e isso deve ficar bem Ok, tudo o que precisamos fazer agora é alterar as opções aqui, então a opção número três para a número dois. Arquivo de entrada, vou dizer que insira o caminho do arquivo para o que descriptografar OK. Arquivo de saída. Insira o nome do arquivo de saída. Isso é bom. Insira o caminho da chave de criptografia. Caso contrário, tudo bem, lembre-se de que a chave de criptografia é exatamente a mesma coisa que a chave de decodificação, então não precisamos alterar o texto aqui Você pode alterá-lo se quiser, mas vou deixar como está. E finalmente, ok, aqui também, só precisamos mudar isso e pronto, o tratamento de erros está intacto E mais uma coisa que precisamos mudar é aqui, onde diz o arquivo criptografado. Por aqui, deveria ser um arquivo de decodificação, ok? Portanto, certifique-se de que, sempre que copiar e colar código e precisar alterar algum texto, certifique-se de lê-lo corretamente. Caso contrário, você pode acabar tendo alguns problemas. Ok, tudo o que temos que fazer agora é adicionar a quarta opção. Então eu vou entrar aqui e dizer que opção I é igual Podemos imprimir Xs no programa. E agora também teremos a declaração break, porque lembre-se de que, embora tenhamos fornecido quatro opções ao usuário, ele pode se tornar um pouco tolo e decidir escolher a opção número cinco seis ou sete ou qualquer outra opção que nem exista Então, precisamos levar isso em conta também. Então, eu vou dizer pausa e , em seguida, vou fornecer a declaração Ls final. E agora podemos simplesmente dizer imprimir e depois dizer ao usuário escolha uma opção válida. E aí está. E aí está. E agora, tudo o que precisamos fazer é executar a função principal, e aí está. Então, espero que o programa funcione. Deixe-me seguir em frente agora e executar o programa, e aí está. Ok, então vamos testar isso. Em primeiro lugar, com a opção número um, pressione Enter. Vou usar o padrão, então vou pressionar Enter novamente. E aí está. Incrível. Então você pode ver agora que temos a chave de criptografia que foi criada pelo programa. Então, agora, vamos tentar criptografar um arquivo. Então, eu vou vir aqui agora, e vamos criar um arquivo D TXT de amostra Vamos adicionar um pouco de texto aqui. Este é um exemplo de texto, que vamos criptografar e também descriptografar OK. Então, vamos ver. Eu vou seguir em frente agora e ir para o programa. Vamos usar a opção número dois agora. Então, vamos tentar criptografar nosso arquivo TXT de amostra. Vou pressionar Enter. E agora, qual será o nome do arquivo de saída? Vamos chamar isso de arquivo de chamada criptografado dot TXT. Vamos. Vamos usar a chave padrão. Vou pressionar Enter. E aí está. Então, vamos dar uma olhada. Temos o texto criptografado sob o ScoeFled, e aí está Essa é a versão criptografada do nosso arquivo de texto de amostra. Então, agora, vamos tentar descriptografar o arquivo criptografado e ver se recuperaremos o Eu vou com a opção número três. Digite o caminho do arquivo a ser descriptografado, ele será criptografado em Scofle dot E esse será o nome do arquivo de saída. Podemos chamá-lo de descriptografado, undersCofle dot TXT. Vamos usar a chave padrão. E o Oh, oh, oh, oh, me desculpe, temos uma mensagem de erro. Diz: Esse arquivo não existe, Dicture encrypted underscoflt O que eu fiz de errado? Nós temos Oh, você vê o que eu fiz? Meu arquivo é chamado de criptografado, não criptografado. Eu peço desculpas. Preciso comprar um novo par de óculos. Eu peço desculpas. Vamos tentar vencer isso de novo. Então, opção número três. Então, o arquivo aqui está criptografado. Ah, vamos arquivar o Dot TxD. Agora, o nome do arquivo de saída, eu vou usar decodificado Vamos para um arquivo, ponto TXT. Tecla padrão, e aí está. Ok, agora vamos dar uma olhada no arquivo descriptografado e você pode vê-lo funcionar Então, primeiro de tudo, criptografamos o ponto TXT de amostra. Temos um arquivo criptografado, que você pode ver agora, e depois descriptografamos esse arquivo para recuperar exatamente os mesmos textos que você pode ver agora, ele funciona Vamos tentar a opção número quatro para sair do programa. Ok, eu saí do programa. Vamos executar o programa mais uma vez e vamos com a opção número sete. E diz: por favor, escolha uma opção válida e pronto. Então, Whoa, também criamos com sucesso uma criptografia e decodificação Tem sido muito, mas espero que você tenha aprendido alguns conceitos novos como usar os modos de gravação binária e leitura binária Você também aprendeu como fornecer a opção para o usuário usar sua própria chave personalizada ou usar a chave padrão. E espero que você tenha aprendido muito nesse projeto financeiro. Muito obrigado por assistir e, claro, nos vemos na próxima aula. 62. Introdução à seção Oop: Tudo bem, então bem-vindo ao que pode ser apenas a seção final deste curso E aqui, estamos falando sobre o OOP, a programação orientada a objetos. Parece um bocado cheio Parece muito complicado, mas não se preocupe. Eu vou cobrir todo o básico aqui. Então, esse será um tópico grande, grande, porque acredite ou não, se você pode dominar o OOP, você pode escrever alguns programas realmente incríveis, ok? Então, nesta seção, vamos aprender o que são objetos. Nós vamos falar sobre aulas também, ok? Então, qual é a relação entre um objeto e uma classe? E, claro, você aprenderá sobre métodos. Vou te dar muitos exemplos. Também haverá alguns exercícios de codificação. Você também aprenderá alguns conceitos muito importantes, como encapsulamento, herança e até polimorfismo como encapsulamento, herança Oh, o que exatamente é polimorfismo? Isso parece muito complicado, certo? Não é tão complicado quanto parece. Não se preocupe com isso. Então, será um tópico muito, muito interessante, e estou muito animado para ensinar a vocês sobre OOP Então, como sempre, sem perder mais tempo, vamos direto 63. Introdução ao OOP: Venha para a nova seção em que daremos uma olhada na programação orientada a objetos, também conhecida como OOP Ok, é aqui que vamos nos aprofundar em alguns aspectos avançados da programação Mas não se preocupe, estarei aqui para explicar da maneira mais simples possível. Então, o que exatamente é OOP? O que você vê na sua frente é basicamente uma biblioteca, certo? Você tem todos os tipos de livros. Você tem livros sobre antropologia, arqueologia, biologia, química, matemática e assim por diante Imagine que você fosse o bibliotecário. Você era a pessoa responsável por todos esses livros. Idealmente, é claro, você precisaria de algum tipo de sistema para gerenciar esses livros, certo? Você precisará saber onde colocar os livros. Você precisa conhecer as características de cada livro, como, você sabe, o título do livro, o autor do livro. E também, independentemente de os livros estarem disponíveis ou não, talvez tenham sido enterrados, você sabe, coisas assim Então, imagine que criamos uma classe chamada livro, ok? E, como eu disse, essa classe pode definir vários tipos de características sobre cada livro, como o título do livro, o autor, o gênero, a cor da capa. Mas, além dos atributos físicos do livro, também podemos falar sobre as coisas que podemos fazer com o livro. Talvez você possa pegar o livro emprestado. E se pudermos, por quanto tempo podemos pegar o livro emprestado? Talvez possamos até morder o livro e assim por diante. Ok, pense em todos esses atributos no livro didático. Tudo bem? Agora, coisas como o título, o autor, o gênero, coisas que descrevem fisicamente o livro, podemos chamá-las de atributos, certo? Já falamos sobre atributos neste curso. Mas então métodos, métodos descreverão o que realmente podemos fazer com cada livro. Você pode, garoto? Você pode morder? Então, basicamente, a classe book definirá os atributos e os métodos. Em outras palavras, a aula de livros é como uma descrição geral da um livro aparência de um livro e do que podemos realmente fazer com ele. Mas ainda não estamos nos referindo a um livro específico. Tudo bem. Agora, cada livro individual na biblioteca é o que chamamos de objeto da classe de livros. Então, mais uma vez, a aula de livros nos dará uma descrição geral dos atributos e métodos de cada livro, enquanto os livros em si, os livros individuais, serão chamados de objetos da classe de livros. Portanto, os atributos do objeto do livro A, por exemplo, podem ser o título de programação em Python O autor poderia ser, Jack, e então a cor poderia ser azul, certo? E então vamos dar uma olhada no livro B. O título pode ser cyber one oh one. A autora é Alice e a cor é vermelha. Esses são atributos individuais de cada livro, e os atributos têm seus próprios valores. O valor da cor do atributo para livro A é azul, por exemplo, à direita, e assim por diante. Então, quanto aos métodos, também podemos, por exemplo, dizer que o livro A tem um método chamado empréstimo, pelo qual, uma vez que o livro tenha sido emprestado, a biblioteca terá que atualizar os registros para indicar que o livro não está mais disponível para Da mesma forma, imagine que o Livro B tenha sido emprestado no passado, mas agora foi devolvido Em seguida, podemos marcar o Livro B como disponível novamente. Então, esses são métodos, esses são atributos. Então, para recapitular rapidamente, a classe é como a descrição geral do livro em que os atributos e métodos são definidos O objeto é uma instância. Basicamente, um livro específico em uma biblioteca, um objeto específico na classe, a classe do livro. Os atributos serão a descrição física de cada livro, enquanto os métodos também conhecidos como ações são, essencialmente as ações que podem ser executadas em cada livro. Então, vídeo de Jerman Vernick onde vamos começar a dar uma olhada em alguns exemplos 64. Criando um curso básico: faremos agora é criar um código centrado no exemplo anterior que dei sobre a biblioteca, os livros e os atributos e métodos associados a cada livro Então, a primeira coisa que precisamos fazer é definir o livro didático. Então, eu vou dizer livro de aula e é assim que criaríamos a classe chamada livro de forma muito simples Agora, o problema é que precisamos indicar os atributos que serão associados a cada objeto do livro. Está bem? Então, para fazer isso, vou pagar a multa. E agora, nele, sublinhado, sublinhado. E agora, dentro dos colchetes, é aqui que vamos indicar quais atributos serão associados a cada livro Você normalmente começa com algo chamado eu. Está bem? Isso é muito, muito comum na programação orientada a objetos, ok? Portanto, self é uma forma de se referir a cada objeto individual da classe com a qual estamos lidando. Nesse caso, agora , será cada livro individual. Então, você sempre vai começar por si mesmo, e agora o atributo real. Então, vou escolher o título, o autor e vamos adicionar mais um. Digamos que Gênova. Está bem? Por que não? Gênova, Colon. Até agora tudo bem. OK. Agora, teremos que atribuir variáveis a cada um dos nossos atributos. Então, vou começar dizendo título com ponto próprio. Viu como isso funciona agora? Título com ponto próprio é igual a título. Agora, você consegue adivinhar que o próximo autor autônomo é igual a autor é igual E então, novamente, self dot Gena é igual a gênero. Até agora tudo bem. Vou adicionar mais um atributo. Tecnicamente, não é um atributo que definimos até agora, mas será útil quando começarmos a criar os métodos que aplicaremos ao livro, ok? E é isso que queremos indicar se um livro está disponível para ser emprestado ou não Então, eu vou dizer que self dot está disponível. Tudo bem, digamos que o ego está bem, está no placar disponível, ok? Queremos inicializar isso para ser verdade logo no início, ok? Então, logo no início, todos os livros estão disponíveis para serem emprestados, ok? Agora, definimos os atributos, título, autor, gênero. Também adicionamos um dos métodos, um dos parâmetros que usaremos em nossos métodos, ou seja, se o livro está disponível ou não. Então, agora, vamos definir os métodos reais em si. E aquele com o qual vamos lidar aqui será o empréstimo Então eu vou dizer emprestar e agora entre parênteses, eu mesmo, ok Estamos criando um método que podemos aplicar ao livro de objetos. Então, digamos que, se o livro estiver realmente disponível, o que deve acontecer? Então, vou dizer se eu me referindo ao que o livro está, de fato, disponível? O que nós fazemos? Lembre-se de que, quando o livro estiver disponível para empréstimo, precisaremos atualizar os registros na biblioteca para indicar que o livro não está mais disponível porque agora acabou de ser emprestado, certo Então, vamos dizer que self dot está disponível, não deveria ser igual a quê? Falso, porque não está mais disponível. Está bem? Veja a linha 11 novamente. Isso é porque isso é muito, muito importante, ok? Aqui, estamos fazendo isso pela primeira vez, alguém quer pegar este livro emprestado, talvez não pela primeira vez, mas o livro está disponível no momento. Então, o que deveria acontecer? Devemos dizer que, ok, devemos atualizar os registros para indicar que o livro não está mais disponível, e então vamos imprimir alguma coisa, ok? Digamos que imprima. E agora, entre colchetes, vou usar a string F porque quero fazer referência ao título real do livro que foi emprestado Então, vou abrir meu aparelho ortodôntico universitário e vou dizer self dot Qual título de ponto. OK. E agora podemos digitar o que quer que seja, queremos digitar que foi emprestado Está bem? Nos códigos de fechamento. E aí está. Portanto, duas coisas devem acontecer se o livro estiver disponível para empréstimo Em primeiro lugar, precisamos atualizar os registros para indicar que o livro está disponível há mais tempo porque já foi emprestado E então devemos imprimir a mensagem dizendo que o livro foi emprestado Ese, para que serve a declaração aqui? Por que estamos indicando se? Precisamos indicar se porque na linha 11, onde diz: “ Se self estiver disponível agora neste estágio”, o programa presume que o livro esteja disponível no momento Mas e se em um cenário em que o usuário da biblioteca quisesse pegar emprestado um livro que não estava realmente disponível em primeiro lugar Isso é o que a declaração Ls aqui vai representar. Então veja, se o livro não estava disponível inicialmente, basta imprimir Imprimir, imprimir. E então podemos simplesmente dizer, desculpe. Este livro não está disponível no momento. E eu esqueci de colocar isso entre aspas. Desculpe, este livro não está disponível no momento. Obviamente, também podemos usar a string F e o título próprio para referenciar o nome real do livro, mas isso não é necessário. Mas só vou dizer, desculpe, este livro não está disponível no momento. OK. Incrível. Agora, vamos definir outro método, que seria devolver o livro. Assim, podemos pegar o livro emprestado, mas também podemos devolvê-lo. Então, eu vou dizer que defina o retorno do próprio livro de partituras. Então, fornecemos a função do método chamado Return On score Book e depois self. Então, neste caso, agora, o que deve acontecer se o livro for devolvido? Agora, vamos dizer que self dot is available agora deve ser igual ao verdadeiro, porque o livro já está disponível. E vamos continuar agora e imprimir uma mensagem e dizer, vamos também referenciar. Então eu vou dizer uma string F, e então o nome do livro foi retornado. Tudo bem? Então, vamos tentar isso. Vamos colocá-lo em ação, ok? Então, eu vou vir até aqui. Digamos que o sublinhado A do livro igual agora ao objeto real chamado E agora, lá dentro, vamos fornecer o nome, o título do livro, em primeiro lugar, então digamos Python um a um. Está bem? O que vem a seguir, o autor? Então, vamos chamar a autora de Alice. Está bem? E então qual será o gênero? Digamos que programação, certo? Programação. Está bem? E agora, vamos criar outro objeto. Esse objeto será representado pelo livro na partitura, B é igual, e agora novamente pelo livro, e agora entre colchetes, digamos que cyber two oh one E então o autor aqui será Jack e então qual será o gênero? Digamos apenas tecnologia, tecnologia, certo? A tecnologia deve ser o gênero. E aí está. Então, vou vir até aqui. E agora, vamos chamar os métodos, ok? Temos tudo pronto agora. Chamemos nossos métodos, que, é claro, emprestam e depois devolvem Então, posso dizer que o livro, em primeiro lugar, sublinha um ponto Borrow Tudo bem? Então, primeiro de tudo, vamos pegar o livro emprestado E então deixe-me executar o programa. Você vê agora que diz: Ok, Python one oh one foi emprestado porque aqui, ele indicará 11 online Isso indicará logo no início que, OK, o livro está disponível. Agora foi emprestado, então teremos que atualizar os registros para dizer que é falso E agora vamos dizer que o livro foi emprestado. Mas agora, neste estágio atual, o livro não está disponível, certo? Então, vamos direcionar a declaração L. Agora ele deve ser impresso. Desculpe, este livro não está disponível no momento se eu executar o método novamente. E se outra pessoa entrar agora e quiser pegar emprestado o livro que já não está disponível O que vai acontecer? Eu vou executar o programa. E agora você vê isso dizer, desculpe, este livro não está disponível no momento. OK. Mas e se eu agora devolver o livro? O que vai dizer? Vai dizer que o Python um a um foi devolvido E agora, se eu executar o método de retorno novamente, desculpe, o método de empréstimo novamente, mais uma vez Ia dizer? Vai dizer que o Python 11 foi emprestado Então você pode ver agora que funciona perfeitamente bem. Então, só para dar uma rápida recapitulação, primeiro de tudo, tivemos que criar uma classe chamada book. Agora, temos que definir os atributos associados a cada livro E fizemos isso dizendo: defina a pontuação na pontuação nela na pontuação e, em seguida, os parâmetros ou os atributos entre colchetes E então atribuímos a cada atributo um valor para que self ou title seja igual ao título, self dot author seja igual ao autor, self dot gender seja igual a Gena E então também criamos um método aqui que indicará se podemos ou não pegar o livro emprestado Então, isso é basicamente um atributo booleano. Dissemos: Ok, o ponto próprio disponível no início deve ser igual a verdadeiro. E agora criamos dois métodos diferentes. O primeiro aqui seria o empréstimo. Então, o que acontece quando um livro é emprestado? Se estivesse disponível inicialmente, atualizaremos os registros para dizer que self is available não está mais disponível, então é falso. E então devemos imprimir o título que diz, desculpe, este livro foi emprestado No entanto, caso contrário, se o livro já foi emprestado inicialmente, devemos simplesmente imprimir desculpe, este livro não está disponível no momento E então o segundo método, o que acontece quando o livro é devolvido? Agora devemos atualizar nossos registros mais uma vez para indicar que self is available agora é verdadeiro, e podemos imprimir o nome do livro informando que ele foi devolvido. E, finalmente, aprendemos como criar objetos individuais em livros individuais. Podemos simplesmente dizer que o sublinhado do livro A é igual a livro e, em seguida, entre colchetes, teremos que preencher os valores dos atributos E então criamos outro livro, livro B, que é Cyber to one Jack Technology. E então chamamos os Métodos, e é mais ou menos isso. Então, obrigado por assistir ao vídeo. Te vejo na próxima aula. 65. Criando um curso básico - Parte 2: Antes de passarmos para uma nova lição sobre programação orientada a objetos, gostaria de dar mais um exemplo para que você possa realmente entender o que estamos fazendo. Então, vamos criar uma classe diferente. Está bem? Vamos fazer algo relacionado à segurança cibernética Digamos, por exemplo, que quiséssemos criar uma classe chamada user, ok? E as contas de usuário terão atributos diferentes, como o nome do usuário, a função, ok? E então vamos também criar um método. Digamos, por exemplo, o que o usuário pode fazer? O usuário pode fazer login. Está bem? Então, vamos fazer isso. Então, vou remover todo esse código. E, no topo, vou dizer apenas classe de usuário. Está bem? Então, como criamos nosso usuário? Dizemos classe e depois dois pontos do usuário. E agora o que fazemos? Temos que definir os atributos que serão associados a cada conta de usuário. Então, eu vou dizer que defina o sublinhado nele. No placar. E agora, entre parênteses, o que temos? Nós temos o eu porque precisamos fazer referência a cada conta de usuário individual. Então, eu vou dizer self, e então os atributos serão nome do usuário, e vamos usar a função? Mais um. Rolo. Frio, e pronto. Qual será a próxima coisa a fazer? O próximo passo agora será atribuir variáveis a cada um dos nossos atributos. Então, eu vou dizer que self dot use um nome é igual a, use um nome. Muito simples E então o rolo automático de pontos deve ser igual ao rolo. Aí está. Ok, então definimos os atributos. Agora, e quanto aos métodos? Vamos criar apenas um método chamado login, ok? Assim, um usuário pode realmente fazer login. Então eu vou dizer morte e depois entrar. E então, entre parênteses, o que vai ser? Vai ser eu mesmo. Em si. Cólon. E agora, o que deve acontecer depois que um usuário fizer login Vamos imprimir uma mensagem de boas-vindas. Então, vou usar os códigos de string F, e então podemos dizer, bem-vindo e deixar nosso Python preencher o resto das informações ali mesmo . Então, bem-vindo. E então nome de usuário próprio. E aí está, é tudo o que precisamos fazer. E agora, por último, mas não menos importante, vamos criar um objeto, basicamente uma conta de usuário, e então vamos chamar nosso método. Ar? Então, vou dizer administrador do usuário de pontuação, isso pode representar nossa primeira conta que será para um administrador. Vai ser igual a qual usuário. E agora, entre colchetes, temos que preencher os valores dos atributos que são nome de usuário e rolo Então, o nome de usuário neste caso, agora será Alex. Está bem? O nome de usuário é Alex. Desculpe, codifica, Alex, e então o papel de Alex é obviamente o de administrador Então, administrador. OK. E então, finalmente, vamos chamar nosso método. Então, será admin scouser dot log in Brackets. E se esse programa funcionar, ele deveria dizer algo como, bem-vindo Alex. Vamos correr. E aí está. Bem-vindo, Alex. Então, esse foi outro exemplo de como criar uma classe, como definir os atributos para cada objeto nessa classe. E então também criamos um método para cada objeto individual. E então, é claro, criamos um objeto real e, finalmente, chamamos o método associado ao objeto. Então, espero que agora você tenha uma melhor compreensão do OOP. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 66. Encapsulamento (1080p): Um dos conceitos fundamentais da programação orientada a objetos OOP é algo conhecido como encapsulamento, que basicamente se refere a manter algum tipo de dado privado que ele só possa ser acessado ou modificado de determinadas maneiras Agora, isso é muito útil na segurança cibernética porque nos permite proteger dados confidenciais, como senhas, ok? Por exemplo, podemos escrever ou criar uma classe e objetos que armazenarão a senha de um usuário de forma privada e, em seguida, fornecerão apenas uma maneira de verificar se a senha de entrada está realmente correta Então, deixe-me mostrar como podemos encapsular dados usando OOP. Vou continuar exatamente na mesma turma, ok? Portanto, usuário da classe, no entanto, vou alterar a função atributiva para senha Está bem? E então, obviamente, aqui, vou mudar nossa função de ponto automático para senha, e então isso também será igual à nossa senha. No entanto, a única maneira de dizer ao Python é que, Ei, esse atributo em particular, queremos que seja privado Isso não é informação pública. Isso é privado somente para o usuário. E podemos fazer isso indo até aqui na frente do P para a senha e adicionando sublinhados duplos Então, aqui, os sublinhados duplos indicarão ao Python que , Ei, isso é um Queremos encapsular as informações aqui. Então, vamos agora criar um método que podemos usar para verificar se a entrada fornecida pelo usuário realmente corresponde à senha real desse usuário. Então, o que eu vou fazer agora é definir nosso método, e vamos chamá-lo de autenticar, ok? Portanto, defina autenticar. E agora, entre colchetes, vou usar o nome próprio e a senha, ok? E estamos fazendo isso porque self aqui vai se referir ao usuário cuja senha realmente queremos verificar e, em seguida, à própria senha que estamos verificando, ok? E agora essa é a chave. Teríamos que retornar e agora Self dot Osco, senha agora será igual à senha. Então, queremos verificar se a senha armazenada para o usuário será a mesma que foi fornecida como entrada. Isso é o que isso vai fazer aqui, linha oito. Portanto, se a senha corresponder, linha oito retornará verdadeira, mas se não houver uma correspondência, ela retornará falsa. Está bem? Então, agora precisamos criar nossos objetos de usuário e garantir que, é claro, sempre que você estiver criando objetos de usuário, o recuo esteja externo Deve estar no mesmo recuo da própria classe, ok Não faça isso dentro da classe, mas fora. Tem que combinar, ok? Então, aqui, eu não vou dizer que usuário é igual, e agora usuário, então digamos que precisamos fornecer um nome de usuário Vamos com um convidado, ok? Vamos com um convidado. Algo muito simples, convidado. E agora, para a senha, vou usar S e dizer SOD, Fish, um, dois, três, ok? Então essa é a senha que criamos para nosso usuário convidado, ok? Tudo bem. Agora, vamos tentar autenticar o usuário usando senhas diferentes, ok? Então, vamos tentar usar a senha certa e depois a senha errada, ok? Então, como vamos chamar nosso método? Eu vou dizer impresso. E agora, entre colchetes, o usuário autentique com pontos. Então, estamos chamando o método agora para autenticar nosso usuário E entre colchetes, queremos fornecer a senha que queremos verificar Então, a senha aqui agora, deixe-me usar a correta. Vai ser o mesmo SOD, pescar um, dois, três, certo? E então Brackets, ok? Se eu executar o programa agora, e oh, a linha 12 é uma mensagem de erro. Oh, deveríamos ter um suporte extra aqui. Desculpe por isso. Deixe-me tentar executá-lo novamente. E aí está. Agora, diz verdade porque a senha aqui, STFish 123, é a mesma senha real que fornecemos ao usuário Agora, o que eu vou fazer é simplesmente copiar essa linha, ok, copiar, colar. E agora vamos tentar usar uma senha diferente. Então, vou usar a letra maiúscula A, BC, um, dois, três, e tudo bem, é isso. Então, deixe-me ir em frente agora. Execute o programa novamente e agora você pode ver que é falso porque nosso método verificou que ABC 123 não é igual a SotFish Então, é assim que podemos encapsular dados usando a programação orientada a objetos. Tudo o que realmente precisamos fazer para indicar que um determinado atributo é privado e queremos encapsular é ter sublinhados duplos na frente do nome real do Então, D's, obrigado por assistir ao vídeo. Te vejo na próxima aula. 67. Herança: conceito muito importante de programação orientada a objetos será o conceito de herança E assim como na língua inglesa, sabemos que herança é quando, você sabe, algo é passado de uma pessoa para outra, certo Então, em Python, podemos realmente criar versões especializadas de uma classe sem precisar reescrever o código Basicamente, podemos criar uma classe secundária que pode herdar atributos e métodos de uma classe principal Então eu quero te dar um exemplo aqui, ok? Como estamos lidando com o usuário da classe, obviamente em sistemas e redes, temos diferentes níveis de permissões, certo? Um usuário comum pode acessar certos tipos de arquivos e depois imprimir esses arquivos, enquanto um usuário administrador poderá fazer exatamente as mesmas coisas que um usuário comum pode fazer. Mas como eles são usuários administradores, eles terão permissões extras, como poder dizer, por exemplo, editar esses arquivos, certo? Então, o que vou fazer agora é criar uma classe para o usuário comum mas depois criarei outra classe que será o usuário administrador que herdará os métodos do usuário comum Então, aqui, temos um usuário de classe, e agora estou definindo um atributo básico, que será o nome do usuário, ok? Agora, o próximo passo será simplesmente dizer que o nome de usuário com ponto próprio é igual a igual e, claro, o nome do Agora, quero criar um método específico para nosso usuário aqui. Então, vou dizer definir, e digamos que um usuário comum possa fazer login, certo? Eles podem fazer login. Então, eu vou dizer faça login. E agora, entre parênteses, vou dizer eu mesmo. Está bem? E então, quando eles entrarem, vamos fazer alguma coisa. Digamos que imprima e, em seguida, o nome de usuário próprio esteja logado. Deixe-me dizer que tem algum espaço aqui, está logado. OK. Até agora, o que fizemos aqui foi criar a classe de usuário com o atributo username. Também atribuímos um método chamado Login que basicamente imprimirá o nome do usuário que fez login No entanto, agora vou criar outra classe que herdará não apenas o nome de usuário do atributo da classe de usuário, mas também o método login Como eu vou fazer isso? Eu vou vir aqui e então perceber a intenção de que estou completamente fora Agora vou dizer classe e agora fornecer o nome dessa nova classe. Então, eu vou dizer administrador. E então podemos até mesmo dizer usuário administrador como exemplo. Na verdade, vamos ficar com o administrador, ok? Então, administrador, e agora entre colchetes, vou dizer usuário. Cólon. Então, aqui na linha nove, criamos uma nova classe de um usuário chamada usuário administrador que herdará o atributo, o nome do usuário e, em seguida, o método de login da classe do usuário Vou dar um passo adiante e agora adicionar um método adicional, porque esse é um usuário administrador, ele pode fazer coisas extras. Então, vou dizer que defina, vamos chamar esse acesso aos chamados registros porque eles são administradores, eles podem acessar os registros. Então eu vou dizer eu mesmo, ligue. E agora vamos imprimir entre colchetes. Eu posso usar a string F e, digamos algo como o ponto próprio. O nome do usuário está acessando os registros. E aí está. E aí está. Nós terminamos. Agora, o que vou fazer é criar nosso usuário administrador. Então, eu vou dizer admin é igual, e agora em maiúsculo admin user E, em seguida, entre colchetes, vamos fornecer o nome de usuário admin. Está bem? E agora, vamos executar os métodos. Então, eu vou dizer admin dot Login brackets. E vamos também executar o segundo método, que será admin dot, Access underscore logs. E aqui está. Então, agora vamos ver se isso realmente funcionaria. Vamos correr. E oh, eu tenho outro administrador de flechas. Oh, eu peço desculpas. Deveria ser o administrador aqui. Eu me deixei levar. Admin é igual admin e, em seguida, eles usam o nome Eu peço desculpas. Então, deixe-me executar o programa mais uma vez. E aí está, tudo bem, então o administrador está logado, e agora o administrador está acessando os registros, e é basicamente isso Portanto, não precisávamos especificar que o usuário administrador, o administrador da classe, teria o parâmetro, o nome de usuário do atributo ou o método logado. Tudo o que precisávamos fazer era indicar ao Python que, Ei, esse novo administrador de classe está realmente herdando os atributos e métodos da classe de usuário original E isso é herança para você. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 68. Polimorfismo: Outro conceito dentro do OOP é o conceito de polimorfismo, que basicamente se traduz na mesma ação, mas em um mesma ação O problema do polimorfismo é que ele permitirá que as classes tenham métodos com exatamente o mesmo nome, mas depois Então, como exemplo, ainda lidando com a classe de usuário, podemos ter diferentes tipos de usuários fazendo login em ambas de uma maneira diferente. Então, como exemplo, vamos ter regras diferentes. Então, vou criar uma classe para o usuário comum e, em seguida, uma classe para o usuário administrador, e então eles terão maneiras exclusivas de realmente fazer login. Então, confira isso, ok. Eu vou entrar aqui agora e criar uma classe de usuário regular. OK. E agora eu vou definir de forma muito simples o método, fazer login e fazer login, ok? Observe que eu não passei nenhum atributo. Vou direto para o método, ok? Então, o que vou fazer agora é simplesmente dizer imprimir agora, eu diria que um usuário comum está logado Está bem? Agora, veja isso, eu vou criar outra classe, e vamos chamar isso de usuário administrador. Ok, ligue e, novamente, defina e agora exatamente o mesmo método, faça login sozinho. Mas agora será uma mensagem impressa diferente, porque agora vou dizer que o administrador está logado E deixe-me fechar isso, e aí está. Então, agora, para o polimorfismo real, vou usá-lo, vamos atribuir que o usuário seja igual aos usuários Vamos criar nossos primeiros objetos aqui para o usuário comum. Vamos também criar um objeto para o usuário administrador e, claro, vou chamá-lo de administrador igual a usuário administrador, e é Por isso, criamos objetos para o usuário comum e o usuário administrador. Agora vamos ligar para eles. Então, vou dizer que o usuário não faz login. Brackets, e agora também admin dot Log N. E aí está. Então, agora, vamos tentar executar o programa, e aí está, usuário comum está logado, administrador está logado Então esse é o conceito de polimorfismo em que você pode ter duas Com exatamente o mesmo método, mas esse método agirá de maneira diferente, dependendo de qual objeto ou objeto de classe específico está chamando esse método. O método usado aqui obviamente é o método de login. É aplicável tanto ao usuário regular da classe quanto ao usuário administrador da classe, mas se comportará de forma diferente porque imprimirá uma mensagem diferente dependendo do objeto de classe realmente conectado Então, isso é polimorfismo para você. Mesma ação, comportamento diferente. Obrigado por assistir ao vídeo. Te vejo na próxima aula. 69. Prévia do projeto final: Então, bem-vindo ao projeto final, nosso projeto final em Python E juntos, vamos construir um sistema de registro de usuários muito poderoso. Agora, já construímos algo semelhante, mas isso será muito mais aprimorado. Agora eu escondi o código. Eu não quero que você veja o código ainda. Então, o que vou fazer é executar o programa para que você possa ver do que se trata. Portanto, temos o sistema de registro do usuário, três opções principais: registro, login ou saída. Então, vou tentar me registrar e inserir um nome de usuário Vamos com Alex, ok? E eu vou dar uma olhada, ok? Vou usar uma senha bastante poderosa. Mas agora dê uma olhada nisso, ok? Diz que a senha não é forte o suficiente. A senha deve ter pelo menos oito caracteres. Portanto, temos uma ferramenta de verificação de senhas. Mas veja isso, ok. Eu vou voltar para me registrar, ok? Deixe-me entrar aqui, aperte um. Digite um nome de usuário diferente desta vez. Deixe-me ir com Boris, ok? E agora veja isso. Ok, eu vou com o Bis 123. Boris. Então, isso é bem longo. Isso tem mais de oito caracteres. Eu pressiono Enter. Mas então diz senha, não é forte o suficiente. A senha deve incluir pelo menos um símbolo especial. Portanto, nossa ferramenta de verificação de senhas verificará quatro critérios principais Isso garantirá que a senha pelo menos oito caracteres, tenha pelo menos oito caracteres, uma letra maiúscula, um número e também um símbolo especial, ok Então, vou tentar me registrar novamente, ok? Desta vez, vou usar o nome de usuário Alice. E agora vamos usar uma senha real real. Eu vou escolher Alice um, dois, três com o símbolo de adição E aí está, diz: usuário foi bem-sucedido e agora vou tentar fazer o login. Está bem? Dê uma olhada nisso. Você vai adorar isso, vou entrar como Alice Está bem? E agora senha, Alice, um, dois, três, com o símbolo de adição E agora, o login foi bem-sucedido, mas dê uma olhada nisso. Temos um menu de pós-login. Assim, nossos usuários de login poderão acessar um menu de login onde poderão ver seus registros ou simplesmente sair. Então, agora, eu, como Alice, se eu quisesse ver meus registros, eu pressiono 1, e aí está Diz agora que os registros da usuária Alice. Alice se registrou com sucesso nesta data e, em seguida, Alice também fez login com sucesso Então, vamos implementar basicamente um sistema de auditoria que acompanhará cada usuário e cada atividade no sistema Além disso, dê uma olhada nisso, então teremos o arquivo TXT do usuário que armazenará todos os nomes de usuário e suas senhas correspondentes, mas dê uma olhada nisso As senhas serão criptografadas. Eles não estarão em texto simples. Vamos implementar uma função de hash para fazer o hash das senhas por segurança Então, você pode ver que também implementaremos alguns hashes, mas isso não é verdade também implementaremos alguns hashes, . Também criaremos um arquivo de registro de auditoria que acompanhará todos os registros no sistema Assim, você pode ver agora o campo de registro de Alex, campo registro de Boris, Ale se registrou com sucesso e, em seguida Ale também fez login com sucesso Portanto, este será um sistema de registro avançado abrangente com uma ferramenta de verificação de senhas e também incluirá hash, toda a senha será criptografada, além de um recurso Então, o problema é o seguinte, ok? Vou lhe fornecer um documento de texto com algumas dicas e sugestões úteis se você quiser tentar escrever este programa sozinho, ok? Então, anexado a este vídeo, fornecerei um arquivo de texto com todas as dicas e sugestões úteis Eu vou te contar o processo geral de pensamento. E se você optar por não fazer isso, se quiser apenas trabalhar comigo, o que eu fiz foi dividir todo esse projeto em oito miniprojetos. Então, vou detalhá-lo passo a passo. Vamos adicionar os recursos um por um, um por um, um por um. E espero que a forma como abordei análise deste projeto torne mais fácil para você entender e também poder acompanhá-lo Então, como sempre, se você tiver alguma dúvida, talvez esteja tentando criar o programa sozinho e esteja preso em algum lugar, você sempre pode entrar em contato comigo, e eu tentarei ajudá-lo e ajudá-lo da maneira que puder. Então, estou muito empolgado em trabalhar com você na construção desse sistema de registro de usuários Sem perder mais tempo, vamos começar. 70. Parte 1: criando a interface do usuário: Ok, então vamos começar. E a primeira coisa que vamos fazer é criar a interface de usuário que permitiria ao usuário escolher entre as opções de registro, login e saída, ok? Então, vamos chamar essa função de função principal. Então, vou dizer que defina colchetes principais, dois pontos. E agora, digamos que seja verdade. Ok, então, enquanto o programa estiver em execução, vamos exibir as opções do menu. Então, eu vou dizer, primeiro de tudo, impressões, e podemos dizer, número um, deixe-me adicionar meus códigos ali mesmo. Então, vou dizer a opção número um, registro de pontos. OK. Vamos fechar a coluna. E então vamos imprimir a opção número dois, pontuar, Fazer login. E então a opção número três, opção muito, muito chata, simplesmente saia. Está bem? Tudo bem. Na verdade, você sabe, vamos imprimir outra declaração no topo, como uma mensagem de boas-vindas. Então, vamos imprimir, digamos, bem-vindo ao sistema de registro de usuários. OK. E aí está. Tudo bem, então temos todas as opções definidas. Agora, vamos solicitar que o usuário nos forneça uma opção. Qual opção específica eles vão querer escolher? Vou chamar a opção variável para armazenar a opção específica. Então eu vou dizer entradas, e então vamos dizer, o que você gostaria de fazer? OK. E aí está. Tudo bem. Então, uma vez que o usuário tenha fornecido sua opção, precisamos criar cenários alocados para cada um deles. Então, vou começar pela primeira vez aqui e dizer, se nossa escolha for igual à opção número um, vamos imprimir, digamos, o registro de registro Selecionado. OK. Agora, obviamente, nada mais vai acontecer por enquanto. Adicionaremos a funcionalidade real posteriormente. Mas vamos passar para a próxima opção. Então, vou dizer LIF, escolha igual e, em seguida, opção Vamos adicionar dois pontos. Então, o que vai acontecer aqui? Podemos dizer imprimir e, em seguida, podemos dizer que o login selecionou Ok. E agora vamos adicionar a opção número três, escolha AF é igual à opção número três e dois pontos Podemos simplesmente dizer imprimir e sair do sistema. Está bem? E eu acho que isso deve ficar bem. Portanto, lembre-se de que também será necessário adicionar a instrução break caso o usuário decida escolher uma opção que não existe. Então eu vou entrar e dizer pausa e agora pausa, inserir outra coisa em nossa coluna, e agora podemos imprimir. Digamos que uma escolha seja inválida Tente novamente. Ok, eu gosto disso. Escolha inválida, tente novamente. E aí está. Ok, então vamos prosseguir agora mesmo para executar o programa. Então, alguém vai dizer principal e agora colchetes, e vamos ver o que vai acontecer Vamos seguir em frente e executar o programa. E então você diz, OK, vamos tentar a opção número um. Está bem? Registro selecionado. Opção número dois, Login selecionado, opção número três. Saindo do sistema. Ok, até agora bem, adicionamos o primeiro componente do nosso programa. Adicionamos a interface do usuário. Então, no próximo vídeo de Jamin, começaremos a abordar cada opção por vez, começando com a função de registro. 71. Parte 2: adicionando a função de registro do usuário: Volte. Então, agora vamos passar para a primeira função principal do programa que permitiria ao usuário se registrar. Tudo bem? Então, vamos até o topo aqui e vamos empurrar a função de interface do usuário até o fim, e vamos até aqui. Na verdade, vou apenas adicionar uma nota e dizer função de registro. OK. Ok, então como chamamos a função? Digamos que registre o usuário underscore, certo? Registre o usuário, colchetes. Vamos adicionar dois pontos Ok, então queremos aceitar o nome de usuário e uma senha do usuário Então, vamos pedir que eles façam isso. Tudo bem. Então, vou dizer que o nome do usuário é igual e agora a entrada e os colchetes, digamos, um nome de Cólon. OK. E então vamos solicitar que eles forneçam a senha também. Então, senha é igual a, insira e, entre colchetes, digite uma senha, dois pontos e pronto e Tudo bem, então agora, uma vez que o usuário tenha fornecido o nome de usuário e a senha, gostaríamos de armazená-los em um arquivo. Podemos chamar o arquivo users dot TXT como exemplo, ok? Então, o que vamos fazer é dizer com e agora abrir. Está bem? Lembre-se de que precisamos dessa função para criar nosso arquivo. Então, agora vamos adicionar o nome do arquivo. Vou chamá-lo de users dot TXT. E agora, vamos ativar o modo de acréscimo. Então eu vou dizer A. Ok. E então, como um arquivo? Cólon. Tudo bem. E agora podemos usar as funções certas. Vou dizer que o arquivo está certo. E agora, entre colchetes, podemos usar nossa string F e, em seguida, adicionar chaves legais, nome de usuário Vamos fechar isso e, em seguida, também podemos adicionar dois pontos para separar a senha do nome do usuário Então Cole se prepara novamente, e então podemos adicionar nossa senha E então, para uma boa medida, podemos fazer a barra invertida e depois N para que cada informação do usuário seja armazenada em uma linha separada Cada credencial de usuário será armazenada em uma linha separada, e aí está Ok, tudo o que precisamos fazer agora é imprimir uma mensagem simples que diga algo como imprimir, e então podemos dizer que o registro do usuário foi bem-sucedido. OK. E aí está. Ok, então como agora integramos nossa função de registro com a própria função principal? O que vamos fazer agora é vir até aqui e dizer, se eu escolher é igual a um, então podemos remover Ok, não precisamos mais dessa declaração impressa. E vamos apenas chamar a função. E a função que criamos aqui foi registrar o usuário sublinhado Aqui, direi apenas registrar o usuário Underscore e depois os colchetes E aí está. Então, espero que isso funcione. Vamos começar agora mesmo e testá-lo. Então, eu vou executar o programa. Está bem? Número um, queremos nos registrar, pressione Enter. Digite, nome de usuário. Eu vou com Alex. Senha. Eu vou com Alex de novo, ok? Só para um teste. Entre e tudo bem. O registro do usuário foi bem-sucedido e temos usuários pontuando o arquivo de texto aqui E se eu abrir, incrível, você pode ver que diz Alex Alex. Tão fantástico. Você pode ver agora que, até agora, está funcionando muito bem. Junte-se a mim na próxima lição, onde agora criaremos a função que permitirá que nossos usuários façam login. 72. Parte 3: adicionando a função de login: Bem, volte aqui. Então, agora, vamos adicionar a função para permitir que nossos usuários façam login. Então, eu vou dizer definir, e vamos continuar com o login na pontuação, será o nome do usuário. Vamos adicionar uma coluna. Na verdade, vamos adicionar uma nota, ok? E podemos apenas dizer função de login. E aí está. Tudo bem. Então, para que o usuário faça login, ele precisará do nome de usuário e da senha. Então, vamos começar dizendo que o nome do usuário é igual e, em seguida, entre colchetes e os códigos, insira Cólon. OK. E então também podemos adicionar a senha igual à entrada, colchetes, inserir sua senha e pronto. Tudo bem. Agora, para verificar se o nome de usuário e a senha existem, teremos que abrir o arquivo TXT de pontos de nossos usuários Então, vou dizer com open, e agora entre colchetes, qual é o nome do arquivo? É o ponto TXT dos usuários. E então, qual é o modo que vamos usar? Vamos usar o modo de leitura. Porque queremos ler o arquivo, e eu vou dizer como arquivo, dois pontos E agora, vamos criar uma variável chamada users que aceitaria a função de linhas vermelhas de pontos do arquivo. Porque lembre-se de que teremos que ler linha por linha de cada usuário no texto pontilhado do usuário no arquivo. Então, vou dizer que usuários são iguais a linhas lidas por pontos de arquivo, e agora colchetes, e aí Portanto, agora precisamos verificar se as credenciais da entidade correspondem a qualquer registro armazenado Então, o que vamos fazer? Vamos criar um loop de quatro. Então eu vou dizer quatro. Vamos usar a variável user nos usuários. Está bem? Então, agora, o que queremos verificar? Queremos verificar o nome de usuário e, em seguida, a senha. Então, podemos criar duas variáveis aqui. Podemos usar o OK armazenado, armazenado na partitura, usuário e, em seguida, vírgula, também podemos usar o armazenado na senha da pontuação Let cria duas variáveis para representar o nome de usuário armazenado e , em seguida, a senha armazenada. E agora, como verificaríamos, precisamos primeiro verificar se o nome de usuário está correto e depois também a senha. Mas agora dê uma olhada nisso, ok? Os usuários pontilham o tecido como está. Temos Alex e , em seguida, dois pontos ALC. Então, precisamos descobrir uma maneira separar o nome de usuário da senha, e sabemos que é o símbolo de dois pontos que os separa, ok Assim, podemos usar a função split para separar o nome de usuário e a senha. Mas também podemos usar a função strip. Lembre-se da função strip. Usamos isso para remover qualquer caractere branco ou espaços vazios, coisas assim. Está bem? Então, vamos voltar aqui. Então, o que vamos fazer agora é dizer usuário, e agora vamos adicionar a e agora vamos adicionar função strip para remover todo o espaço necessário do nome do usuário, ok, nossos colchetes, e agora vou adicionar a função split E por que estamos dividindo o nome de usuário e a senha? Vai ser o cólon, e aí está Então, vamos dividir o nome de usuário e a senha por dois pontos Então, a partir daqui, agora, podemos verificar. Podemos dizer se o nome de usuário é igual ao nome de usuário de sublinhado armazenado e qual senha é igual à sublinhado. O que nós queremos fazer? Queremos imprimir e dizer Login. Bem sucedido e pronto. Incrível, incrível, também. E a partir daqui, podemos simplesmente voltar por enquanto, ok. Posteriormente, adicionaremos funcionalidades adicionais. Mas, por enquanto, vamos voltar e voltar ao início do programa. Então, vamos sair da função após um login bem-sucedido. E, claro, também podemos imprimir caso algo não tenha saído corretamente. Podemos imprimir nove colchetes. Podemos simplesmente dizer inválido usando n ou senha. E aí está. Deixe-me adicionar um pouco de espaço aqui e pronto. Ok, então espero que isso funcione. Deixe-me integrá-lo na função principal. Então, o que queremos fazer agora é quando diz a opção AF número dois, podemos remover a instrução de impressão e agora simplesmente adicionar o nome da função, que é login no usuário da pontuação e agora colchetes, e aí está OK. Dedos cruzados. Vamos executar o programa. E vamos ver. Vou direto para fazer o login, porque já criamos o nome de usuário e a senha do Alex. Então, o nome de usuário é Alex. A senha é Alex, e aí está. Incrível, o login foi bem-sucedido. Vamos tentar ver se aceitaremos um nome de usuário diferente que não existe. Então, eu vou com o Log In e vamos com o Philip. Digite a senha, classifique, pesque e pronto. Diz nome de usuário ou senha inválidos, então está funcionando, incrível, incrível, incrível Então, adicionamos com sucesso a função de registro. Também adicionamos com sucesso a função de login. Então, junte-se a mim no próximo vídeo em que avançaremos no programa apresentando o verificador de senhas que garantirá que a senha criada atenda a determinados critérios de força Te vejo então. 73. Parte 4, adicionando a ferramenta verificador de força de senha: Bem, volte aqui. Então, agora precisamos implementar a ferramenta de verificação de senhas. Até aí, tudo bem, nossos usuários podem registrar contas, podem fazer login. Mas queremos ter certeza que as senhas que eles usaram para criar suas contas em primeiro lugar realmente fortes o suficiente. E temos uma lista de critérios. Queremos ter certeza de que a senha pelo menos oito caracteres. Ele contém uma letra maiúscula. Ele contém um número e também contém pelo menos um símbolo especial. Agora, os símbolos são o que eu escrevi aqui, você pode ver. Eu tenho todos eles listados. Então, o que eu vou fazer está no topo, ok, vamos em frente. Deixe-me cortar isso primeiro de tudo, eu vou cortar aquilo. Então, teremos que importar uma biblioteca, que será a biblioteca de expressões regulares. Então, no topo, digamos importação e depois R E. Ok? Então, deixe-me adicionar uma nota que diz Importar para expressões regulares. Está bem? Tudo bem Então, agora, vamos adicionar uma nota, e eu direi a função de verificação de senha Ok. Eu acho que está tudo bem. Função de verificação de senha. Ok, então vamos criar o nome da função. Então, vou chamá-lo de definir, e então podemos dizer que está na pontuação forte na senha da pontuação. Está bem? Que tal isso? E agora, é claro, por dentro, vamos aceitar uma variável, que será a própria senha. Está bem? E vamos adicionar dois pontos. Aí está. Tudo bem Vamos começar a adicionar os critérios. O primeiro critério aqui será o tamanho da senha. Então, podemos dizer se e agora a função len, que representará o tamanho do que está fora da senha. Está bem? Então, se for menor que oito, vamos adicionar nosso cólon O que vamos dizer? Vamos retornar falso. Ok, vamos retornar falso. Na verdade, falso F, vírgula falsa. E então podemos fornecer algo como um feedback. Dizendo ao usuário que, Ei, sua senha deve ter pelo menos oito caracteres. Então, vamos fazer isso. Ok. Então, observe agora duas coisas que aconteceram. Em primeiro lugar, estamos retornando fals, o que significa que a senha não é forte o suficiente, e também estamos fornecendo um feedback Tenha isso em mente, vai ser muito, muito importante. Vamos passar para os próximos critérios. Então, eu vou vir aqui e dizer que se e agora nada de pesquisar RE, queremos pesquisar usando o módulo RE Deixe-me ter certeza de que digitei isso corretamente, Research. E agora, entre colchetes, queremos pesquisar para ver se há alguma letra maiúscula na string. Está bem? Então, estamos dizendo pesquisar e agora Roy agora códigos, códigos únicos, vamos adicionar nossos colchetes. O que estamos procurando? Estamos pesquisando de A a Z. Então, aqui está um método que usa a biblioteca de expressões regulares Queremos pesquisar nossa senha para verificar se há alguma letra maiúscula entre A a Z. Então, de A a Z, depois vírgula e , em seguida Está bem? Então, podemos devolver peles falsas e por que falsas? Porque dissemos, se não. Portanto, se o programa pesquisar a senha e não encontrar uma letra maiúscula A a Z, não será. Então, retornaremos false e, em seguida, poderemos fornecer um feedback. Portanto, posso dizer que a senha deve incluir pelo menos uma letra maiúscula Está bem? E deixe-me adicionar o ponto ali mesmo, e aí está. Ok, agora, você pode tentar escrever o código para pesquisar para ver se um número 0-9 está na senha? Está bem? Podemos dizer que, se não, pesquisamos pontos. Ok. E então, entre colchetes R e agora em códigos únicos, vou abrir um novo colchete, agora 0-1 E agora estamos procurando a senha. Queremos saber se a senha tem um número de 0 a 9. E, claro, se isso não acontecer, retornaremos false. E então podemos dizer que a senha deve incluir pelo menos um dígito Deixe-me mudar os dígitos para números, na verdade. Ok. E aí está. Então, verificamos o tamanho da senha. Verificamos se ele tem uma letra maiúscula. Verificamos se ele tem pelo menos um número. Por último, mas não menos importante, vamos verificar se ele tem um símbolo especial. Então, o último, vamos dizer, se não, pesquisa de pontos vermelhos. E agora, entre colchetes, estão os códigos singulares. E agora vamos abrir os colchetes principais. E agora vou colar todos os símbolos especiais. Oh, há muitos deles, na verdade, ok? Então, vou acrescentar isso. Agora vírgula e agora senha. Ok, adicione dois pontos. E agora, se não tivermos isso, vou voltar às quedas. Ok. E depois os códigos, direi que a senha deve incluir pelo menos um símbolo especial. Deixe-me mudar o caractere para o símbolo. Códigos Simba, e aí está. Ok, então verificamos os quatro critérios principais. No entanto, e se a senha criada for realmente boa? É uma senha forte. Então, para isso, eu vou vir aqui e vou voltar à verdade. Está bem? Vou retornar verdadeiro e podemos até imprimir algo que diga que a senha é forte. E aí está. Ok. Então, só para dar uma rápida recapitulação do que fizemos aqui, importamos a biblioteca de expressões regulares porque queremos usar um método específico de função, que é a função de pesquisa para verificar a senha e verificar tipos específicos de critérios Então, primeiro de tudo, verificamos o tamanho da senha. É menos de oito? Se for menor que oito, retorne false e forneça um feedback dizendo que senha deve ter pelo menos oito caracteres. E agora queremos pesquisar para ver se há uma letra maiúscula entre A e Z. Então usamos o método e busca por pontos e, em seguida, entre colchetes R, códigos e, em seguida, os colchetes de A a Z e, em seguida, a Em seguida, fornecemos o feedback e, em seguida, fizemos o mesmo para pesquisar pelo menos um número e, em seguida, fizemos o mesmo para pesquisar pelo menos um símbolo especial. E, finalmente, se todos os quatro critérios forem aprovados, retornaremos verdadeiro e, em seguida, diremos que a senha é forte. Portanto, agora que temos os critérios listados para a força da senha, agora precisamos integrá-la à função de registro e garantir que, antes que a conta do usuário seja registrada, a senha realmente passe no teste. Então, aqui, depois de solicitarmos que o usuário forneça o nome de usuário e a senha, antes de começarmos a abrir o arquivo dotexti do usuário para armazenar as credenciais, vamos apresentar o vamos apresentar o Assim, posso criar uma variável chamada é válida. Vamos verificar se a senha é realmente válida. Além disso, estamos trabalhando com o feedback ou a mensagem Você pode alterar a variável se quiser, mas eu vou continuar com o feedback. Vou dizer que é válido, sublinhe o feedback e vou passá-lo para a função que costumamos criar alcance da senha é o que é forte, sublinhado e, entre colchetes, senha . Ok. Então, agora podemos dizer se não é válido, então se não é válido. Portanto, se a senha fornecida não for forte o suficiente, podemos simplesmente imprimir e dizer que a senha não ocupa muito espaço. A senha não é forte o suficiente. Ok. E então o que mais podemos fazer? Podemos imprimir o feedback dizendo: Ei, sua senha precisa de pelo menos um número, ou sua senha deve incluir pelo menos uma letra maiúscula. Então, eu posso vir aqui, adicionar outra declaração impressa e simplesmente passar o feedback. E aí está. Por último, mas não menos importante, simplesmente voltaremos e aí está. Então essa é a maneira como podemos implementar a ferramenta de verificação de senhas Listamos os critérios, o tamanho, o número, letra maiúscula, o símbolo e, agora que você tem a função de registro, adicionamos: Ok, se a senha não for válida, diga que não é forte o suficiente e, em seguida forneça o feedback Caso contrário, basta retornar. Então, agora vamos verificar se está funcionando. Espero que deva. Então, vamos correr. Ok, vou me registrar. Use um nome, digamos, Bob. Senha, eu vou usar LISA N maiúscula seis, um, dois, três, B V. É Enta e Awesome. Diz que a senha não é forte o suficiente. A senha deve incluir pelo menos um símbolo especial. Ok, vou abrir o texto de pontos do usuário e me certificar de que, OK, certifique-se de que Bob não foi Incrível. Vamos voltar. E agora, vamos tentar criar uma conta real. Então, vamos ligar para Alice. Senha, P O P três, quatro, SDR e, em seguida, o símbolo de adição Acho que isso deve ser forte o suficiente. Aí está. Ok, usuário incrível. É bem sucedido. E agora, se eu voltar para o TXT dos meus usuários, aí está Agora temos Alice e sua senha. Então, parabéns. Aprimoramos nosso programa, nosso software para agora incluir também um verificador de senhas Junte-se a mim no próximo vídeo em que prosseguiremos e também aprenderemos como podemos criptografar nossas senhas. Te vejo então. 74. Parte 5 - Hashing das senhas do usuário: Bem, volte aqui. Então, agora vamos adicionar mais um recurso de segurança ao nosso programa. E aqui, vamos incluir o hashing. Vamos misturar palavras usando o SHA dois, cinco, seis, o algoritmo de hash seguro com, é claro, um tamanho de dados de Então, para fazer isso, teremos que importar outra biblioteca. E esse vai ser o hash lib. Deixe-me adicionar um nó aqui e eu também importo para hashing. E aí está. Tudo bem. Agora, vamos adicionar aqui no topo a função para realmente fazer o hash da senha Deixe-me adicionar uma função de nó às senhas de hash. O nome da função, posso dizer define e podemos usar a senha hash Agora, é claro, dentro dos colchetes, vamos trabalhar com o parâmetro de senha e, em seguida, eu inseri minha coluna Vou dar uma olhada nisso para fazer o hash da senha, você pode simplesmente dizer return Now, o nome da função em si no módulo hashlib, seu hashlib Agora dote sha dois, cinco, seis. Agora, entre colchetes, o que estamos discutindo? É a senha. Agora vou usar o método chamado código, abrir um novo par de colchetes, fechar os colchetes anteriores e agora pontilhar. Agora, fechar os colchetes anteriores e finalmente, podemos fazer que o dígito hexadecimal adicione os colchetes de fechamento novamente com que o dígito hexadecimal adicione os colchetes de fechamento novamente, e pronto. Essa é uma linha específica que você pode memorizar. Essa é a função que realmente criptografará as senhas usando o módulo hashlib Tudo o que precisamos fazer agora, de forma muito simples, será integrá-lo à função de registro real. Vamos até aqui no final, onde a senha foi bem-sucedida, aqui onde diz imprimir feedback, aqui onde diz imprimir feedback, retornar pouco antes de começarmos a escrever a senha para os usuários ou enviar uma mensagem de texto para o arquivo, vamos agora fazer o hash Depois da declaração escrita, vou adicionar uma pequena nota e podemos dizer hash da senha Tudo bem. Então, o que queremos fazer agora é muito, muito simples, criar uma variável chamada hash underscore password e, em seguida, passar a senha real que acabamos Vou dizer hash na senha da pontuação e agora entre colchetes, simplesmente passe a palavra e aí está Tudo o que precisamos fazer de forma muito simples é onde estamos escrevendo a senha. Em vez da senha original, agora teremos que escrever a senha com hash Aqui diz arquivo ou escreva F, nome de usuário. Agora, aqui, em vez da senha, vamos mudar isso para a variável com hash na senha da pontuação, e aí está que adicionamos o hashing com sucesso Vamos ver se isso realmente funcionaria. Vou seguir em frente agora e executar o programa. Vamos nos registrar. Vou adicionar um novo nome aqui. Vou chamar esse, digamos, de David. Ok, senha. Vou usar uma senha muito forte aqui, SOD, fish, SOD, fish, e depois 234 em, e então símbolo estérico, aí Agora vamos abrir os usuários de textifle e C and wonderful. Aí está. Aqui está a versão codificada da senha de David, que é SOT fish, 234 at e o Tão maravilhoso que adicionamos hashing ao nosso programa. Está se tornando cada vez mais avançado, e agora vá para a próxima lição, onde adicionaremos nossa auditoria ao recurso UC Então, eu só queria te dar uma atualização rápida. Sim, acabamos de adicionar a função de hashing. No entanto, quando o testamos, você pode perceber que ele não funciona. Então, se eu fosse até aqui agora e quisesse registrar um novo usuário e dissesse, vamos chamar o novo usuário de Victor, certo? Victor. E então eu adicionei uma senha, Victor 123, e depois VC e, em seguida, o símbolo do anúncio, e eu pressiono Enter Diz que o registro do usuário foi bem-sucedido. No entanto, se eu tentar entrar como Victor novamente, terei o nome de usuário E agora, se eu digitar a senha, Victor 123, Vc at, você verá agora que diz nome de usuário ou senha inválidos Então, por algum motivo, a função de login não é capaz de detectar se o nome de usuário corresponde à senha. E esse é um dos motivos pelos quais você realmente deseja testar seu código sempre que adiciona uma nova funcionalidade. Então eu percebi que aqui na linha 60, onde diz, onde temos a função de login, diz que se o nome de usuário é igual ao nome de usuário armazenado e a senha é igual à senha armazenada, então podemos permitir que o usuário faça login com Você pode ver agora que isso não vai funcionar porque, como o código está escrito agora, ele está comparando a senha com o formato de texto simples e não com a versão criptografada ou com hash É por isso que estamos tendo esse problema. Então, devemos entrar agora e dizer, insira um nome e agora enfatizemos a senha de sublinhado hash E agora, entre colchetes, senha. Então, aqui, agora estamos dizendo ao programa e dizendo ao Python que, Ei, compare a senha com hash do usuário e não a Portanto, deve funcionar agora. Se eu fosse voltar e criar uma nova conta para o usuário. Na verdade, vamos parar o programa, ok? E eu vou executá-lo de novo. Agora, deixe-me registrar um novo usuário, ligar para o usuário Mac e depois Mac um, dois, três no Mac para obter a senha. E agora vamos tentar fazer login como Mac novamente. Então eu vou dizer Mac. E agora Mac um, dois, três no Mac. E agora você pode ver que o login foi, de fato, bem-sucedido. Então, isso é, novamente, um lembrete que sempre que você adiciona novas funções e novas linhas de código, você quer testar antes de começar a adicionar mais e mais linhas de código ao seu programa Então, por favor, atualize a linha onde diz: Se você usa o nome de usuário e a senha inicial do Nemicol, certifique-se de que é a versão com hash da senha que estamos Obrigado por assistir e, claro, nos vemos na próxima aula. 75. Parte 6: adicionando a ferramenta de auditoria: Bem vindo de volta. Então, agora vamos adicionar um recurso muito interessante, que será o recurso da ferramenta de auditoria, onde podemos acompanhar todas as atividades em nosso sistema, desde usuários, login e criação de contas e coisas assim Então, vamos seguir em frente e fazer isso. E para que isso aconteça, precisamos importar uma biblioteca e um módulo especiais, que será a data e hora. Então, vou entrar aqui e vou dizer da biblioteca diurna Vamos importar o módulo diurno. Está bem? E eu posso adicionar uma nota aqui que diz a entrada de data e hora. Ok. Agora, vamos criar nossa função, e onde podemos colocá-la? Você sabe o que? Vamos colocar a função um pouco antes da função de registro, ok? Então, vou vir até aqui, adicionar a nota, e podemos chamá-la de função para registrar as atividades do usuário. Lei de Atividades. Não escrevi isso corretamente, Ativts. Ok. Tudo bem, vou chamar essa função definida e, em seguida, registrar o evento de sublinhado Esse será o nome da função. E então o parâmetro, obviamente, será evento. Ok. Adicione dois pontos e tudo bem. Então é aqui que a mágica vai acontecer. Vamos passar a data e a hora reais para uma variável chamada carimbo de data/hora Está bem? Eu vou dizer que o carimbo de data/hora é igual E agora vamos fazer uso de uma função do módulo diurno Essa função é chamada de ponto de data e hora agora. Está bem? Então essa é a função que recuperará data e a hora reais, ok? Mas agora vou adicionar um método aqui dot STR FT. Esse método aqui é o que vamos usar para realmente formatar a data e a hora. Então, se queremos exibir o ano, o mês, o dia ou talvez apenas o dia do mês. E então a hora, talvez queiramos mostrar a hora, o minuto, o segundo, coisas assim. Então, vamos usar esse método, o método STR FT E agora, entre colchetes, precisamos indicar como queremos que a data e a hora sejam formatadas Então, por dentro, vou adicionar meus casacos. Então, vamos fazer assim, ok. Vamos mostrar o ano, o mês, o dia. Isso será para a data. E então, para a hora, simplesmente exibiremos a hora, o minuto e depois o segundo. Que tal isso? Está bem? Parece bom. Então, para fazer isso, vou usar o símbolo de porcentagem, e agora Y. Isso representará o ano e então podemos adicionar menos e depois porcentagem, e então M para o mês, e depois menos novamente, e depois menos novamente, porcentagem para o que para o dia que será E agora um espaço, e agora com o tempo real em si, vou repetir, porcentagem, H por hora, ok? E agora, em vez do sinal negativo, podemos usar o cólon porque acho melhor usar dois pontos sempre que você estiver lidando com o tempo real, na Podemos usar cólon e depois por um minuto e depois cólon novamente, e então porcentagem ou S, e pronto Esse é o formato, o dia do mês e, em seguida, a hora, o minuto e o segundo, e acho que está tudo bem. Agora, o que precisamos fazer agora é começar a registrar todas essas atividades. Ok, então o que vamos fazer é para a função de registro, quando o usuário se cadastrar, precisamos registrar o evento, ok? Agora, precisamos vir aqui e dizer com open porque queremos criar um arquivo de texto real que representará o registro de auditoria. Então, eu vou dizer com aberto. E então, entre colchetes, vamos chamar a auditoria de arquivos. No registro de pontuação. Sublinhe o ponto de registro TXT. Então esse será o nome do arquivo de log. E então o que queremos fazer? Queremos anexá-lo, ok? Então eu vou colocar o modo A, e depois como o quê? Como Faça login no arquivo de pontuação e, em seguida, adicione dois pontos E então o que queremos fazer? Queremos gravar no arquivo de log. Eu direi Login no arquivo de pontuação. Ponta para a direita. E agora, entre colchetes, podemos usar nossa string F, e então podemos simplesmente adicionar dois pontos, e então eu adicionarei meu colchete , colchetes, timestamp e, em seguida, o evento, e isso deve ficar timestamp e, em seguida, o evento, e podemos usar nossa string F, e então podemos simplesmente adicionar dois pontos, e então eu adicionarei meu colchete, colchetes, timestamp e, em seguida, o evento, e isso deve ficar bem. Aí está. Então, vamos criar um arquivo chamado Audit Log dot TXT. E quando escrevermos no arquivo, escreveremos um carimbo de data/hora E depois também o evento. Então, talvez o usuário tenha criado uma conta em 6 de janeiro 2024 às 17h30 e 14 segundos, algo assim, você sabe, então é exatamente isso que fizemos aqui. algo assim, você sabe, então é exatamente isso que fizemos aqui Incrível, incrível, incrível. Então, agora precisamos ter certeza de que cada atividade está, de fato, registrada Então, aqui embaixo, a primeira atividade será o registro, certo? Então, vamos verificar. Na verdade, você sabe o que? Podemos até mesmo registrar quando a senha não era forte o suficiente. Que tal isso? Está bem? Também podemos registrar isso. Então, aqui onde está escrito o feedback impresso, posso simplesmente vir aqui agora, adicionar uma nova linha e dizer registrar o evento de sublinhado E agora, entre colchetes, podemos simplesmente dizer campo de registro para nome de usuário do usuário Ok. Eu gosto disso. O que você acha? Eu acho que está tudo bem. Campo de registro para o nome de usuário do usuário. Portanto, o registro não foi bem-sucedido porque a senha não era forte o suficiente. Eu gosto disso. Então, estamos trancados lá. Então, agora, vamos registrar o evento em um cenário em que o registro foi realmente bem-sucedido. E onde está isso? Temos aqui na linha 56 que diz que imprimir o registro do usuário foi bem-sucedido. Então, logo abaixo, agora podemos adicionar nosso evento de sublinhado de log E agora, entre colchetes, podemos simplesmente dizer F e depois vamos usar casacos e , em seguida, em nossas chaves collie, podemos dizer Ok. E então use um nome registrado com sucesso. Que tal isso? E aí está. Ok. Agora, o que mais precisamos registrar? Precisamos fazer login quando os usuários também estiverem logados. E temos isso aqui na função de login , onde diz login bem-sucedido. Então, aqui, vou criar uma nova linha, e agora podemos registrar o evento, então registre o evento de sublinhado E então, entre colchetes, podemos dizer F, string e, em seguida, adicionar nossos casacos, colchetes Então use um nome, ok? Bem, deixe-me colocar um pouco de espaço aqui. Use um nome logado com sucesso. E aí está. Há mais alguma coisa que precisamos registrar? Ok, onde diz o nome de usuário ou senha inválidos, também podemos registrar esse evento aqui Então, estamos registrando tudo, tudo, ok? Então registre o evento F, e então podemos adicionar nossos códigos, e então podemos dizer falha na tentativa de login do usuário, e então com o nome do usuário e pronto. Ok. Estou gostando disso até agora Há mais alguma coisa que precisamos registrar? Também podemos fazer login na terceira opção. Onde o usuário realmente sai do sistema, não é necessário, mas, você sabe, podemos muito bem Então, onde diz imprimir, sair do sistema, também podemos registrar isso Na verdade, deixe-me fazer isso antes da declaração impressa. Opção número três, vamos apenas registrar o evento de sublinhado. E então podemos dizer algo como sair do sistema. Ok. E aí está. Ok, acho que isso deve funcionar. Isso deve funcionar. E eu vou seguir em frente agora e executar o programa, ok, vamos ver. Vou registrar uma nova conta, então vou usar o número um, pressione Enter. Vamos adicionar um nome de usuário. Então, eu vou com a Tracy. Está bem? E a senha, Tracy 21, OP, hashtag E aí está. Ok, incrível. Então, foi um sucesso. Antes de tudo, vamos garantir que, sob o D TXT do usuário, tenhamos Tracy Essa é a senha hash. E agora o outro Dc TXT, aí está Incrível, incrível. Incrível. Tracy, cadastrada com sucesso. E, claro, você pode ver o formato aqui mesmo, 2024, no décimo dia de novembro às 9:01 Por isso, também adicionamos com sucesso o recurso de registro. Muito obrigado por assistir ao vídeo. Te vejo na próxima aula. 76. Parte 7: adicionando a função de visualização de registros: Volte. Então, vamos adicionar mais um recurso. E desta vez, será um recurso para nossos usuários de login. Queremos que eles possam ver seus próprios registros pessoais. Então, isso será em duas etapas. Primeiro, teremos que criar uma função que permita que eles visualizem seus registros. E então, em segundo lugar, teremos que criar um menu de login de postagem. Portanto, nossos usuários de login terão um menu separado onde terão a opção de visualizar o registro. Então, isso vai ser em duas partes. Primeiro de tudo, vamos criar a função para permitir que eles visualizem o log. Então, vou fazer isso logo abaixo da função principal de login Então, deixe-me adicionar uma nota aqui que diz função, desculpe, função para visualizar registros. Está bem? Vou chamar essa função de visualização em registros de chamadas E, claro, vamos passar o parâmetro nome de usuário. Ok, adicione meu cólon. Tudo bem, então vamos primeiro imprimir como uma mensagem geral dizendo algo como, você sabe, registros para o usuário e, em seguida, você sabe, para o usuário em particular Então, eu vou dizer imprimir. Está bem? E então vamos ter uma string F e, em seguida, vamos ter códigos. E então deixe-me adicionar minha barra invertida N, e então podemos dizer registros, quatro Usuário, e então temos nossas chaves, e então podemos ter o nome de usuário Ok, não é necessário, mas é bom ter. Tudo bem, agora vamos abrir o registro de auditoria D TextFile porque é a partir daí que vamos extrair os Então, vou dizer com agora aberto e agora entre colchetes, qual é o nome do arquivo? É um subsistema de auditoria chamado Log TXT. E agora, é claro, queremos ter o modo de leitura. Ok, porque vamos ler o arquivo e vamos dizer como arquivo de pontuação de login em nossa coluna. Ok, agora vamos examinar os registros e o arquivo. Então, vamos passá-los para uma variável chamada logs. E agora Log Underscore file dot redlines. Ok. E aí está. Ok. Então, agora vamos ter que criar uma espécie de quatro ciclos que passarão por cada registro individual. E o que exatamente estamos procurando? Estamos procurando registros que correspondam a um nome de usuário específico. Então, eu vou entrar aqui agora, certo? E eu vou dizer que os registros do usuário, ok, os registros de sublinhado serão iguais a, e agora veja isso Vou abrir meus colchetes aqui. Vou dizer log dot strip e a razão pela qual estou usando a função strip é, novamente, que quero remover qualquer espaço em branco ou margem desnecessária dos nomes de usuário, então vou dizer log ou strip E agora vou dizer quatro registros de login. Então, estamos pesquisando cada registro individual em nossos registros. E o que estamos procurando? Estamos procurando se o nome do usuário está no registro. Então, estamos procurando um nome de usuário muito específico em nossos arquivos de log. Então, agora, se encontrarmos, de fato, uma correspondência para o registro do nome do usuário, o que faremos agora? Então, vamos dizer que, se usuário undercool logs adicionar nossa coluna, e agora vou dizer quatro registros de login do usuário Underscoe, o que queremos Nós simplesmente queremos imprimir. Então eu vou dizer imprimir e depois registrar, e aí está. E, claro, precisamos criar uma condição. E se nenhum registro for encontrado? Podemos simplesmente dizer outra coisa e agora podemos imprimir. Podemos dizer que nenhum registro foi encontrado. Na sua conta lembre-se de que isso é para o usuário de login e pronto. Então, só para te dar uma rápida recapitulação, certo? Definimos a função como view dos logs de chamadas e passamos o nome do usuário. E agora imprimimos uma mensagem geral dizendo, você sabe, registros para o usuário. E depois o nome do usuário. E então abrimos o outro log, o arquivo de texto. Vamos lê-lo como um arquivo de log e, em seguida, criamos uma variável chamada logs que, na verdade, usará o método read lines para cada arquivo de log específico. E agora, aqui, criamos nossos quatro ciclos que examinarão cada registro individual nos registros e, em seguida, verificarão se há uma correspondência para esse nome de usuário. Agora, se houver de fato uma correspondência, podemos simplesmente imprimir o registro desse usuário em particular. Caso contrário, simplesmente diremos que nenhum registro foi encontrado na conta deles. Então aí está. Criamos com sucesso uma função para registros de vídeo. Junte-se a mim no próximo vídeo em que criaremos o menu de pós-login para nossos usuários de login. 77. Parte 8: adicionando o menu de login de postagem: Bem, volte aqui. Então, agora vamos criar a função que exibirá o menu de pós-login para nossos usuários de login com opções. Então, vamos fazer isso logo acima da função para visualizar os registros. Então, aqui mesmo. Vou dizer função para exibir o menu Post Login. Ok. Tudo bem, então, como de costume, vamos chamar isso de, digamos, postar no login da pontuação no menu de pontuação Acho que é um bom nome. E, claro, lá dentro, vamos passar um nome de usuário perimetral com dois pontos Ok, então vamos criar uma declaração while. Então, enquanto o usuário está, de fato, logado, vamos agora imprimir as opções para ele. Então, primeiro de tudo, eu vou imprimir, tipo, uma mensagem normal. Então, posso dizer algo como login, desculpe, postar menu de login, certo, Post, dash, menu de login Ok, e deixe-me adicionar meu N invertido para que fique na nova linha Ok, agora podemos imprimir as opções. Só haverá dois deles. Está bem? Portanto, a opção número um será simplesmente ver meus registros. Lembre-se de que isso é personalizado. É para o usuário logado. E então a opção número dois, bem, sair, eu acho E aí está. Então, teremos que perguntar ao usuário qual opção ele deseja escolher. Então eu vou dizer que escolha é igual e depois entrada, e então podemos dizer algo como, você sabe, o que você gostaria de fazer Ponto de interrogação. Ok. Então, agora vamos ter que criar as declarações IL para cada cenário. Então, vou escolher o primeiro se a escolha for igual a um, o que queremos fazer, queremos ver os registros e, claro, eles usam um Então, vamos chamar a função, que é ver o nome de usuário dos registros, forma muito, muito simples. E então podemos dizer, se a escolha é igual a dois. E então o que queremos fazer aqui? Bem, podemos simplesmente imprimir uma mensagem que diz que foi desconectado com sucesso Mas não se esqueça de que queremos registrar todas as tarefas. Então, vamos adicionar a declaração do evento log aqui. Então, registre o evento, e então podemos dizer algo como Fstring e, em seguida, podemos dizer que o usuário tem chaves collie e códigos únicos, nome de usuário E aí está. E, claro, não se esqueça de que precisamos do comando break shot caso o usuário conectado decida, por algum motivo, escolher a opção três, quatro, cinco ou qualquer outra opção que não exista Então, vamos dizer pausa e, caso contrário, podemos simplesmente imprimir uma mensagem que diz: escolha inválida Por favor, tente novamente. E aí está. Ok, agora criamos com sucesso a função que exibirá o menu de pós-login. No entanto, como podemos realmente vinculá-lo à função de login? Porque quando o usuário faz login, queremos chamar essa função. Então, o que fazemos? Vamos passar para a função principal de login. E agora vamos dar uma olhada no código. Onde o usuário fez login? Diz aqui que o login foi realizado com sucesso. Então, aqui onde diz que o login foi bem-sucedido, eu vou vir aqui agora e agora chamar nossa função. Então, aqui, eu vou dizer postar login de sublinhado, menu de sublinhado E, claro, entre colchetes, vamos adicionar o nome de usuário e pronto Então é isso. Acho que terminamos de escrever nosso código com sucesso. Agora vamos testá-lo. Vou executar o código, ok? E eu vou fazer o login, primeiro lugar, pois na verdade, você sabe o que? Vou tentar outra coisa, ok? Acabei de registrar um novo usuário. Está bem? E vou chamar esse usuário de Boris Está bem? E então o passe será Bois um, dois, três com o símbolo do anúncio Está bem? Então, agora deixe Boris fazer login. Então Boris e depois Boris um, dois, três, com o símbolo do anúncio E aí está, sim, podemos ver que Bois agora tem o menu de pós-login, e Bois pode ver seus registros, mas pressionando um e pronto, Logs para corpos de usuários Corpos registrados com sucesso às 8:10 35. E então ele se conectou com sucesso às 8:10 45. E se olharmos para o ponto TXT de nossos usuários, aí está. Temos corpos com sua senha hash. E então aqui temos o Alex registrado com sucesso. John fez login com sucesso. Obviamente, esses são testes que eu fiz fora da tela. Mas você pode ver agora que o programa está fato funcionando com sucesso. Existem alguns outros testes que podemos executar. Podemos ter certeza de que, se eu digitar a opção número cinco aqui, ok? Digitei cinco e pressionei Enter, pode indicar uma opção inválida, tente novamente Então, deixe-me tentar sair agora e você poderá ver que, de fato, foi desconectado com sucesso E se eu pressionar três no menu principal, você pode ver agora que ele saiu do sistema e o programa está de fato funcionando corretamente Então aí está. Parabéns. Criamos com sucesso um sistema de registro de usuários bastante avançado que permitiria que os usuários se registrassem. Também implementamos um verificador de senha para garantir que a senha seja forte o suficiente, com pelo menos oito caracteres, uma letra maiúscula Opa, um número e também um símbolo especial E, é claro, também adicionamos recursos de segurança adicionais para fazer hash da senha para que ela seja armazenada em um formato com hash E, é claro, também criamos um menu de pós-login para os usuários de login , onde eles podem ver seus próprios registros pessoais. É isso que tem sido divertido. Muito obrigado por assistir. Te vejo na próxima aula. 78. Conclusão do projeto final: Tudo bem, então parabéns. Construímos com sucesso o sistema de registro de usuários e eu só queria dar mais algumas dicas. Então, caso você queira aprimorar ainda mais o programa ou fazer alguns ajustes aqui e ali. Em vez de criptografar as senhas, por exemplo, você pode tentar criptografá-las. Portanto, você pode tentar remover a função de hash e substituí-la pela função de criptografia Obviamente, você precisará importar a biblioteca de criptografia para poder fazer isso E então você pode até mesmo adicionar uma opção adicional para o usuário de login, além de ele visualizar os registros. Você pode criar uma função, uma função matemática simples que pode calcular algum tipo de, você sabe, multiplicação ou adição Você pode pedir ao usuário que forneça dois ou três números, eles os fornecem, e então a função pode fazer algum tipo de matemática, talvez multiplicá-los ou adicioná-los, você sabe, algo muito, muito básico Você também pode adicionar isso como uma opção extra para o usuário de login. Portanto, há muitas maneiras diferentes de aprimorar ou modificar ainda mais aprimorar ou modificar o sistema de registro de usuários que acabamos de criar. Portanto, seja criativo, pense fora da caixa, procure maneiras de melhorar ou modificar o programa. E se você tiver algumas ideias muito interessantes, adoraria ouvir de você. Eu adoraria que você também compartilhasse seu código, compartilhasse seu código com a comunidade com o resto dos também com o resto dos alunos que estão fazendo o curso. Então, é basicamente isso para o projeto. Espero que você tenha se divertido muito criando o sistema de registro de usuários e espero que também tenha aprendido bastante Então, obrigado por assistir. Obrigado por criar o sistema de registro de usuários comigo. Te vejo na próxima aula. 79. Conclusão do curso: Parabéns. Você chegou ao final deste curso, Python para E espero que você tenha achado o curso muito útil, informativo, educacional, mas também divertido E espero que, neste momento, você tenha as habilidades para escrever alguns programas com Python. se você tiver alguma dúvida sobre qualquer coisa que abordamos neste curso, como de costume, ficarei mais do que feliz em ajudá-lo, responder e ajudá-lo da maneira que puder. Não hesite em entrar em contato comigo. E se você achou este curso útil, não se esqueça de deixar uma avaliação por escrito sobre o curso e deixar o mundo saber que você gostou do curso. Então é isso. Meu nome é Alex. Foi um prazer. Se você vai fazer algum outro dos meus cursos de segurança cibernética Espero ver você nesses cursos também. Mas se isso for um adeus, deixe-me dizer que desejo a você tudo de bom em sua jornada com o Python e também em sua jornada como profissional de segurança cibernética Desejo a você nada além de sucesso e muito mais sucesso Então, Lassa, muito obrigado por fazer o curso para Marlin e nos vemos na próxima vez. Tchau.