用Python替换单词?

时间:2013-06-08 16:04:27

标签: python string decode encode

我正在尝试用alpha中的字母替换键中的字母(反之亦然):

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key =   "XPMGTDHLYONZBWEARKJUFSCIQV"

我正在尝试将字符串更改为已编码(反之亦然),因此请说“Hello”将变为“LTZZE”。知道怎么做吗?这是我目前的代码:

usrInput = 0
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key =   "XPMGTDHLYONZBWEARKJUFSCIQV"

def menu():
    print "SECRET DECODER MENU"
    print ""
    print "1) Quit"
    print "2) Encode"
    print "3) Decode"
    usrInput = raw_input("What would you like to do?")

    return usrInput


def encodeWord():
    plain = plain.upper()
    length = len(plain)
    encode = plain.encode(alpha, key)

    return encode


def decodeWord():
    coded = coded.upper()
    length = len(coded)
    decode = coded.decode(key, alpha)

    return decode


def main():

    keepGoing = True

    while keepGoing:
        usrInput = menu()

        if usrInput == "2":
            plain = raw_input("Text you want to be encoded: ")
            encodeWord()
            print encode(plain)

        elif usrInput == "3":
            coded = raw_input("Code you need to be decyphered: ")
            decodeWord()
            print decode(coded)

        elif usrInput == "1":
            print "Thanks for doing super secret spy stuff with me. No one seems to want to anymore. Goodbye. ):"
            keepGoing = False

        else:
            print "I don't know what to do! Ahhh!"

main()

2 个答案:

答案 0 :(得分:2)

请注意,这是计算机科学课程的家庭作业。我创建了作业,我意识到它有关于堆栈溢出的问题。如果你把它作为自己的作品,我会知道。你将获得零作业,我们将开始学术不端行为。

(如果你在家里玩,这确实是一个字符串操作任务,并且明确地不被认为是一个很好的加密实践。我们也不允许maketrans()用于这个任务,因为它&#39 ;为初级程序员提供字符串操作和函数练习。)

如果您真的急需帮助,请来看我或我们为您提供帮助的背诵领导人之一。

答案 1 :(得分:1)

使用str.maketransstr.translate。如果您使用Python 2,则此功能位于stringhere (maketrans)here (translate))。

示例(python 3):

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key =   "XPMGTDHLYONZBWEARKJUFSCIQV"
enc = str.maketrans(alpha, key)
usrInput = 'HELLO'
print(usrInput.translate(enc))

示例(python 2)

import string
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key =   "XPMGTDHLYONZBWEARKJUFSCIQV"
enc = string.maketrans(alpha, key)
inp = 'HELLO'
print string.translate(inp, enc)

输出:

LTZZE