2016-08-24 3 views
0

Мне нужна помощь в выполнении простых вычислений в цикле for. У меня есть два столбца в приведенном ниже файле примера. Столбец 1 - это дата-время-hr-min-ss, а столбец 2 - значение. Я хотел бы распечатать файл и рассчитать разницу между текущим значением и значением предыдущего часа. Я попытался выполнить код ниже, но не смог вычесть предыдущее значение часа. Могу ли я получить помощь/руководство по исправлению кода ниже? Заранее спасибо.Вычитание Python in for loop

Содержимое файла:

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

Хорошо, если вы можете предположить, что каждая последующая строка в вашем файле будет в течение часа после предыдущего часа, вам не нужно даже беспокоиться о том, чтобы возиться со столбцом времени. Просто используйте это ..

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 

Ваш код был в значительной степени делает это уже, вы просто нужно напечатать (NUM - г) перед назначением г на пит. А также у вас была печать (z-z) not print (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