我试图用python编写一个函数,据此我可以输入开始时间和结束时间,它将返回总小时数。
目前,我已经能够编写一个函数,例如,我在其中输入('07:30:00','12:00:00')并返回4.5
我希望能够导入列表。例如,
(''07:30:00,08:30:00','12:00:00,12:00:00')并使其返回4.5,3.5等...
如何更改我的代码,以便我可以这样做?
谢谢
我已经忙了好几个小时,但是对python来说是一个新手,所以不知道如何从这里前进
def compute_opening_duration(opening_time, closing_time):
while True:
try:
FORMAT = '%H:%M:%S'
tdelta = datetime.strptime(closing_time, FORMAT) - datetime.strptime(opening_time, FORMAT)
tdelta_s = tdelta.total_seconds()
tdelta_m = tdelta_s/60
tdelta_h = tdelta_m/60
print(tdelta_h)
break
except ValueError:
print('-1')
break
答案 0 :(得分:1)
将数组作为参数传递给函数。检查打开时间数组的长度是否与关闭时间数组的长度相同。声明结果数组,在计算tdelta的那一行中,您必须追加到结果数组之后。
def compute_opening_duration(opening_time_arr, closing_time_arr):
if len(opening_time_arr) != len(closing_time_arr):
return
resultTime = []
for idx, closing_timein enumerate(closing_time_arr) :
try:
FORMAT = '%H:%M:%S'
tdelta = datetime.strptime(closing_time, FORMAT) -
datetime.strptime(opening_time_arr[idx], FORMAT)
resultTime.append(tdelta)
tdelta_s = tdelta.total_seconds()
tdelta_m = tdelta_s/60
tdelta_h = tdelta_m/60
#print(tdelta_h)
except ValueError:
pass
#print('-1')
return resultTime
答案 1 :(得分:1)
如果我正确回答了问题
def compute_opening_duration(time_list):
# convert to datetime:
FORMAT = '%H:%M:%S'
time_list = [datetime.strptime(time, FORMAT) for time in time_list]
# compute and return deltas
return [(close_time-open_time).total_seconds()/3600
for open_time, close_time in zip(time_list[:-1], time_list[1:])