2016-08-24 12 views
0

私はforループで簡単な計算をするのに助けが必要です。下のサンプルファイルには2つの列があります。列1はdate-time-hr-min-ssで、列2は値です。私はファイルを印刷して、現在の値と前の1時間の値の差を計算したいと思います。私は以下のコードを試みましたが、以前の時の値を減算することはできませんでした。下のコードを修正する際に、いくつかの助けや指示を得ることができますか?前もって感謝します。forループのPythonの減算

ファイルの内容:

20160823220000 1208091708 
20160823230000 1209559863 
20160824000000 1210706089 
20160824010000 1211612458 
20160824020000 1212410614 
20160824030000 1213059346 

マイコード:

with open('datecount.txt') as data: 
    z = 0 
    for line in data: 
     x = (line.strip().split()) 
     num = int(x[1]) 
     z = num 
     print(z - z) 

所望の出力:

date-time-hr-min-ss Value  Delta-from-prev-Hr 
========================================================== 
20160823220000  1208091708 N/A 
20160823230000  1209559863 1468155 
20160824000000  1210706089 1146226 
20160824010000  1211612458 906369 
20160824020000  1212410614 798156 
20160824030000  1213059346 648732 
+0

「z-z」は数字のために常にゼロでなければなりません:) – karlosss

+0

@karloss、はい私はそれをかなりよく理解しています。私がそこで試していたのは、zが次の値で満たされているかどうかを確認することです。 – MBasith

答えて

1

ファイル内の連続した行が前の1時間後の1時間となることが想定される場合は、時間列を混乱させる心配もありません。

with open('datecount.txt') as data: 
    z = 0 
    for line in data: 
     x = (line.strip().split()) 
     num = int(x[1]) 
     print(num - z) 
     z = num 

あなたのコードはすでにこれを実行していました.zをnumに割り当てる前に(num-z)を印刷するだけでした。

+0

はい、良い点です。私のファイルは時間でソートされているので、その時間は前の時間に従っていると仮定することができます。このコードもうまくいきました。助けてくれてありがとう! – MBasith

3
with open('datecount.txt') as data: 
    prev = 0 
    for line in data: 
     value = int(line.strip().split()[1]) 
     print(value - prev) 
     prev = value 

変数に名前を付けることをお勧めしているので、それらの名前意味をなさないつまり、x, y, zは数学のままにしておきます。

+0

チップと説明をありがとう。それはうまくいきました。 – MBasith

+0

問題はありません。私は助けてくれるとうれしいです:) – karlosss