文本文件代码难题:替换字符
我一直在尝试完成一个任务,用户会看到一系列用符号表示的单词,他们需要解开这些符号来找出真正的单词。我创建了一个菜单,有三个选项:添加
、删除
和检查
。
我在添加
的部分遇到了困难。用户看到的是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
放到一个临时变量中,然后遍历字典里的(键,值)对,像你之前那样进行替换,最后再打印出来。
另外,我建议不要使用全局变量。我觉得这让你感到困惑,而且在大多数情况下,这并不是一个好的做法。