#python
#python
Вопрос:
Ранее я спрашивал здесь об этом калькуляторе заработной платы, который я создавал. Я написал это на Java, но мой профессор не хочет, чтобы это было на Java. Я выбрал Python, и теперь я изо всех сил пытаюсь перевести свою Java-программу.
Я получил ошибку типа неподдерживаемого операнда для -: ‘function’ и ‘function’ . Из того, что я понимаю, я не могу вычесть определенные функции. Я должен был бы сначала вызвать их. Я несколько раз менял код, чтобы исправить ошибку типа, и я все еще получаю ту же ошибку!! Что я могу сделать, чтобы это исправить?
После исправления этого мне нужно будет найти итоговые и средние значения для всего (оплата, часы, валовая оплата и т. Д.). Я не делал этого в своей Java-программе. Мой мозг теряется, когда выясняет, как это закодировать. У меня есть таблица с именами сотрудников, часами и ставками оплаты. Нужно ли мне переносить эту информацию в электронную таблицу и открывать файл электронной таблицы в программе Python?
Вот мой код:
print('Hello')
percent = 15
tax_rate = percent / 100
print(tax_rate)
first_name = str(input('First Name: '))
last_name = str(input('Last Name: '))
print(last_name, ',', first_name)
pay_rate = float(input('Pay Rate: '))
total_hours = input('Hours Worked: ')
# regular hours = total hours if less than 40
# overtime = total hours - 40
regular_hours = 40
for regular_pay in total_hours:
if float(total_hours) <= regular_hours:
regular_pay = float(total_hours) * pay_rate
print('Regular Pay: ', regular_pay)
for overtime_pay in total_hours:
if float(total_hours) > regular_hours:
overtime_pay = (float(total_hours) - float(40)) * 1.5 * pay_rate
print('Overtime Pay: ',overtime_pay)
def gross_pay():
return float(regular_pay) float(overtime_pay)
print('Gross Pay: ', gross_pay())
def tax_amount():
return (gross_pay) * tax_rate
# tax amount gross pay * tax rate
def net_pay():
return gross_pay - tax_amount
print('Net Pay: ', net_pay())
# net pay = gross pay - tax amount
Комментарии:
1. Подумайте о разнице между, например
gross_pay
, иgross_pay()
.
Ответ №1:
Сжатую версию кода. Я предполагаю, что total_hours
это одно число.
percent = 15
tax_rate = percent / 100
pay_rate = float(input('Pay Rate: '))
total_hours = float(input('Hours Worked: ')) # input a number
# regular hours = total hours if less than 40
# overtime = total hours - 40
regular_hours = min(40, total_hours)
regular_pay = regular_hours * pay_rate
overtime_hours = max(0, total_hours - 40)
overtime_pay = overtime_hours * 1.5 * pay_rate
# if you really want to use functions
def gross_pay():
return regular_pay overtime_pay
print('Gross Pay: ', gross_pay())
def tax_amount():
return gross_pay() * tax_rate
# tax amount gross pay * tax rate
def net_pay():
return gross_pay() - tax_amount()
print('Net Pay: ', net_pay())
# net pay = gross pay - tax amount
# if you don't have a strong reason to use functions
gross_pay = regular_pay overtime_pay
tax_amount = gross_pay * tax_rate
net_pay = gross_pay - tax_amount
print('Gross Pay: ', gross_pay)
print('Net Pay: ', net_pay)
Ответ №2:
Я думаю, что вы не вызываете функции, исправьте последние строки следующим образом:
def tax_amount():
return gross_pay() * tax_rate
def net_pay():
return gross_pay() - tax_amount()
Для меня тогда фрагмент работает нормально. Чтобы вызвать функцию, используйте Function() , в противном случае Python ожидает переменную, которая выдает ошибку типа.
Ответ №3:
Ошибка, которую вы допускаете, заключается в вызове функции без скобок.
изменить:
def net_pay():
return gross_pay - tax_amount
Для:
def net_pay():
return gross_pay() - tax_amount()