take = raw_input('Please enter the string of numbers that compose code\n\n\t')
y = str(take)
l = []
for i in xrange(0, len(y), 3):
l.append(str(y[i:i+3]))
b = len(l)
a = 0
while(a!=b):
c = l[a].replace('444', ' ')
c = l[a].replace('111', 'a')
c = l[a].replace('112', 'b')
c = l[a].replace('113', 'c')
c = l[a].replace('114', 'd')
c = l[a].replace('115', 'e')
etc...
a = a + 1
filename = 'decmes.txt'
file = open(filename, 'w')
file.write(c)
file.close()
我可以输入任何东西,例如 111 它给了我同样的东西。也许它是愚蠢的东西,但我无法弄明白。假设我想说它不好,我会输入112111114.它应该给我带来不好,但事实并非如此。
答案 0 :(得分:2)
对我来说,你想要做的事情并不是很明显,但也许你的意思是这个?
c = ''
while(a!=b):
c += l[a].replace('444', ' ') \
.replace('111', 'a') \
.replace('112', 'b') \
.replace('113', 'c') \
.replace('114', 'd') \
.replace('115', 'e')
a = a + 1
但这里有很多风格问题。以下是一些例子:
y = str(take)
是不必要的。 take
已经是一个字符串。grouper
配方,而不是自己编写。for x in l:
代替。答案 1 :(得分:0)
在我看来,你反复覆盖c
。
所以你的最终结果将是这个(对于a的最高值):
c = l[a].replace('115', 'e')
(假设这是序列中的最后一个替换)。
该序列中的所有其他代码行都没有效果。
答案 2 :(得分:0)
这段代码让我的思绪在痛苦中爆发。但是,我认为这将是您的解决方案:
在while循环之前,执行c=""
然后将c =
更改为c +=
答案 3 :(得分:0)
你绝对需要熟悉词典!
试试......
code_dict = {'444': ' ',
'111': 'a',
'112': 'b',
...}
然后通过
进行替换c = "".join([code_dict[part] for part in l])
而不是整个while a!=b
循环。