Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Like dokumenter
Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Hemmelige koder. Kodeklubb-koden. Steg 1: Alfabetet. Sjekkliste. Introduksjon

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Skilpadder hele veien ned. Steg 1: Tegn et fjell. Sjekkliste. Introduksjon. Hent frem skilpaddene dine, åpne IDLE, det er på tide å tegne igjen.

Skilpadder hele veien ned

Steg 1: Regneoperasjoner på en klokke

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Skilpadder hele veien ned

Kryptering med vigenere-metoden

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Kryptering med Vigenère-metoden

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

PGZ - Hangman Ekspert Python Lærerveiledning

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Skrevet av: Oversatt fra microbit-micropython.readthedocs.io (

Hangman. Level. Introduksjon

Mattespill Nybegynner Python PDF

Øvingsforelesning i Python (TDT4110)

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Oppgaver uke 1: Løsningsforslag

Skilpadder Introduksjon Python PDF

Repetisjon Novice Videregående Python PDF

Skilpaddefraktaler Erfaren Python PDF

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Løpende strekmann Erfaren Videregående Python PDF

Verden. Steg 1: Vinduet. Introduksjon

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

Steg 1: Tekst på flere linjer

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Skilpadder. Introduksjon: Steg 1: Hei, Skilpadde! Sjekkliste. Skrevet av: Oversatt fra Code Club UK (//codeclub.org.uk)

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Hvis Python allerede er installert på maskinen din er det bare å begynne.

INF109 - Uke 1a

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Hvor i All Verden? Del 3 Erfaren Scratch PDF

Øvingsforelesning i Python (TDT4110)

Steg 1: Husker du skilpadden?

Finne ut om en løsning er helt riktig og korrigere ved behov

INF1040 Oppgavesett 14: Kryptering og steganografi

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Finne ut om en løsning er helt riktig og korrigere ved behov

Hvor i All Verden? Del 3. Introduksjon. Steg 0: Forrige gang. Sjekkliste. Skrevet av: Geir Arne Hjelle

Øvingsforelesning 5 Python (TDT4110)

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

Øvingsforelesning 5 Python (TDT4110)

Utførelse av programmer, metoder og synlighet av variabler i JSP

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Steg 1: Rest etter divisjon

Løse reelle problemer

Øvingsforelesning 7 i Python (TDT4110)

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

Læringsmål og pensum. if (be): else (not_to_be):

Forkurs i informatikk Python. Andreas Færøvig Olsen

Kom i gang med Python

JS: Grunnleggende JavaScript Nybegynner

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Steg 0: Installere Pygame Zero

UNIVERSITETET I OSLO

JS: Grunnleggende JavaScript

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

Sprettende ball Introduksjon Processing PDF

JS: Trykkomania Nybegynner Web Lærerveiledning

INF Uke 11. Ukeoppgaver oktober 2012

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

I denne oppgaven skal vi gjøre enkle operasjoner på tekst, som å endre størrelsen på bokstavene og telle ord.

Læringsmål og pensum. v=nkiu9yen5nc

Løse reelle problemer

Tell sekunder. Steg 0: Hva er forskjellig fra før? Introduksjon. I denne oppgaven skal vi lage vårt eget spill!

Oppsummering fra sist

Stjerner og galakser Nybegynner Python PDF

Steg 1: Lag bildedeklarasjon

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

INF120: Oblig 3. Yngve Mardal Moe

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Hvordan angripe en større oppgave? (og hva skal jeg gjøre i oblig 7!?)

TDT4110 IT Grunnkurs Høst 2016

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

IN1000 Obligatorisk innlevering 7

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

INF100/INF100-F - INNLEVERING 2 HØSTEN 2005

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Transkript:

03 Hemmelige koder Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder! Kodeklubb-koden Et chiffer er et system for å gjøre om vanlig tekst til kode som ikke andre skal kunne lese. Vi skal bruke et av de eldste og mest berømte chifferene, Cæsarchifferet eller Cæsars kode - oppkalt etter Gaius Julius Cæsar som sannsynligvis brukte det til å sende hemmelige beskjeder. Det er neppe den beste måten å hindre andre i å lese beskjedene dine, men det kommer vi tilbake til. Det finnes ferdige moduler til Python du kan bruke hvis du vil lage noe som skal være vanskelig å knekke, men nå skal vi forsøke å lage Cæsar-chifferet selv. Start med å tegne alle bokstavene i en sirkel. Z Æ Ø Å A B C D Y E X F W V G H U I T J S R Q P O N M L K For å lage en hemmelig bokstav fra en vanlig bokstav, trenger vi et tall vi kan bruke som hemmelig nøkkel. Jeg liker tallet 3, det er et magisk tall, så vi bruker det. A + 3 = D T + 3 = W Å + 3 = C 1

Vi begynner med A og teller fremover 3 bokstaver: B, C, D. Så bokstaven A blir til bokstaven D. For å dekode gjør vi det samme, men baklengs. Vi begynner med D og teller bakover for å få A. Oppgave 1: Alfabetet Her kan du få trøbbel med norske bokstaver om du ikke har Python 3. Du ser det i IDLE, står det 2.6 eller 2.7 eller noe sånt har du Python 2. I så fall kan du enten installere 3 eller bare hoppe over norske bokstaver. 1. Først må vi lære python alfabetet. Åpne IDLE og lag en ny fil med koden under: print(len(alphabet)) 2. Når du kjører dette programmet skal det skrive ut 29. Pass på at du har med alle bokstavene, ellers kommer ikke den hemmelige koden din til å virke. Hvis du er fornøyd med alfabetet ditt kan vi begynne å kode en bokstav. Oppgave 2: Kode en bokstav 1. Akkurat som vi gjorde med hjulet ovenfor kan vi finne posisjonen til en bokstav ved å telle forover, og så bruke bokstaven vi ender opp med. Skriv inn koden under og kjør den: letter = "a" secret = 3 newpos = (pos + secret) if newpos >= 29: newpos = newpos - 29 secretletter = alphabet[newpos] print(secretletter) 2

Vi slår opp hvor a er i alfabetet og legger til det hemmelige tallet vårt for å telle fremover. Vi sjekker om vi har gått rundt, hvis vi har det må vi gå en hel runde tilbake igjen ved å trekke fra 29 (dette er litt som med gradene, å trekke fra 360 gjør at vi er akkurat der vi var). Så slår vi opp i alfabetet igjen for å se hvilken hemmelige bokstav vi fikk. 2. Kjør koden og se hva som skjer. 3. La oss ta en titt på koden igjen, men vi tar det sakte. Du trenger ikke å skrive dette! Alt som står bak firkant-tegnet bryr python seg vanligvis ikke om, det er bare kommentarer til mennesker som skal lese koden. # alphabet er navnet på teksten fra a til å alphabet = "abcdefghijklmnopqrstuvwxyz" # Den hemmelige bokstaven (letter) og det hemmelige tallet (secret) vi # bruker for å kode det letter = "a" secret = 3 # Finn posisjonen til bokstaven # og python vil gi oss et tall fra 0 til 28 (python teller fra 0) # gå like langt fremover som det hemmelige tallet sier vi skal newpos = (pos + secret) # Hvis vi har telt for langt, må vi gå en runde tilbake for å få et tall # mellom 0 og 28 if newpos >= 29: newpos = newpos - 29 # Slå opp denne posisjonen for å se hvilken bokstav i alfabetet som står # der secretletter = alphabet[newpos] # og skriv dette ut på skjermen print(secretletter) Det er mye python-ting som skjer her, men ikke bli skremt om du ikke forstår alt til å begynne med. Mye av dette er akkurat som i scratch. if newpos >= 29 er bare en if-setning, en ting som bare kjører koden under hvis det som står etter if er sant. En if-setning bruker en innrykksblokk, akkurat som for og def som vi har sett tidligere. 3

Nå som vi kan kode en bokstav, hva med å dekode en? Oppgave 3: Finne tilbake bokstavene Akkurat som i koden fra den forrige oppgaven skal vi finne posisjonen til bokstaven, men denne gangen skal vi gå bakover i alfabetet for å dekode. 1. Forsøk å skriv inn denne koden og kjør den: secret = 17 secretletter = "r" pos = alphabet.find(secretletter) newpos = pos - secret if newpos < 0: newpos = newpos + 29 letter = alphabet[newpos] print(letter) Oppgave 4: Bygge funksjoner La oss ta den første programkoden (som laget Cæsar-kode av bokstaver) og gjøre den om til en funksjon encode og den andre programkoden til en funksjon decode. I modul to snakket vi om å bruke prosedyrer for å unngå gjentagelser, denne gangen skal vi lage funksjoner i stedet. Ved første øyekast er prosedyrer og funksjoner veldig like (og Python bryr seg strengt tatt ikke om forskjellen), men når man ser nærmere etter har de ulike egenskaper. Dette spiller ikke så stor rolle nå, men det er like greit å lære seg forskjellen med en gang. Prosedyrer bare gjør ting, mens funksjoner bare beregner ting. Noen ganger blander man de to tingene sammen og lager prosedyrer som både beregner og gjør ting, men jo mer du kan skille disse fra hverandre jo enklere blir programmet ditt både for deg selv og for andre. Grunnen til at vi kaller det vi lager nå for funksjoner, er at de bare beregner en verdi - de skriver ingenting ut, de tegner ingenting på skjermen og resultatet blir likt hver eneste gang hvis man gir inn samme bokstav og hemmelige tall. For å få en funksjon (eller en prosedyre som beregner noe) til å returnere en verdi som vi kan bruke senere, bruker vi kommandoen return. 4

1. Lag en fil som ser slik ut: def encode(letter, secret): newpos = (pos + secret) if newpos >= 29: newpos = newpos - 29 return alphabet[newpos] def decode(letter, secret): newpos = (pos - secret) if newpos < 0: newpos = newpos + 29 return alphabet[newpos] print(encode("a", 17)) print(decode("r", 17)) Husk at du kan bruke Tab i IDLE for å få innrykk. Du kan også merke deler av koden og rykke alt inn på en gang. 2. Prøv å kode og dekode noen bokstaver! Oppgave 5: tilbake igjen Send et hemmelig ord eller to, og finn dem Nå har vi noen funksjoner, la oss bruke dem til å kode ord. Vi kommer til å gå igjennom hver bokstav i ordet og kode det hvis det finnes i alfabetet (vi hopper over tegn som punktum og mellomrom). 1. Under de nye funksjonene fra forrige oppgave kan du skrive inn koden under (med andre ord: behold det du gjorde i oppgave 4, og legg til koden under). 5

secret = 17 message = "hello world" output = "" for character in message: if character in alphabet: output = output + encode(character, secret) else: output = output + character print(output) secret = 17 message = "yvååc kcfåu" output = "" for character in message: if character in alphabet: output = output + decode(character, secret) else: output = output + character print(output) 2. Kjør programmet og se hva som skjer. Den første delen av koden burde skrive ut yvååc kcfåu, som er den hemmelige versjonen av hello world. Den andre delen dekoder det igjen og skriver ut hello world Oppgave 6: Dekoding av noen hemmelige beskjeder Her er noen hemmelige beskjeder, forsøk å dekode dem! 1. daczj ym cgyzcdmwwzf?, hemmeligheten er 21. 2. æxkxånwn næ bnwwnwn mrwn, hemmeligheten er 9. Prøv å sende noen beskjeder til vennene dine! Hva med å lage et Python-program som forsøker seg på alle mulige hemmelige tall og forsøker å knekke koder selv om du ikke kan det hemmelige tallet? 6