Как создать таймер с 2 функциями, одна для времени ввода и одна для тайм-аута

#python #timer

#python #таймер

Вопрос:

Я хочу создать 2 функции для того, чтобы сотрудник включался в начале работы и выключался в конце работы. Каков наилучший способ сделать это? Используя мой метод, кажется, что таймер буквально не учитывается при всех выводах 0

 import time
from datetime import datetime


def time_in(employee_id): 
    time_in = datetime.now().strftime("%d/%m/%Y on %H:%M:%S")
    print(f"""Employee ID:{employee_id}
You have logged in on {time_in}
          """)
    start = time.time()
    return start, employee_id
    


x,y = time_in(123)


def time_out(start, employee_id):
    stop = time.time()
    seconds_worked = stop - start
    ty_res = time.gmtime(seconds_worked)
    time_worked = time.strftime("%H:%M:%S",ty_res)
    time_out = datetime.now().strftime("%d/%m/%Y on %H:%M:%S")
    print(f"""Employee ID:{employee_id}
You have logged out on {time_out}""")

    return time_worked, employee_id


print(time_out(x, y))

while True:
    user = input("""what is your action:
'in' for time in
'out' for time out
'quit' to quit
""")
    if user == 'in':
        eid = input('employee id: ')
        time_in(eid)
    elif user == 'out':
        eid = input('employee id: ')
        x,y = time_in(int(eid))
        print(time_out(x,y))
    elif user == "quit":
        break

    
  

Комментарии:

1. Вам нужно как-то сохранить время начала.

Ответ №1:

Этот код делает время равным нулю:

     elif user == 'out':
        eid = input('employee id: ')
        x,y = time_in(int(eid))
        print(time_out(x,y))
  

Вы регистрируете time_in() прямо перед time_out() . Это приводит к менее чем за секунду времени (практически 0).

Вместо этого используйте этот код:

     if user == 'in':
        eid = input('employee id: ')
        x,y = time_in(int(eid))
    elif user == 'out':
        eid = input('employee id: ')
        print(time_out(x,y))
    elif user == "quit":
        break