Калькулятор заработной платы Python

Мое задание состоит в том, чтобы создать калькулятор расчета заработной платы, который запрашивает у пользователя количество часов, отработанных в неделю, и запрашивает почасовую ставку оплаты. Часы, отработанные до 40 часов в неделю включительно, оплачиваются по установленной ставке. Часы, отработанные более 40, но менее или равные 60, оплачиваются в 1,5 раза больше обычной почасовой ставки. Часы, отработанные свыше 60 часов, будут оплачиваться в 2 раза больше обычной почасовой ставки.

Кажется, я могу понять, как заставить программу рассчитывать оплату, включая двойную ставку выше 60 часов. Он рассчитывается всего в 1,5 раза больше почасовой ставки.

СПАСИБО!

base_hours = 40
xtra_hours = 60
over_time = 1.5
xover_time = 2.0

hours = float(input('Enter the amount of hours worked: '))
pay_rate = float(input('Enter the hourly pay rate: ')

if hours > base_hours:
overtime_hours = hours - base_hours
overtime_pay = overtime_hours * pay_rate * over_time
gross_pay = base_hours * pay_rate + overtime_pay

elif hours > 60:
overtime_hours = hours - base_hours 
overtime_pay = overtime_hours * pay_rate * xover_time
gross_pay = base_hours * pay_rate * overtime_pay

else:
gross_pay = hours * pay_rate

print('The gross pay is $', format(gross_pay, ',.2f'), sep='')

person J M    schedule 19.02.2018    source источник
comment
Вы неправильно поняли логику сравнения. Когда написано до 40, это означает <= 40 . То же самое касается elif, который равен <= 60.   -  person Vasilis G.    schedule 19.02.2018


Ответы (1)


ваш первый, если условие должно быть более конкретным:

if hours > base_hours and hours < 60:

В противном случае, пока часы превышают базовые часы, первое условное условие будет выполнено в 1,5 раза больше, чем ставка. Полный код ниже:

base_hours = 40
xtra_hours = 60
over_time = 1.5
xover_time = 2.0

hours = float(input('Enter the amount of hours worked: '))
pay_rate = float(input('Enter the hourly pay rate: '))

if (hours > base_hours) and (hours < 60):
    overtime_hours = hours - base_hours
    overtime_pay = overtime_hours * pay_rate * over_time
    gross_pay = base_hours * pay_rate + overtime_pay

elif hours > 60:
    overtime_hours = hours - base_hours 
    overtime_pay = overtime_hours * pay_rate * xover_time
    gross_pay = base_hours * pay_rate * overtime_pay

else:
    gross_pay = hours * pay_rate

print 'The gross pay is', gross_pay
person saucy wombat    schedule 19.02.2018
comment
Спасибо, добавление и часов ‹ 60: дает мне синтаксическую ошибку на знак больше. - person J M; 19.02.2018
comment
хорошо, это может быть из-за того, что вы пропустили скобку... можете ли вы попробовать полный код выше? - person saucy wombat; 19.02.2018
comment
Попробовал этот код, мой первоначальный код вычислял на 50 долларов меньше, чем предполагалось, а с исправлениями он теперь вычисляет на 300 долларов больше. Я собираюсь поиграть с ним еще немного и посмотреть, где я могу получить. - person J M; 19.02.2018