Я получил ошибку типа с моей последней функцией. Как мне их вызвать? Кроме того, как мне найти итоги и средние значения для всего? Я потерялся

#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()