#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