Hemmeligekoder Nybegynner P ython Introduksjon Leggbortskilpaddenedine,idagskalvilærehvordanvikansendehemmeligebeskjeder! Kodeklubb-koden Etchiffereretsystemforågjøreomvanligteksttilkodesomikkeandreskalkunnelese.Viskalbrukeetavdeeldsteogmest berømtechifferene,Cæsar-chifferetellerCæsarskode-oppkaltetterGaiusJuliusCæsarsomsannsynligvisbruktedettilå sendehemmeligebeskjeder.Deterneppedenbestemåtenåhindreandreiålesebeskjedenedine,mendetkommervitilbake til.DetfinnesferdigemodulertilPythondukanbrukehvisduvillagenoesomskalværevanskeligåknekke,mennåskalvi forsøkeålageCæsar-chifferetselv. Startmedåtegneallebokstaveneiensirkel. ÅA ØB ÆC ZD YE XF WG VH UI TJ SK RL QM PON Forålageenhemmeligbokstavfraenvanligbokstav,trengerviettallvikanbrukesomhemmelignøkkel.Jeglikertallet3,det eretmagisktall,såvibrukerdet. A+3=DT+3=WÅ+3=C VibegynnermedAogtellerfremover3bokstaver:B,C,D.SåbokstavenAblirtilbokstavenD.Forådekodegjørvidetsamme, menbaklengs.VibegynnermedDogtellerbakoverforåfåA. Steg1:Alfabetet HerkandufåtrøbbelmednorskebokstaveromduikkeharPython3.DuharPython2dersomdetstår2.6eller2.7iIDLE.Iså fallmåduleggeen u forantekstsomerinni "" .Foreksempelbliralfabetetunder u"abcdefghijklmnopqrstuvwxyzæøå" . u -en betyratteksteneravtypenUnicodesomstøtterallenorskebokstaver. Sjekkliste Førstmåvilærepythonalfabetet.ÅpneIDLEoglagennyfilmedkodenunder: alphabet="abcdefghijklmnopqrstuvwxyzæ øå" print(len(alphabet)) Nårdukjørerdetteprogrammetskaldetskriveut29.Passpåatduharmedallebokstavene,ellerskommerikkeden hemmeligekodendintilåvirke. Hvisduerfornøydmedalfabetetdittkanvibegynneåkodeenbokstav. Steg2:Kodeenbokstav Sjekkliste Akkuratsomvigjordemedhjuletovenforkanvifinneposisjonentilenbokstavvedåtelleforover,ogsåbrukebokstaven vienderoppmed. Skrivinnkodenunderogkjørden: alphabet="abcdefghijklmnopqrstuvwxyzæ øå" letter="a" secret=3 pos=alphabet.find(letter) newpos=(pos+secret) ifnewpos>=29: newpos=newpos-29 secretletter=alphabet[newpos] print(secretletter) Vislåropphvor"a"erialfabetetogleggertildethemmeligetalletvårtforåtellefremover.Visjekkeromvihargått rundt,hvisvihardetmåvigåenhelrundetilbakeigjenvedåtrekkefra29(detteerlittsommedgradene,åtrekkefra 360gjøratvierakkuratdervivar).Såslårvioppialfabetetigjenforåsehvilkenhemmeligebokstavvifikk. Kjørkodenogsehvasomskjer. Laosstaentittpåkodenigjen,menvitardetsakte. Dutrengerikkeåskrivedette!Altsomstårbakfirkant-tegnetbryrpythonsegvanligvisikkeom,deterbare kommentarertilmenneskersomskallesekoden. #alphabeternavnetpåtekstenfraatilå alphabet="abcdefghijklmnopqrstuvwxyz" #Denhemmeligebokstaven(letter)ogdethemmeligetallet #(secret)vibrukerforåkodedet letter="a" secret=3 #Finnposisjonentilbokstaven.Pythonvilgiosset #tallfra0til28(pythontellerfra0) pos=alphabet.find(letter) #Gålikelangtfremoversomdethemmeligetalletsier newpos=(pos+secret) #Hvisviharteltforlangt,måvigåenrundetilbake #foråfåettallmellom0og28 ifnewpos>=29: newpos=newpos-29 #Slåoppdenneposisjonenforåsehvilkenbokstav #ialfabetetsomstårder secretletter=alphabet[newpos] #Skrivdennebokstavenutpåskjermen print(secretletter) Determyepython-tingsomskjerher,menikkebliskremtomduikkeforståralttilåbegynnemed.Myeavdetteer akkuratsomiscratch. ifnewpos>=29 erbareen if -setning,entingsombarekjørerkodenunderhvisdetsomstår etter if ersant.En if -setningbrukereninnrykksblokk,akkuratsom for og def somviharsetttidligere. Nåsomvikankodeenbokstav,hvamedådekodeen? Steg3:Finnetilbakebokstavene Akkuratsomikodenfradenforrigeoppgavenskalvifinneposisjonentilbokstaven,mendennegangenskalvigåbakoveri alfabetetforådekode. Sjekkliste Forsøkåskrivinndennekodenogkjørden: alphabet="abcdefghijklmnopqrstuvwxyzæ øå" secret=17 secretletter="r" pos=alphabet.find(secretletter) newpos=pos-secret ifnewpos<0: newpos=newpos+29 letter=alphabet[newpos] print(letter) Steg4:Byggefunksjoner LaosstakodensomlagerogleserCæsar-koderoggjøredenomtiltofunksjoner.Gidenenefunksjonennavnet encode og denandrefunksjonennavnet decode .Tips:Dersomdualdriharhørtomfunksjoner,kandulesemeromdeiSkilpaddeskolen. Foråfåenfunksjontilåsendetilbakeenverdibrukervi return .Dettegjøratvikanlagrefunksjonensresultattilenvariabelog deretterbrukevariabelen. Sjekkliste Lagenfilsomserslikut: alphabet="abcdefghijklmnopqrstuvwxyzæ øå" defencode(letter,secret): pos=alphabet.find(letter) newpos=(pos+secret) ifnewpos>=29: newpos=newpos-29 returnalphabet[newpos] defdecode(letter,secret): pos=alphabet.find(letter) newpos=(pos-secret) ifnewpos<0: newpos=newpos+29 returnalphabet[newpos] print(encode("a",17)) print(decode("r",17)) Huskatdukanbruke'Tab'iIDLEforåfåinnrykk.Dukanogsåmerkedeleravkodenogrykkealtinnpåengang. Prøvåkodeogdekodenoenbokstaver! Steg5:Sendethemmeligordellerto,ogfinn demtilbakeigjen Nåharvinoenfunksjoner,laossbrukedemtilåkodeord.Vikommertilågåigjennomhverbokstaviordetogkodedethvis detfinnesialfabetet(vihopperovertegnsompunktumogmellomrom). Sjekkliste Underdenyefunksjonenefraforrigeoppgavekanduskriveinnkodenunder(medandreord:beholddetdugjordei oppgave4,ogleggtilkodenunder). secret=17 message="helloworld" output="" forcharacterinmessage: ifcharacterinalphabet: output=output+encode(character,secret) else: output=output+character print(output) secret=17 message="yvååckcfåu" output="" forcharacterinmessage: ifcharacterinalphabet: output=output+decode(character,secret) else: output=output+character print(output) Kjørprogrammetogsehvasomskjer. Denførstedelenavkodenburdeskriveut"yvååckcfåu",somerdenhemmeligeversjonenav"helloworld".Denandre delendekoderdetigjenogskriverut"helloworld" Steg6:Dekodingavnoenhemmelige beskjeder Herernoenhemmeligebeskjeder,forsøkådekodedem! daczjymcgyzcdmwwzf? ,hemmelighetener21. æxkxånwnnæbnwwnwnmrwn ,hemmelighetener9. Prøvåsendenoenbeskjedertilvennenedine!HvamedålageetPython-programsomforsøkersegpåallemuligehemmelige tallogforsøkeråknekkekoderselvomduikkekandethemmeligetallet? Lisens: CodeClubWorldLimitedTermsofService Forfatter: OversattfraCodeClubUK Oversetter: BjørnEinarBjartnes
© Copyright 2024