没有错误,只是不打印或做任何事情

时间:2013-03-11 08:31:54

标签: python list iteration

我是初学者,我正在寻求帮助。我应该编写一个简单的程序来读取文件中的数字(它们按照以下两列排序:

3 788506
255 879405
3 687899
255 697879 etc)

并且总是成对地从接近3的数字中减去255附近的数字。差异应该附加到列表中。我还必须检查该对是否是严格的(例如,它总是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

1 个答案:

答案 0 :(得分:2)

i.strip().split()将返回2个字符串..因此您的比较li[i][0] == 3&amp; li[i+1][0] == 5会失败,因为li[i][0]&amp; li[i+1][0]仍然是字符串。

另请注意,由于len(li)应该是偶数,因此xrange(0, len(li) + 1, 2)最终会使i = len(li)超出列表边界。