def caesar_cipher(offset, string):
words = string.replace(" ", " ")
cipher_chars = "abcdefghijklmnopqrstuvwxyz"
word_i = 0
while word_i < len(words):
word = words[word_i]
letter_i = 0
while letter_i < len(word):
char_i = ord(word[letter_i]) - ord("c")
new_char_i = (char_i + offset) % 26
value = chr(new_char_i + ord("c"))
letter_i += 1
word_i += 1
return words.join(value)
print caesar_cipher(3, "abc")
嘿大家,由於某種原因,我的ceasar密碼只打印我的字符串中的最後一個字母,當我想要它密碼整個字符串,例如,如果我打印字符串「abc」3的偏移量,它應該打印def,而只是打印f。任何幫助是極大的讚賞!爲什麼我的caeser密碼只能打印字符串的最後一個字母?蟒蛇
什麼是與第2行空間的空間了?這應該是'words = string.split(「」)'? –
你爲什麼要減去並添加'ord('c')'?這種方式'value'只能包含字符'c'to'z','{'和'|'。 (由於'0 <= new_char_i <= 25'。) –
@RobinKoch我最初把它當作string.split,但是改成它來替換看看會做什麼。仍然是開發和算法的新手。 – Johnny