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.