我正在制作这个代码拼图,用户将获得一个由符号加密的10个单词的列表。每个符号代表一个字母,用户将尝试通过用符号代替符号来找出单词:
这是单词列表,保存为“单词”
#+/084&"
#3*#%#+
8%203:
,1$&
!-*%
.#7&33&
#*#71%
&-&641'2
#))85
9&330*
实际的单词列表是:
ACQUIRED
ALMANAC
INSULT
JOKE
HYMN
GAZELLE
AMAZON
EYEBROWS
AFFIX
VELLUM
例如,如果用户希望将'#'替换为'A',则语法将为: x = raw_input(“你要替换什么符号?”) y = raw_input(“你要用什么符号替换它?”)
用户输入'#'为'x','A'输入'y':
words = words.replace(x,y)
print words
依旧......
到目前为止一直很好......
但是,我需要创建一个允许用户删除与他/她的选择配对的功能。例如:
a = raw_input("Which letter would you like to delete")
他应输入的信件应删除,并且最初应插入原始符号。 为此,我计划找到字母出现的所有实例的位置,并将其替换为相同位置的原始符号,方法是将其与原始加密字列表(“单词”)进行比较。
有人可以帮我这个吗? 任何其他建议/方法将受到高度赞赏。
答案 0 :(得分:1)
我只是存储(x,y)组合。要更改回原始文件,只需查找要删除的字母,进行更改并删除该组合。
例如:
changes = {}
# store first change ('#', 'A')
changes[y] = x
# delete the change
original_x = changes.pop(letter_to_delete)
words.replace(letter_to_delete, original_x)
答案 1 :(得分:0)
您应该将单词拆分为字符数组,这样您就可以遍历要替换的字符的单词。
一些示例代码:
string = "Hello"
splitString = list(string)
splitString
['H','e','l','l','o']
答案 2 :(得分:0)
我建议切换数据结构。如果你有类似列表的字典,你可以让密钥是原始加密的,第0项是未加密的列表,然后附加他们的尝试。
例如:
{'ACQUIRED': ['#3*#%#+']
'ALMANAC': ['8%203']}
然后,他们猜测8 == j:
{'ACQUIRED': ['#3*#%#+', '#3*#%#+']
'ALMANAC': ['8%203', 'J%203']}
然后您将列表的第1个元素作为他们当前的猜测返回。如果他们决定删除上次猜到的字母,您可以弹出列表的末尾。
然后,当所有键值对都包含一个等于键的值时,你就可以结束程序。
答案 3 :(得分:0)
您可以使用字典存储他们设置或选择删除的每个替换。
protected void AddKeyButton(object sender, EventArgs e)
{
var encryptedCharacter = txtKeyToAdd.Text;
var characterToReplace = txtCharToReplace.Text;
var keys = new Dictionary<string, string>();
keys.Add(encryptedCharacter, characterToReplace);
//Add some function to iterate through and replace the characters in
//your "words" with these values.
}
一个要删除......
protected void RemoveKeyButton(object sender, EventArgs e)
{
var encryptedCharacter = txtKeyToAdd.Text;
masterKeys.Remove(encryptedCharacter);
//Add some function to iterate through and replace the characters in
//your "words" back to the original values.
}
不确定您使用的是哪种语言,但这是C#中的一个示例。用您正在使用的任何语言查找词典。
答案 4 :(得分:0)
你可以使用字典只关注python字符串是不可变的这一事实,所以只做replace
就行不通了。
E.g:
>>> s.replace("A","2")
'2CQUIRED'
>>> s
'ACQUIRED'
>>> `
总而言之,你可以使用类似这样的例子(在ideone上)
s = "AAACQUIRED"
d = {}
for i in xrange(2):
x = raw_input("what symbol would you like to replace?\n")
y = raw_input("what symbol would you like to replace it with?\n")
d[y]=x
s = s.replace(x,y)
print s
a = raw_input("Which letter would you like to delete\n")
old = d.pop(a)
s = s.replace(a,old)
print s
答案 5 :(得分:-1)
random = [“#+ / 084&amp;'”,“#3 *#%#+”,“8%203:”,“,1 $&amp;”,“! - %”,“ #7和33&安培;”, “##71%”, “&安培; - &安培; 641 ^ 2”, “#))85”, “9&安培; 330 *”]