Как создать калькулятор ставок для разных ставок в течение каждого дня?

#python

#python

Вопрос:

У меня есть таблица того, сколько часов каждый сотрудник работал в течение недели. Они могут начинаться и заканчиваться в любое время дня, включая ночные смены. Но для каждого периода времени существует разная ставка. Например, с 5 утра до 5 вечера Пн-пт составляет 20 долларов США в час. Но с 5 вечера до 11:59 вечера по пятницам стоит 21 доллар в час. СБ и Вс полный рабочий день составляет 23 доллара в час, а понедельник с 00: 00 до 5 утра снова составляет 20 долларов.

Скажем, рабочий начинается в 4 часа дня по пятницам и заканчивается в 2 часа ночи по субботам, поэтому вычисление происходит (1 * 20) (7 * 21) (2 * 23). Выполнение этих типов вычислений для полудюжины работников в течение всей недели отнимает много времени и подвержено ошибкам.

Вместо того, чтобы делать это вручную, как я могу написать программу для ввода данных о дне, времени начала и окончания, а затем рассчитать, какой должна быть оплата?

Не обязательно искать код (хотя это было бы полезно), но способ разбить это на способ, который можно закодировать.

Ответ №1:

 payrates = {'p1':20, 'p2': 21, 'p3':23, 'p4':20}
#p1 = 5am-5pm Mon-Fri
#p2 = 5pm-11:59pm Fri
#p3 = Sat and Sun full day is $23/h
#p4 = Monday 00:00am to 5am
name = input("Please Enter Staff's Name: ")
stop = ''
totalpay=0
while True:
    wrate = input('Enter payrate type: ')
    hours = input('No of Hours worked: ')
    pay = payrates[wrate] * int(hours)
    totalpay  = pay
    print(f'Subtotal = {totalpay}')
    stop = input('Press Enter to continue or type "stop" to finish: ')
    if stop == 'stop':
        break
    else:
        continue
print(f'Total pay for {name} is {totalpay}')
  

Здесь я просто создал словарь, в котором хранятся различные ставки оплаты (p1, p2, p3, p4), затем с помощью цикла while я могу ввести ставку оплаты и количество отработанных часов. В цикле я вычисляю общую сумму оплаты и генерирую конечное значение.

Это базовая иллюстрация, в ситуации, когда у вас много работников, вы можете иметь словарь, содержащий все сведения о работе каждого работника (что-то вроде {'victor':{'p1':7, p2:2, p3:1}, 'david': {'p1':8, 'p2':1, 'p3':3},...} , и в этом случае вы можете выполнить итерацию через словарь работников, чтобы сгенерировать их соответствующую общую зарплату. Вы можете использовать pandas , если ваших записей много.