2017-04-09 4 views
3

Zum Beispiel, wenn ich 4 verschiebt sich zu „Breakzone“ anzuwenden waren, als es wie sein würde bestimmt:Wie ein Caesar-Chiffre mit mehreren Verschiebungen auszuführen

„b“ um 2 Zeichen verschoben "werden würde r "würde um 3 Zeichen verschoben werden" e "würde um 4 Zeichen verschoben werden " a "würde um 5 Zeichen verschoben werden und dann würden wir wieder bei der anfänglichen Verschiebung Betrag um 2: " k "wäre um 2 Zeichen verschoben etc ...

hier ist, was ich bisher habe:

statement = input("Enter string: ") 
multiple_shifts = input(int("Enter shift amounts: ")) 
def caesar(word,multiple_shifts): 
    for ch in statement: 
     if ch = statement[0]: 

Ich weiß, es ist nicht viel, aber ich bin definitiv verloren und jede Hilfe wird geschätzt. Wenn Sie nicht gebeten werden, "meinen eigenen Code zu schreiben", weisen Sie mich einfach in die richtige Richtung, so dass ich jedes Wissen über dieses Thema sehr zu schätzen weiß.

+0

"Chiffre, in der die Buchstaben des Alphabets durch einen anderen Buchstaben ersetzt werden, die einen festen Abstand zum ursprünglichen Buchstaben haben." Wenn sich jeder Buchstabe um einen anderen Betrag verschiebt, wäre das nicht eine Caesar-Chiffre? –

+0

Ja, ich bin mir einfach nicht sicher, wie ich diese Schichten den Buchstaben – Chris

Antwort

2

Hier ist eine sehr grobe Umsetzung:

import sys 

def caesar(word, shifts): 
    word_list = list(word.lower()) 
    result = [] 
    s = 0 
    for c in word_list: 
     next_ord = ord(c) + s + 2 
     if next_ord > 122: 
      next_ord = 97 

     result.append(chr(next_ord)) 
     s = (s + 1) % shifts 
    return "".join(result) 

if __name__ == "__main__": 
    print(caesar("breakzone", 4)) 

Wenn Sie sich fragen, was mit 122 ist und 97, diejenigen, die Unicode-Werte für Kleinbuchstaben z und a sind. Sie könnten das Obige leicht ändern, um vollen Unicode zu unterstützen (z. B. in der Lage sein, zum Beispiel H3ll0 zu kodieren). Here ist ein Unicode-Diagramm, das Ihnen helfen könnte.

+0

zuweisen würde Danke! Ich schätze es und entschuldige, dass ich nicht updaten konnte Ich habe jetzt weniger als 15 Reputation – Chris

+0

Muss ich die Schichten Teil einer Liste machen? – Chris

+0

Nein, Shifts ist nur eine Zahl, wie in Ihrem Beispiel 4. –

Verwandte Themen