这为什么不工作?
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()
我可以输入任何东西,只是例如,这让我回来,我把同样的事情。也许这是愚蠢的东西,但我无法弄清楚。假设我想让它说不好,我会输入112111114.它应该给我不好,但它不会。这为什么不工作?
它在我看来像你一再覆盖c
。
因此,最终的结果会是这样(为的最高值):
c = l[a].replace('115', 'e')
(假设这是序列中的最后一次更换)。
该序列中的所有其他代码行都不起作用。
如果我输入111,它只会用111代替c。 – 2010-05-11 22:58:52
这对我来说并不是显而易见的,你想要做什么,但也许你是这个意思?
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
已经是一个字符串。 - 你应该使用类似于字典的东西来定义替换,而不是一长串替换语句。
- 你可以考虑使用itertools的
grouper
配方,而不是自己编写它。 - 你的while循环非常喜欢C语言。考虑使用
for x in l:
代替。
我加到底部。也许它有帮助 – 2010-05-11 22:57:41
此代码让我的头脑在痛苦中爆发。不过,我认为这将是您的解决方案:
while循环之前,做一个c=""
然后更改c =
到c +=
你绝对需要熟悉的字典!
像
code_dict = {'444': ' ',
'111': 'a',
'112': 'b',
...}
,然后试图通过某事
c = "".join([code_dict[part] for part in l])
,而不是整个while a!=b
循环使你的替代品。
你是否从另一种语言翻译过此内容? – 2010-05-11 22:55:49