Secret Messages

Transcrição

Secret Messages
Python
2
Secret
Messages
AllCodeClubsmustberegistered.Byregisteringyourclubwecanmeasureour
impact,andwecancontinuetoprovidefreeresourcesthathelpchildrenlearnto
code.Youcanregisteryourclubatcodeclubworld.org.
Introdução:
Nesteprojetovocêaprenderácomofazerseupróprioprogramade
criptografia,assimvocêpoderáenviarerecebermensagens
secretasdeumamigo.
Listadeatividade
SigaestasINSTRUÇÕESumaauma
Testeseuprojeto
CliquenabandeiraverdeparaTESTAR
Salveseuprojeto
Certifique-sedeSALVARseutrabalho
1
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Passo1:Criptografandomensagens
Umacifraéumtipodecódigosecreto,ondevocêtrocaasletrase
ninguémconseguelersuasmensagens.Vocêusaráumadasmais
antigasemaisfamosascifras,acifradeCésar,quefoinomeadaem
homenagemaumtaldeJúlioCésar.
Vocêcomeçarádesenhandoletrasemumcírculo,comoeste:
Paracriarumamensagemcriptografadasecretaapartirdeuma
mensagemnormal,vocêprecisadeumachavesecreta.Emnosso
exemplo,vamosusaronúmero3.Paracriptografaraletra‘a’,você
simplesmentemoverá3letrasnosentidohorário,oqueresultanaletra
‘d’:
2
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Paradescriptografaramensagem,vocêsimplesmentemove3letrasno
sentidoanti-horário.
ListadeAtividades
VamoscomeçarescrevendoumprogramaPythonque
criptografaumúnicocaracter.Executeesteprograma,e
entrealetra‘a’paraverificarseelefunciona:
#listadeletrasparacriptografar
alfabeto="abcdefghijklmnopqrstuvwxyz"
#achavesecretaé3
chave=3
letra=input("Porfavor,entreumaletrapara
criptografar:")
#encontreaposiçãodaletraemalfabeto
#exemplo:'a'estánaposição0,'e'estánaposição4,
etc.
posicao=alfabeto.find(letra)
3
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
#someachavesecretaparaencontraraposiçãodaletra
criptografada
#%26significa'voltepara0quandovocêchegarno
26'
novaPosicao=(posicao+chave)%26
#aletracriptografadaestánoalfabetonanovaposição
letraCriptografada=alfabeto[novaPosicao]
print("Sualetracriptografadaé",letraCriptografada)
EmPython,textospodemserconsideradoscomoum
conjuntodecaracteres/letrasunidas(tambémchamadas
dearraydecaracteres).Alinha:
posicao=alfabeto.find(letra)
encontraaposiçãodeletraem alfabeto .Namaioriadas
linguagensdeprogramação,posiçõessemprecomeçam
do0enãodo1,assim,notexto
“abcdefghijklmnopqrstuvwxyz”,‘a’éocaracterqueestá
naposição0,‘b’estánaposição1,eassimpordiante.
4
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Emseguida,achavesecretaésomadaà posicao ,para
obtera novaPosicao docaractercriptografado.Assim,
nesteexemplo,‘a’estánaposição0,assim,depoisde
somarachave,nósobtemos 0+3=3 .
Ocódigo %26 significaquenoprocessodeencontraro
númerodaposiçãodocaractercriptografado,onúmeroé
reiniciadopara0assimqueeleatinge26.Issosignifica
queapós‘z’emnossacifra,voltamospara‘a’novamente.
Emseguida,estanovaposiçãoéusadaparaencontraro
caractercriptografadoem alfabeto ,eelaéacrescentada
à letraCriptografada ,antesdefinalmenteimprimira
mensagemcriptografadacompleta.Ocódigo:
alfabeto[novaPosicao]
procuraaletraemdeterminadaposição.Assim
alfabeto[0]
é‘a’, alfabeto[3] é‘d’.
Observetambémque,nesteprograma,vocêusouuma
maneiraabreviadadecapturaraentradadousuário.Ao
invésdeescrever:
print("Porfavor,entreumaletraparacriptografar:")
letra=input()
Vocêpodesimplesmenteusarestalinha:
5
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
letra=input("Porfavor,entreumaletrapara
criptografar:")
Vocêpodeusaromesmoprogramaparadescriptografar
umaletrautilizando-3comochave,aoinvésde 3 .Isto
significaque,paradescriptografarumaletra,vocêse
moveparatrásnoalfabetoenãoparafrente.Você
voltarápara‘z’assimquevocêatingiro‘a’.
Sevocêpreferirterprogramasseparadospara
criptografaredescriptografar,mudeestecódigopara
percorreravariávelalfabetoparatrás:
#subtraiaachaveparavoltarparatrás
novaPosicao=(posicao-chave)%26
6
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
SalveSeuProjeto
Challenge:Chavesvariáveis
Modifiqueoprogramadecriptografiaacima,demodoque
ousuáriopossaentrarsuaprópriachave.Vocêprecisará
capturaraentradadousuário,earmazenaremuma
variável chave .Lembre-sedeusarafunção int() para
converteraentradaemumnúmerointeiro.
SalveSeuProjeto
Desafio:Criptografandoedescriptografando
caracteres
Useseuprogramaparacriptografar:
Aletra‘d’usandoachavesecreta7;
Aletra‘x’usandoachavesecreta4;
Vocêconsegueusarseuprogramapara
descriptografarestemensagem:
omqemd(achavesecretaé12)
SalveSeuProjeto
Step2:Criptografandomensagens
Aoinvésdecriptografaredescriptografarumcaracterdamensagempor
vez,vamosescreverumprogramaparacriptografaredescriptografar
mensagensinteiras!
7
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
ListadeAtividades
Atéagoravocêusoulaços(loops)pararepetirocódigo:
umdeterminadonúmerodevezes;
atéquealgoaconteçaemseuprograma.
Existeumterceiromododeusarlaços,queérepetiro
códigoparacadaelementoemumdado.Porexemplo,For
example,sevocêquiserpercorrereimprimircada
caracterdonomedealguém,vocêpodeusareste
programa:
nome=input("Qualseunome?")
#imprimacadacaracterdoseunome
forcharinnome:
print(char)
Noprogramaacima,umaletradonomeéarmazenadana
variável char edepoisimpressa.Percebaque
8
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
armazenamoseimprimimosumaletradecadavez. char
éapenasonomedeumavariável,evocêpodemudaro
nomedavariávelsevocêquiser.Executeoprograma
paratestá-lo:
Vocêpodeusarestetipodelaço(loop)parapercorrera
mensagemtoda,ecriptografarumcaracterporvez:
#umalistadeletrasparacriptografar
alfabeto="abcdefghijklmnopqrstuvwxyz"
#captureamensagemdousuário
mensagem=input("Porfavor,entreamensagemaser
criptografada:").lower()
#estavariávelarmazenaráamensagemcriptografada
mensagemCriptografada=""
#captureachavesecreta
chave=input("Porfavor,entreachave:")
#Estaaçãoénecessáriaporqueoprogramanãolêo
valordachavecomonúmero
chave=int(chave)
#percorracadacaracternamensagem
forcharinmensagem:
ifcharinalfabeto:
#encontreaposicaodecaracteremalfabeto
#porexemplo,'a'estánaposição0,'e'está
naposição4,etc.
posicao=alfabeto.find(char)
#someachavesecretaparaencontraraposição
docaractercriptografado
#%26significa'voltepara0quandovocê
atingir26'
novaPosicao=(posicao+chave)%26
9
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
#acrescentealetradescriptografadaàmensagem
#aletracriptografadaestáemalfabetona
novaPosicao
mensagemCriptografada=mensagemCriptografada+
alfabeto[novaPosicao]
else:
#algunscaracteres(porexemplo'£','?')não
estãonoalfabeto,
#entãosimplesmenteadicionealetra
criptografadaàmensagem
mensagemCriptografada=mensagemCriptografada+
char
print("Suamensagemcriptografadaé:",
mensagemCriptografada)
Nesteprograma,cadacaracterdamensagemé
criptografadoeadicionadoàvariável
mensagemCriptografada
.Percebaquecriptografamose
adicionamosumcaracterporvez.Nofinaldoprograma,a
mensageminteiraéimpressa.
Existemcaracteresqueousuáriopodeentrar,masque
nãoestãono alfabeto .Porexemplo,espaços,vírgulase
pontosdeinterrogação.Ocomando ifcharinalfabeto:
significaqueapenascaracteresqueapareçamnoalfabeto
sãocriptografados.Qualqueroutrocaracteré
simplesmenteadicionadoàmensagemencriptadasem
10
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
sercriptografada.
SalveSeuProjeto
Desafio:Criptografandoedescriptografando
mensagens
Criptografealgumasmensagens,easdeaumamigo
juntocomachavesecreta.Vejaseseusamigos
conseguemdescriptografá-lasusandooprogramadeles!
SalveSeuProjeto
Desafio:Melhorandosuacifra
Alguémconseguedescriptografarsuasmensagenssema
chave?Vocêconseguemodificarseuprogramaparatornar
maisdifícilqueaspessoasquebremsuasmensagens?Veja
aquialgumasidéias:
Embaralheasletrasnasuavariável alfabeto ;
Acrescente1àchavecadavezqueumaletrafor
criptografada;
Removatodososespaçoseoutroscaracteresda
mensagemcriptografada.
SalveSeuProjeto
11
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Desafio:Calculadoradoamor
Escrevaumprogramaparaavaliarquãoduaspessoassão
compatíveis,calculandoseuplacardecompatibilidade.
oprogramapoderiapercorrercadacaracternos2nomes,
eacrescentarpontosàvariável placar cadavezqueas
letrassãoencontradas.Vocêpodedecidirasregraspara
concederpontos.Porexemplo,vocêpoderiaconceder
pontosporvogais,oucaracteresquetambémestãona
palavra“amor”:
ifcharin"aeiou":
placar=placar+5
ifcharin"loves":
placar=placar+10
Vocêpodemostrarmensagenspersonalizadas,baseadas
onplacardecompatibilidade:
ifplacar<10:
print("Esqueçaestapessoa!Nuncavaidarcerto!")
12
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
SalveSeuProjeto
13
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.

Documentos relacionados

Caça fantasmas

Caça fantasmas Fazer com que os fantasmas apareçam com uma frequência menor; Fazer os fantasmas menores. Teste seu jogo algumas vezes até que você esteja satisfeito com o nível de dificuldade.

Leia mais

Baixar PDF - Languages

Baixar PDF - Languages All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais

Baixar PDF

Baixar PDF All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais

Jogo da Memória

Jogo da Memória All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais

Arte em ASCII

Arte em ASCII Execute o arquivo clicando em Run -> Run Module . Você verá outra janela aparecer, que é o Shell do Python. Esse é o lugar onde seu programa vai rodar. Se tudo funcionou como esperado, você verá ...

Leia mais

Baixar PDF

Baixar PDF All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais