Python function/argument 'not defined' 错误

Python function/argument 'not defined' error

我是编码的新手,正在 Python 3.5.2 中进行作业,但遇到 'display_results not defined' 错误。我是不是放错区了?
提前致谢。

hourly_pay_rate  = 7.50
commission_rate  = 0.05
withholding_rate = 0.25

def startup_message():
    print('''This program calculates the salesperson's pay.
Five values are displayed.
Hourly pay, commission, gross pay, withholding, and net pay.\n''')

def main():
    startup_message()
    name = input('Enter name: ')
    sales_amount = float(input('Enter sales amount: '))
    hours_worked = float(input('Enter hours worked: '))
    hourly_pay_amount = hours_worked * hourly_pay_rate
    commission_amount = sales_amount * commission_rate
    gross_pay = hourly_pay_rate + commission_rate
    withholding = gross_pay * withholding_rate
    net_pay = gross_pay - withholding
display_results#<-----'not defined' error for calculations

def display_results(): #(parameters)
    print('Hourly pay amount is: ', \
          format(hourly_pay_amount, ',.2f'))
    print('Commission amount is: ', \
          format(commission_amount, ',.2f'))
    print('Gross pay is: ', \
          format(gross_pay, ',.2f'))
    print('Withholding amount is: ', \
          format(withholding, ',.2f'))
    print('Net pay is: ', \
          format(net_pay, ',.2f'))


main()
input('\nPress ENTER to continue...')

您的 display_result 未缩进。更正缩进,它应该可以工作

def main():
    startup_message()
    name = input('Enter name: ')
    sales_amount = float(input('Enter sales amount: '))
    hours_worked = float(input('Enter hours worked: '))
    hourly_pay_amount = hours_worked * hourly_pay_rate
    commission_amount = sales_amount * commission_rate
    gross_pay = hourly_pay_rate + commission_rate
    withholding = gross_pay * withholding_rate
    net_pay = gross_pay - withholding
    display_results()#<-----'not defined' error for calculations

首先,要调用display_results,您需要提供一组空括号:

display_results()

您似乎也有缩进错误,因为您似乎打算从 内部调用 display_results() main 的调用:

def main():
    startup_message()
    # ...
    net_pay = gross_pay - withholding
    display_results()

如果没有缩进,您试图在定义 main 后立即访问名称 display_results,但 之前您实际上定义了 display_results .

缩进并执行 () 函数。

def main():
    startup_message()
    name = input('Enter name: ')
    sales_amount = float(input('Enter sales amount: '))
    hours_worked = float(input('Enter hours worked: '))
    hourly_pay_amount = hours_worked * hourly_pay_rate
    commission_amount = sales_amount * commission_rate
    gross_pay = hourly_pay_rate + commission_rate
    withholding = gross_pay * withholding_rate
    net_pay = gross_pay - withholding
    display_results() #<-----'not defined' error for calculations

看看这个很短的程序:

def main():
    r = 2 + 2

show_result

def show_result():
    print("The result of 2+2 is {}", format(r))

main()

此程序将无法运行!! 但是,如果您可以修复此程序中的所有错误,您将了解如何修复较长示例中的大部分问题。

这是一个带注释的解决方案:

def main(): 
    r = 2 + 2 
    show_result(r)  # Must indent. Include brackets and pass the      
                    # variable

def show_result(r): # Include a parameter list.
    print("The result of 2+2 is: {}".format(r))  # format is a string method     
main() 

您需要缩进并将参数传递给 display_results 并使用 correct syntax for format strings。在你的情况下是这样的:

print('Hourly pay amount is: {.2f}'.format(hourly_pay_amount))