你把你的小时数加起来,再乘以60,得到分钟数。然后提取完整小时数和剩余分钟数:
minutes = sum( [ 1 , 0.5 , 0.93 , 1.2 , 0.73 , 0.5 , 0.54 , 0.13 , 0.56 , 0.99 ]) * 60
print( f'{int(minutes//60):02d}:{int(minutes)%60:02d}')
打印使用格式来获取00:00格式:请参见
format mini languague
和
format string syntax
我使用整数地板除法
//
获取完整的整数部分和模
%
以获取剩余的分钟数。通过将结果转换为
int()
输出:
07:04
您还可以使用fancy并将其包装到函数中:
def asHourString(decimalPlacesHours):
"""Converts decimal workhours into HH:MM format.
Works with int,float and list of float-convertables, else
throws ValueError"""
minutes = 0.0
if isinstance(decimalPlacesHours,float) or isinstance(decimalPlacesHours,int) :
minutes = decimalPlacesHours * 60
elif isinstance(decimalPlacesHours,list) and decimalPlacesHours:
try:
minutes = sum(map(float,decimalPlacesHours))
except (ValueError,IndexError):
raise ValueError("Supply float or list convertable to float")
else:
raise ValueError("Supply float or list convertable to float")
return f'{int(minutes//60):02d}:{int(minutes)%60:02d}'
print(asHourString(21.49))
print(asHourString([21.49,2.12]))
print(asHourString(["21.49","2.12"]))
print(asHourString(-5))
# print(asHourString("does not work")) # ValueError
输出:
21:29
00:23
00:23
-5:00