文本文件代码难题:替换字符

0 投票
1 回答
1191 浏览
提问于 2025-04-17 21:25

我一直在尝试完成一个任务,用户会看到一系列用符号表示的单词,他们需要解开这些符号来找出真正的单词。我创建了一个菜单,有三个选项:添加删除检查

我在添加的部分遇到了困难。用户看到的是A))85,正确的单词是AFFIX

所以,当在菜单界面时,我会把)替换成F。这样就会显示AFF85,这是正确的。

当用户被提示更改另一个符号或字母的配对时,他们会把8换成I,但是程序却打印出A))IX,而不是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()

我是不是漏掉了什么,还是我的代码有问题?

1 个回答

0

你并没有保存用户添加的配对。你只是应用这些配对,然后打印出来。同时,你从来没有修改全局的 words 变量的内容。因为这样,每次你调用 addpairing 时,都是从头开始。

我建议你维护一个数据结构,来保存所有活跃的配对。你可以用 dict(字典)来实现这个。然后在打印的时候(你可以把这个放在一个单独的函数里),先把 words 放到一个临时变量中,然后遍历字典里的(键,值)对,像你之前那样进行替换,最后再打印出来。

另外,我建议不要使用全局变量。我觉得这让你感到困惑,而且在大多数情况下,这并不是一个好的做法。

撰写回答