Forumet - Hur gör man ett Caesarchiffer i Python?

Hur gör man ett Caesarchiffer i Python?

178 0 2
Hej! Första gången jag gör ett inlägg här :)

Jag har fått en uppgift där jag ska skapa ett Caesarchiffer. Det innebär att användaren ska kunna skriva in en mening till programmet och förskjutningen som ska användas. Därefter ska bokstäverna förskjutas framåt med förskjutningen som skrevs in. De tecken som ska förskjutas är: A-Z , a-z. De som inte sa förskjutas är siffror, mellanslag och punkter.

Det har gått ganska bra att fixa denna kod men problemet kommer när förskjutningen blir för stor. Jag har i programmet omvandlat bokstäverna som skrivs in till ASCII-kod och lagt på förskjutningen på den koden. Men när den överstiger t.ex. 122 (som är z) så vill jag att den ska börja om från 97(som är a) och lägga på resten av förskjutningen där. Detta borde lösas genom att ta bort 26 men det har inte fungerat för mig. När jag ser på koden förstår jag att det måste finnas ett enklare sätt att lösa detta på men jag kan inte komma på det.

Tänk även på att jag inte har kommit långt i programmeringen så jag kan bara använda det mest grundläggande. Andra jag har frågat har t.ex. föreslagit is.alpha() funktionen men får jag inte använda.

Såhär ser koden ut nu:

mening = input("Skriv in en mening: ")
b = input("Skriv in förskjutningen: ")


for i in range(len(mening)):
    if ord(mening[i]) == 46:
        print(end=".")
    elif ord(mening[i]) == 32:
        print(end=" ")
    elif ord(mening[i]) == 90:
        print(end=chr(ord(str[i] ) -26 + int(b)))
    else:
        print(chr(ord(mening[i]) + int(b)), end="")

Detta är skrivet i iPython Notebook vilket har versionen 3.x

Inga kommentarer

Tråden har 2 svar. Sortera efter:
kan första googleträffen komma till pass kanske? 

http://inventwithpython.com/chapter14.html