私は皇帝の暗号とvigenere暗号を作成するオンラインコースに取り組んでいますが、まず2つの機能を作成しました。 1つはアルファベット変数の文字の位置を見つけること、もう1つは与えられた文字を与えられた時間だけ回転させることです(私はord()とchr()がうまくいくことを見てきましたが、今のところ、私は推測する)。必要な機能を持つPython Vigenere暗号
私はシーザー機能を働かせることができましたが、vigenere暗号でどのように進めるかはわかりません。私は多くのビデオを見てこのサイトを見回しましたが、スペースやアルファベット以外の文字の保存を許可するものは見つかりませんでした。どのようにvigenere関数を開始する方法の正しい方向に私を指すことができますか?
#Create function alphabet_position(letter) to turn letter into number
#such as a=0 or e=4, using lowercase to make sure case doesnt matter.
def alphabet_position(letter):
alphabet ="abcdefghijklmnopqrstuvwxyz" #Lists alphabet for a key
lower_letter = letter.lower() #Makes any input lowercase.
return alphabet.index(lower_letter) #Returns the position of input as a number.
def rotate_character(char, rot):
alphabet = "abcdefghijklmnopqrstuvwxyz"
if char.isalpha():
a = alphabet_position(char)
a = (a + rot) % 26 #needs modulo
a = (alphabet[a])
if char.isupper():
a = a.title()
return a
else:
return char
def encrypt(text, rot):
list1 = ""
for char in text:
list1 += rotate_character(char, rot)
return list1
def main():
x = input("Type a message: ")
y = input("Rotate by: ")
#result = rotate_character(x, y) #Not needed once encrypt function works.
result = encrypt(x, y)
print (result)
if __name__ == '__main__':
main()
あなたのアルファベットは任意の文字をカバーします。 '%len(アルファベット) 'を追加します。腐敗による暗号化。 'len(アルファベット)-rot 'で解読する。 –
あなたはLen(アルファベット)を法とするべきですか?私の現在の暗号化機能の中で? '%26'の代わりに' rotate_character'に –
... –