0

私はかなり初心者で、助けを求めています。ファイルから数値を読み取る単純なプログラムを作成することになっています (数値は次のように 2 つの列に並べられています。

3 788506
255 879405
3 687899
255 697879 etc)

ペアワイズは、常に 3 に近い数から 255 に近い数を減算します。差はリストに追加する必要があります。また、ペアが正しいかどうかも確認する必要があります (たとえば、255 が 2 つではなく、常に 3 と 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
4

1 に答える 1

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)にリストの境界から外れる必要があることに注意してください。

于 2013-03-11T08:36:51.597 に答える