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

Python 没有错误,只是没有';不要打印或做任何事情,python,list,iteration,Python,List,Iteration,我是个初学者,正在寻求帮助。我应该写一个简单的程序,从文件中读取数字(它们按如下两列排序: 3 788506 255 879405 3 687899 255 697879 etc) 并且总是成对地从接近3的数字中减去接近255的数字。差异应该被添加到列表中。我还必须检查这对数字是否正确(例如,总是3和255一个接一个,而不是两个255).到目前为止,我认为我已经准备好了,但它没有起到任何作用。我花了几个小时寻找我的错误,但我就是看不出哪里出了问题。如果能得到任何帮助,我将不胜感激 filepa

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

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
filepath=“C:/liz/RT1-1.dat”
f=打开(文件路径“rU”)
reac3=[]
reac255=[]
右_列表=[]
错误的_列表=[]
非常错误的列表=[]
li=[i.strip().split(),用于f.readlines()中的i]
对于li中的元素:
如果int(元素[0])==3:reac3.append(元素[-1])
elif int(元素[0])==255:reac255.append(元素[-1])
k=0
对于(0,len(li)+1,2)范围内的i:#0,2,4,6,8等
如果li[i][0]==3和li[i+1][0]==255:
差异=int(reac255[k])-int(reac3[k])
打印整型(差异)
k+=1
如果差异>300且差异<1200:右列表。追加(差异)
其他:错误的列表。追加(差异)
else:非常错误的列表。追加(li[i])
打印右箭头列表
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)
超出列表边界。

谢谢。但是不拆分将字符串转换为列表吗?如果我打印'li',我将得到列表列表(其中每一行都是列表)。比较li[i][0]对于像
li[i][0]==“3”
这样的字符串,在我开始迭代之前一切都正常。我可以很好地打印reac3和reac255,但在那一刻之后出现了一些问题。它确实返回了一个字符串列表。是的,如果您打印
li
,您将得到列表列表。您尝试转换li[i][0]&li[i+1][0]输入或与字符串比较为“3”和“255”