1

我想通过将每个字母增加两个字母位置来解密字符串,“a”变为“c”。我已经使用chrandord来表示增量,但不知道如何跳过字符串中的特殊字符,例如空格和括号。

from sys import stdout
from time import sleep

encodedString = 'g fmnc wms'

stringLength = len(encodedString)

for i in range(0, stringLength):
    if encodedString[i].isalpha():
        decodedString = chr(ord(encodedString[i]) + 2)
        stdout.write("\r%s" % decodedString)
        stdout.flush()
        sleep(0.1)
stdout.write("\n")
4

2 回答 2

1

只是为了好玩,这是另一种方法:

encodedString = 'g fmnc wms'

alphabet = 'abcdefghijklmnopqrstuvwxyz'
capalphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
decodedString = ""

for i in range(len(encodedString)):
    if encodedString[i] in alphabet:
        decodedString += alphabet[i+2]
    elif encodedString[i] in capalphabet:
        decodedString += alphabet[i+2]
    else:
        decodedString += encodedString[i]

print(decodedString)
于 2013-09-14T00:25:24.413 回答
1

您可能想检查一种不同的方法,从而得到更简单的代码:使用正则表达式来捕获所有字母并替换它们。像这样的东西:

import re

encodedString = 'g fmnc wms'

def decodeLetter(match):
    letter = match.group(0)[0]
    if letter in 'YZyz':
        return chr(ord(letter) - 24)
    else:
        return chr(ord(letter) + 2)

print(re.sub('[a-zA-Z]', decodeLetter, encodedString))

希望这可以帮助!

于 2013-09-13T23:57:31.770 回答