1

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

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()
4

2 回答 2

2

请注意,这是计算机科学课程的家庭作业。我创建了作业,我知道它在堆栈溢出。如果你把它作为你自己的作品上交,我会知道的。您的作业将获得零分,我们将开始学术不端行为程序。

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

如果您真的急需帮助,请来找我或我们花钱帮助您的朗诵领袖之一。

于 2015-03-26T14:19:21.637 回答
1

使用str.maketransstr.translate。如果您使用 Python 2,则此函数位于string此处(maketrans)此处(翻译))。

示例(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
于 2013-06-08T16:10:30.470 回答