2014-02-15 15 views
0

我至今代碼字符替換它...定位在一個文本文件中的角色,並從另一個

f = open("words.txt","r") 
    words = f.read() 
    f = open("solved.txt","r") 
    solved = f.read() 
    f = open("clues.txt","r") 
    clues = f.read() 

    def importclues(): 
     global clues 
     global words 
     z=0 
     for z in clues: 
      words.replace(clues[z[1]],clues[z[0]]) 
      print(words) 

所以我試圖採取從蛛絲馬跡每行的第二個字符。 txt文件

A# 
M* 
N% 

找到角色在words.txt文件

#+/084&" 
#3*#%#+ 
8%203: 
,1$& 
!-*% 
.#7&33& 
#*#71% 
&-&641'2 
#))85 
9&330* 

然後用第一個字母FR更換om在clues.txt文件中的每一行,以便用戶更容易猜測剩餘的符號/字母對。

不幸的是,我收到以下錯誤消息

Traceback (most recent call last): 
     File "<pyshell#5>", line 1, in <module> 
     importclues() 
     File "/Users/Alastair/Desktop/CA.py", line 70, in importclues 
     words.replace(clues[z[1]],clues[z[0]]) 
    IndexError: string index out of range 

任何幫助,將不勝感激:)

-Alastair

+0

做一個'print(z)'和'print(clues)'作爲開始,看看變量是什麼。這通常是調試的第一步。 – M4rtini

回答

1

f.read()可能無法在這裏使用了正確的事情.. 。與f.readlines()你得到一個數組與每一行作爲一個元素。

f.read()您正在閱讀一大串字符 - 不會在換行符處分隔!

線索是一個字符串,所以for z in clues將一個字符放在z

f = open("words.txt","r") 
words = f.read() 
f = open("solved.txt","r") 
solved = f.read() 
f = open("clues.txt","r") 
clues = f.readlines() 

def importclues(): 
    global clues 
    global words 

    for line in clues: 
     words.replace(line[1], line[0]) 
     print(words) 

這是未經測試但應解決問題。變化:read() - >readlines()和for循環

此代碼有沒有錯誤檢查 - 例如,你可以放棄每一個line其中len(line) < 3(包括換行)

0

你應該使用:

clues = f.readlines() 

它會將每行和每個數組的索引轉換爲一個數組。所以:

words.replace(z[1], z[0]) 

會帶你一步。

+0

即時通訊很抱歉,但我仍然無法使其工作。它會突出顯示words.txt文件三次,因爲這是線索文件中的行數。請幫忙,否則有人會對我喊: – Turbgoiz

相關問題