问题描述
假设单词是 "CAT"
,我希望输出是 "DCW"
。其中 C
变为下一个字母 D
,而 A
变为来自 A
的 second 下一个字母到 C
并且 T
变成了从 T
到 W
的第三个 下一个字母。
我是第一步:
a = input("Enter a letter: ")
a = chr(ord(a) + 1)
print(a)
解决方法
您需要遍历单词:
word = 'CAT'
result = ''
for i,a in enumerate(word,1):
result += chr(ord(a) + i)
print(result)
# alternatively,same loop as list comprehension
print(''.join(chr(ord(a) + i) for i,1)))
出:
DCW
DCW
,
试试这个:
import string
a =input("Enter a letter: ")
r=''
for i,e in enumerate(a,1):
r=r+string.ascii_lowercase[string.ascii_lowercase.index(e.lower())+i]
print(r.upper())
或者像这样的一行:
print(''.join(list(string.ascii_lowercase[string.ascii_lowercase.index(e.lower())+i] for i,1) )).upper())
注意:在 Python 2 中,string.ascii_lowercase
是 string.lowercase
。
您要查找的内容称为 Caesar cypher,但偏移量随角色的位置而变化:
def encrypt(text):
result = ""
for i in range(len(text)):
char = text[i]
if (char.isupper()):
result += chr((ord(char) -65) % 26 + 65 + i + 1)
else:
result += chr((ord(char) - 97) % 26 + 97 + i + 1)
return result
print(encrypt(input()))
来源:https://www.tutorialspoint.com/cryptography_with_python/cryptography_with_python_caesar_cipher.htm