Din egen chattbot - Marvin - kryptera och dekryptera

By . Latest revision .

Programmering och problemlösning i Python. Lär Marvin lite mer, denna gången om kryptering och dekryptering.

#Förkunskaper

Du kan grunderna i Python med listor och dictionaries och du har byggt fjärde delen av Marvin.

#Introduktion

ROT13 är enkelt chiffer som flyttar varje bokstav 13 positioner framåt.

Caesarchiffer är en variant av ROT13 där man väljer antalet positioner som bokstaven skall flyttas.

Det räcker om du enbart använder det engelska alfabetet i uppgiften, A-Z och a-z.

Boken Invent your games with Python har i kapitel 14 en beskrivning av Ceasar Chiper.

Boken “Invent with Python: Learn to program by hacking ciphers” har två kapitel som kan vara bra att kika på:

#Krav

Utgå från din kod i katalogen me/kmom05/marvin4 och bygg vidare där.

# Ställ dig i roten av kurskatalogen
cd me/kmom05/marvin4
  1. Lär Marvin koda om en sträng med ROT13.

  2. Lär Marvin koda Ceasarchiffer med valbart antal teckens justering.

  3. Lär Marvin knäcka ett Ceasarchiffer den hårda vägen genom att visa upp alla alternativ och låta användaren bestämma vilket som är rätt antal teckens justering. Du knäcker ett Ceasarchiffer genom att ta en krypterad sträng och “kryptera baklänges”, det vill säga att du shiftar -1, -2, -3 och så vidare med alla möjliga justeringar.

  4. Validera Marvin genom att göra följande kommando i kurskatalogen i terminalen.

# Ställ dig i kurskatalogen
dbwebb validate marvin4

Rätta eventuella fel som dyker upp och validera igen. När det ser grönt ut så är du klar.

#Extrauppgift

  1. Använd följande rader och lär Marvin att automatiskt dekryptera dem. Använd ordlistor och din kunskap om letter frequency för att göra Marvin smartare.
R UXEN VH TRCCH,
FR DBMMR EHOXL FX,
CXPNCQNA FN'AN BX QJYYH,
OBR OZKOMG QOFSTFSS.
PDKQCD IU DAWZ DWO OQOLEYEKJO,
FTMF U WQQB GZPQD YK TMF,
AR ITMF YUSTF TMBBQZ,
DA D NCMVIF OJ OCZ NDUZ JA V MVO.
ZFBI. J'N QSFUUZ TVSF NZ DBU XPVME FBU NF.

#Tips från coachen

Lär dig felsöka med debuggern, använd den när du får problem. Komplettera med utskrifter av print().

Validera ofta. Så slipper du en massa valideringsfel i slutet av övningen.

Lycka till och hojta till i forumet om du behöver hjälp!

#Revision history

  • 2015-08-25: (F, mos) Uppgraderade till dbwebb v2.
  • 2015-02-05: (E, mos) Tog bort extrauppgift med [Alice som blev en egen uppgift](uppgift/din-egen-chattbot-marvin-steg-analysera-text-och-ord), lade till extrauppgift med kodade rader.
  • 2015-02-02: (D, mos) Ändrar cd-kommendot så det flyttar till rätt katalog.
  • 2014-08-27: (C, mos) Ändrar hur uppgiften kopieras från start och skrev om lite text.
  • 2014-08-16: (B, Sylvanas) lade till extrauppgifter.
  • 2014-07-03: (A, mos) Första utgåvan i samband med kursen python.

Document source.

Category: python.