Python 有两个密钥的凯撒密码
Python Caesar cipher with two keys
我想用两个密钥写一个凯撒密码;一个用于元音,另一个用于辅音。
我有只有大写字母的单词。我写了一些代码,但我知道这是错误的。我想沿着这条路走。有人可以帮助我吗:
def ceasar(word, key1, key2):
c = ""
for i in range(len(word)):
zn = word[i]
for x in zn:
if x=="A" or x=="E" or x=="I" or x=="O" or x=="U":
c += chr((ord(zn) + key1-65) % 26 + 65)
else:
c += chr((ord(zn) + key2-65) % 26 + 65)
return c
只考虑大写字母而不考虑其他字符,您可以通过稍微简化它来使其工作:
def caesar(word, key1, key2):
c = ""
for x in word:
if x in "AEIOU":
c += chr((ord(x) + key1 - 65) % 26 + 65)
else:
c += chr((ord(x) + key2 - 65) % 26 + 65)
return c
你有两个循环,但在你的代码中这是不必要的,zn
只是一个字符,所以不需要第二个循环。
我已经简化了您的元音检查,因为您可以比使用多个 or
条件更简单地检查一个字符是否出现在字符串中。
在 Python 中更常见的是按值循环迭代器,而不是循环索引然后使用该索引值访问迭代器。
我想用两个密钥写一个凯撒密码;一个用于元音,另一个用于辅音。
我有只有大写字母的单词。我写了一些代码,但我知道这是错误的。我想沿着这条路走。有人可以帮助我吗:
def ceasar(word, key1, key2):
c = ""
for i in range(len(word)):
zn = word[i]
for x in zn:
if x=="A" or x=="E" or x=="I" or x=="O" or x=="U":
c += chr((ord(zn) + key1-65) % 26 + 65)
else:
c += chr((ord(zn) + key2-65) % 26 + 65)
return c
只考虑大写字母而不考虑其他字符,您可以通过稍微简化它来使其工作:
def caesar(word, key1, key2):
c = ""
for x in word:
if x in "AEIOU":
c += chr((ord(x) + key1 - 65) % 26 + 65)
else:
c += chr((ord(x) + key2 - 65) % 26 + 65)
return c
你有两个循环,但在你的代码中这是不必要的,zn
只是一个字符,所以不需要第二个循环。
我已经简化了您的元音检查,因为您可以比使用多个 or
条件更简单地检查一个字符是否出现在字符串中。
在 Python 中更常见的是按值循环迭代器,而不是循环索引然后使用该索引值访问迭代器。