Попытка написать функцию дельта времени - PullRequest
2 голосов
/ 10 апреля 2019

Я пытаюсь написать функцию на 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

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Если я правильно понял вопрос

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:])


1 голос
/ 10 апреля 2019

Передать массив в качестве параметра для функции.Проверьте, имеет ли массив времени открытия ту же длину, что и длина массива времени закрытия.Объявите массив результатов, в строке, где вы вычисляете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...