2013-03-11 98 views
0

我是一個初學者,我正在尋求幫助。我應該寫一個簡單的PROGRAMM從文件中讀取數字(它們是有序的兩列是這樣的:沒有錯誤,只是不打印或做任何事情

3 788506 
255 879405 
3 687899 
255 697879 etc) 

始終成對減去數近255從數近3分歧應附加到一個列表,我還必須檢查這對是否是嚴格的(例如,它總是3和255一個接一個,而不是兩個255)到目前爲止,我認爲我已經準備好了,但它什麼也沒有做。花了幾個小時尋找我的錯,但我看不出哪裏出了問題。我希望得到任何幫助。

filepath = "C:/liz/RT1-1.dat" 
f = open (filepath, 'rU') 
reac3 = [] 
reac255 = [] 
right_list = [] 
wrong_list = [] 
very_wrong_list =[] 
li = [i.strip().split() for i in f.readlines()] 
for element in li: 
    if int(element[0]) == 3: reac3.append(element[-1]) 
    elif int(element[0]) == 255: reac255.append(element[-1]) 
k = 0 
for i in range (0, len(li)+1, 2): #0,2,4,6,8 etc 
    if li[i][0] == 3 and li[i+1][0] == 255: 
      difference = int(reac255[k]) - int(reac3[k]) 
      print int(difference) 
      k+=1 
      if difference > 300 and difference < 1200: right_list.append(difference) 
      else: wrong_list.append(difference) 
    else: very_wrong_list.append(li[i]) 
print right_list 

回答

2

i.strip().split()將返回2個字符串。因此ÿ我們的比較li[i][0] == 3 & li[i+1][0] == 5應該失敗,因爲li[i][0] & li[i+1][0]仍然是字符串。

另外請注意,由於len(li)應該是偶數,那麼xrange(0, len(li) + 1, 2)最終會使得i = len(li)應該超出列表邊界。

+0

謝謝。但不會拆分字符串轉換爲列表?如果我打印'li',我會得到列表(每行都是列表)。 – 2013-03-11 08:45:28

+1

比較li [i] [0]和字符串,比如'li [i] [0] =='3'' – naiquevin 2013-03-11 08:47:51

+0

直到我開始迭代的時候,這一切都很順利。我可以很好地打印reac3和reac255,但在此之後,某些內容會失敗。 – 2013-03-11 08:48:52

相關問題