如何将字典中的字母和符号配对替换为编码消息/Python的文本文件?

如何将字典中的字母和符号配对替换为编码消息/Python的文本文件?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,所以对于我的一个任务,我正在做一个游戏,我必须做一个游戏,允许用户使用字典对编码信息进行加密。我需要程序做的是,当用户键入一个字母时,他们必须键入一个符号来进行配对,然后我需要根据字母将该配对替换到十字列表中 这是(线索)文本文件: A# M* N% 这是名为(words)的编码单词文本文件: 最后,这是他们应该看起来像未编码的(已解决的): 后天的 年鉴 侮辱 笑话 赞美诗 瞪羚 亚马逊 眉毛 粘贴 牛皮纸 这是我目前的代码: import csv def Menu(): print(

所以对于我的一个任务,我正在做一个游戏,我必须做一个游戏,允许用户使用字典对编码信息进行加密。我需要程序做的是,当用户键入一个字母时,他们必须键入一个符号来进行配对,然后我需要根据字母将该配对替换到十字列表中

这是(线索)文本文件:
A#
M*
N%

这是名为(words)的编码单词文本文件:

最后,这是他们应该看起来像未编码的(已解决的):

后天的
年鉴
侮辱
笑话
赞美诗
瞪羚
亚马逊
眉毛
粘贴
牛皮纸

这是我目前的代码:

import csv
def Menu():
    print("Welcome to aqa puzzle code, please choose an option below")
    choice = input("""
            1. To look at the clues
            2. Ten word list and pairings
            3. To enter pairings
            4. Delete pairings
            5. Check if code is right
            6. Press 999 to quit """)

    if choice == '1':
        Clues()
    elif choice == '2':
        WordlistAndPairings()
    elif choice == '3':
        EnterPairings()
    elif choice == '4':
        DeletePairings() 
    elif choice == '5':
        Solution()
    elif choice == '6':
        input("") 

def Clues():
    with open('Clues.txt','r') as f:
        f = f.readlines()
        for line in f:
            print(f)
            Menu()

def WordlistAndPairings():
    print("Ten word list with substitutions made")
    file = open("Words.txt","r")
    openfile = file.read()
    print(openfile)
    file.close()
    Menu()


def EnterPairings():
    pairings = {'letters: [A:Z]', 'symbols: [!],[-],[$],[)],[+],["],[\'],[.],'}
    letters = input("Enter letter")
    if letters is in pairings:
        print("You've already paired this wih another symbol")
        EnterPairings()
    elif letters is not in pairings:
        symbols = input("Enter symbol to go with letter symbol")
        pairings [letters] = symbols 
        print (pairings)
        Menu()

def DeletePairings():
    print("")
    print("Removing a pairing")
    rename = input("Enter the letter you want to remove")
    print(pairings)
    del pairings[rename]
    print(pairings)
    Menu()



Menu()

对于第二(2)个选项,由于所做的更改,我不需要它来刷新其自身。因此,如果用户要配对(F'),我需要程序返回菜单,如果用户选择(2),我基本上需要用户的字母替换符号。同样在这个列表下,我想要一个由用户进行的所有替换的列表,如果他们删除了配对,那么如果他们要返回列表,那么需要更新。如果有人能帮我解决这个问题,我将不胜感激。

我不认为我完全理解你的问题,我也不想只是帮你做功课,但下面是一个如何编写函数的示例,该函数根据字典中的配对替换字符串中的字符:

pairings={'#':'A',
“%:”N“,
“*”:“M”,
}
def try_替换(编码字、配对):
#创建一个空列表来保存已解码的字母
解码字母=[]
#在单词中的每个符号上循环
对于编码字中的符号:
#“try”是用于捕获“异常”的Python关键字,
#这些是代码中可能发生的错误。
尝试:
#在配对词典中查找此符号
解码字母=配对[符号]
#KeyError是尝试时发生的异常
#查找字典中不存在的内容。
除KeyError外:
#我们仅通过保留原始文件来处理此错误情况
#编码符号。
解码字母。附加(符号)
#“else”表示未触发任何异常。
其他:
#这样我们就可以把解码后的信添加到我们的列表中。
解码字母。追加(解码字母)
#现在我们将所有解码的字母连接在一起。
#这使用了“”(空字符串),因为我们不希望
#任何分开这些字母的东西。
解码单词=''。连接(解码字母)
#并从函数中返回已完成的单词
返回解码字
上面定义了一个基于“线索”文件将符号映射到字母的字典,以及一个接受两个参数的函数:一个编码单词和一个替换字典

如果对其中一个编码字调用该函数:

>>> try_substitution('#3*#%#+', pairings)
'A3MANA+'
你会得到你的单词的部分解码版本

编写上述函数的一种更简短、更奇特的方法是使用,但这是一种更高级的功能,如果您只是在学习编程或学习Python,则不太容易理解:

def try_substitution(coded_word, pairings):
    return ''.join(pairings.get(symbol, symbol) for symbol in coded_word)

我认为,如果你仔细阅读第一个示例,并对代码进行一些修改,你应该能够得到一个工作程序。

谢谢你,这不是家庭作业,我去这个俱乐部只是为了扩展我对python的知识,我们被要求编写我们自己的游戏,我正在做这件事。我对整个字典的替换部分有点困惑,但我想我现在明白了。诀窍是在Python中,字符串是不可变的,所以你不能真正“替换”字符串中的字符,你必须用你想要的字符构建一个新的字符串。即使是“foo.replace('o','a')也只会返回一个新字符串“faa”。
def try_substitution(coded_word, pairings):
    return ''.join(pairings.get(symbol, symbol) for symbol in coded_word)