这个问题是由打字错误或无法再复制的问题引起的。虽然类似的问题可能
on-topic
在这里,这个问题以一种不太可能帮助未来读者的方式得到了解决。
我写了一个代码,我相信它已经完成了,但现在当我试图运行它时,我得到了以下错误:
Traceback (most recent call last):
File "D:/python/salaries.py", line 29, in <module>
pay = totalManagerPay(salary)
TypeError: 'list' object is not callable
我已经在谷歌上搜索了一些,但我找到的每一个“解决方案”似乎都不适用于我的特定情况,所以我想我应该自己在这里问一下。
我的代码在这里:
now = datetime.now()
dt_string = now.strftime("%m/%d/%Y %H:%M:%S")
def totalManagerPay(salary):
return salary
def totalHourlyPay(hours, rate):
overtime = max(0, hours - 40)
return (hoursWorked - overtime) * hourlyPay + overtime * hourlyPay * 1.5
def totalCommissionPay(sales):
return 350 + 0.057 * sales
def totalPieceWorkerPay(pieces):
bonus = 500 if pieces > 500 else 0
return pieces * 4.50 + bonus
totalManagerPay, totalHourlyPay, totalCommissionPay, totalPieceWorkerPay = [], [], [], []
while True:
payCode = int(input("Enter pay code (0 to quit): "))
if payCode == 0:
print("No employees at this time. Thank you.")
break
if payCode == 1:
print("MANAGER SELECTED")
salary = float(input("Enter gross weekly salary: "))
pay = totalManagerPay(salary)
totalManagerPay.append(pay)
elif payCode == 2:
print("HOURLY WORKER SELECTED")
hoursWorked = float(input("Enter number of hours worked: "))
hourlyPay = float(input("Enter hourly rate: "))
pay = totalHourlyPay(hoursWorked, hourlyPay)
totalHourlyPay.append(pay)
print("Hourly worker's pay is ${pay:.2f}\n")
elif payCode == 3:
print("COMMISSION WORKER SELECTED")
weeklySales = float(input("Enter weekly sales: "))
pay = totalCommissionPay(weeklySales)
totalCommissionPay.append(pay)
print("Commission worker's pay is ${pay:.2f}\n")
elif payCode == 4:
print("PIECE BY PIECE WORKER SELECTED")
piecesProduced = int(input("Enter number of pieces produced: "))
pay = totalPieceWorkerPay(piecesProduced)
totalPieceWorkerPay.append(pay)
print("Piece by Piece worker's pay is ${pay:.2f}\n")
else:
print("Error. Please enter a valid code.")
if any([totalManagerPay, totalHourlyPay, totalCommissionPay, totalPieceWorkerPay]):
print("\n******************** ABCD Inc. ************************")
print("*********** Cumulative Salaries By Pay Code ***********")
print("Employee Pay Code Number of Employees Cumulative Salary")
print("-----------------------------------------------------------------------------")
totalSalary, totalEmployees = 0, 0
for payCode, payList in enumerate([totalManagerPay, totalHourlyPay, totalCommissionPay, totalPieceWorkerPay], start=1):
total = sum(payList)
totalSalary += total
totalEmployees += len(payList)
print(f" {payCode:<25}{len(payList):<25}{total:.2f}")
print("------------------------------------------------------------------------------")
print(f"Totals {totalEmployees:<34} {totalSalary:.2f}")
print("--------------------------------------------------------------------------------")
print("Date: " + dt_string)
print("************************************************************************")
我原以为错误是当我调用底部if语句中的函数时,然而,当我删除括号时,我仍然会得到一个错误。