Python 文本文件代码拼图。替换字符

Python 文本文件代码拼图。替换字符,python,replace,text-files,Python,Replace,Text Files,我一直在尝试完成一项任务,它为用户提供了一个符号化单词的列表,用户必须解决这些符号才能显示单词。我创建了一个包含三个选项的菜单:添加、删除、检查 我被添加部分卡住了。用户看到A85,正确的单词是AFFIX 所以,当在菜单屏幕上,我将替换为F。这将打印AFF85行,它应该这样做 当提示用户更改另一个符号/字母配对时,他们将使用I更改8,但是程序将打印AIX而不是AFFI5,它应该这样做 我对该部分的代码如下: def menu(): print ("------------------Menu

我一直在尝试完成一项任务,它为用户提供了一个符号化单词的列表,用户必须解决这些符号才能显示单词。我创建了一个包含三个选项的菜单:添加、删除、检查

我被添加部分卡住了。用户看到A85,正确的单词是AFFIX

所以,当在菜单屏幕上,我将替换为F。这将打印AFF85行,它应该这样做

当提示用户更改另一个符号/字母配对时,他们将使用I更改8,但是程序将打印AIX而不是AFFI5,它应该这样做

我对该部分的代码如下:

def menu():

 print ("------------------Menu------------------")
    print ("1.Add Pairing")
    print ("2.Delete Pairing")
    print ("3.Check")
    sleep(3)
    menuchoice=input("1 or 2 or 3:")
    if menuchoice=="1":
        addpairing()
    elif menuchoice=="2":
        deletepairing()
    elif menuchoice=="3":
        check()


def addpairing():
    global words
    newcontentsA = (words)
    newcontentsA = newcontentsA.replace('#','A')
    newcontentsA = newcontentsA.replace('*', 'M')
    newcontentsA = newcontentsA.replace('%', 'N')

    addpairing1=input("Enter a SYMBOL you would like to replace::")
    addpairing2=input("What LETTER will you replace it with::")
    newcontentsA=newcontentsA.replace(addpairing1,addpairing2)
    print(newcontentsA)
    sleep(3)
    print("Lets get back to the menu")
    menu()

是否有我遗漏的内容或代码错误?

您不存储用户添加的配对。应用它们,然后打印。 同时,您永远不会修改全局words变量的内容。 正因为如此,每次你打电话给addpairing,你都是从零开始的

我建议您维护一个包含所有活动配对的数据结构。 你应该用口述词典。 然后,当您打印时,您可能希望将其放在一个单独的函数中,您首先获取单词,将其放在一个临时变量中,然后循环字典中的键、值对 然后像你已经做的那样进行替换,然后打印


我还建议不要使用全局变量。我想这就是让你困惑的地方,对于大多数用例来说,这不是一个很好的构造。

单词来自哪里?也许您应该有一个temp_words变量来存储执行替换的用户的当前状态?您正在替换newcontentsA中的符号并将结果存储在其中,但每次调用addpairing时,该变量都会被替换为单词。另外一点——尽管这不是问题的原因——您正在执行不必要的递归。addpairing应该返回到菜单,菜单应该循环一个退出选项。相反,menu调用addpairing,它再次调用menu,它再次调用addpairing,等等。什么都不会返回,而您只是继续构建堆栈。