#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
, если ваших записей много.