Проблема в том, что 30м + 30м = 60м, что да, равно 1ч, но вы ожидали, что калькулятор сможет понять, что вы хотите, 30 + 30 = 1ч. Итак, в вашем случае вам нужно явно преобразовать 8:30до 8,5
Быстрый, но не изящный подход к расширению вашего примера несколькими строками может быть следующим:
- Преобразование ваших целых чисел в строки.
- Сокращение часов (позиции 0 и 1) и умножьте на 60, чтобы получить минуты.
- Суммируйте этот результат с минутами (позиции 2 и 3)
После выполнения этого для каждого имеющегося временного поля, суммавсе ваши времена преобразуются в минуты, а затем снова конвертируются в часы.
В вашем примере:
def convertDecimalToHours(times):
total_time = 0
for k, v in times.items():
tmp_time = str(int(v))
minutes = int(tmp_time[2:4]) + int(tmp_time[0:2])*60
total_time += minutes / 60 # Now your 8:30 is 8.5
print("type: {} - value: {}".format(type(total_time), total_time))
Ваш результат здесь будет 17. Я предлагаю вам использовать это как пример, чтобы понять концепцию, а не как комплексное решение вашей проблемы.