2016-08-24 219 views
0

我需要一些幫助在for循環中做一些簡單的計算。下面的示例文件中有兩列。第1列是日期 - 時間 - 小時 - 分鐘,第2列是一個值。我想通過文件打印並計算當前值與前一小時值之間的差異。我嘗試了下面的代碼,但無法減去以前的小時值。我能否在下面糾正我的代碼時獲得一些幫助/指導?提前致謝。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,是的,我理解得很好。我在那裏試圖看看循環是否填充了下一個值。 – MBasith

回答

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)。並且你還有打印(z-z)不打印(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