2010-05-11 255 views
0
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.它應該給我不好,但它不會。這爲什麼不工作?

+0

你是否從另一種語言翻譯過此內容? – 2010-05-11 22:55:49

回答

0

它在我看來像你一再覆蓋c

因此,最終的結果會是這樣(爲的最高值):

c = l[a].replace('115', 'e') 

(假設這是序列中的最後一次更換)。

該序列中的所有其他代碼行都不起作用。

+0

如果我輸入111,它只會用111代替c。 – 2010-05-11 22:58:52

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已經是一個字符串。
  • 你應該使用類似於字典的東西來定義替換,而不是一長串替換語句。
  • 你可以考慮使用itertools的grouper配方,而不是自己編寫它。
  • 你的while循環非常喜歡C語言。考慮使用for x in l:代替。
+0

我加到底部。也許它有幫助 – 2010-05-11 22:57:41

0

此代碼讓我的頭腦在痛苦中爆發。不過,我認爲這將是您的解決方案:

while循環之前,做一個c=""然後更改c =c +=

0

你絕對需要熟悉的字典!

code_dict = {'444': ' ', 
      '111': 'a', 
      '112': 'b', 
      ...} 

,然後試圖通過某事

c = "".join([code_dict[part] for part in l]) 

,而不是整個while a!=b循環使你的替代品。