Secret Messages
Transcrição
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
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 maisBaixar 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 maisBaixar 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 maisJogo 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 maisArte 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 maisBaixar 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