Python程序不会超出第一个用户输入

时间:2014-06-21 20:33:28

标签: python function

我编写了一个Python程序,我希望接受用户的“y”输入,如果用户输入“y”,则执行一些简单的计算并打印结果。

然而,它并没有超越 用户输入即使输入为“y”。请帮我找出程序中的错误。

代码是:

#This function is to get the user to input the data needed to use in the rest of the program
#It should return the 3 variables name, hrs_wrkd, and payrate

def get_info(name,hrs_wrkd,payrate):
    print('is this working?');
    name = input('What is the last name of the employee?');
    hrs_wrkd = float(input('How many hours did',name,' work last week?'));
    payrate = float(input('How much does',name,' get paid?'));
    return name,hrs_wrkd,payrate
#This function should be to calculate the employee's regular pay hours
#It accepts arguments from get_info

def calculate_reg_pay(hrs_wrkd,payrate):
    reg_hrs = hrs_wrkd
    reg_pay = reg_hrs * payrate
    OT_hrs = 0
    OT_pay = 0
    return reg_hrs,reg_pay,OT_hrs,OT_pay

#This function should calculate the Overtime pay for the employee
#It accepts arguments from the get_info function as well

def calculate_OT_pay(hrs_wrkd,payrate):
    reg_hrs = hrs_wkrd - 40
    reg_pay = reg_hrs * payrate
    OT_hrs = hrs_wrkd - reg_hrs
    OT_pay = OT_hrs * (payrate * 1.5)
    return reg_hrs,reg_pay,OT_hrs,OT_pay

#This function decides which calculation to use, either OT or regular pay
#It also accepts srguments from get_info

def calc_employee(hrs_wrkd,payrate):
    if hrs_wrkd <= 40:
        calculate_reg_pay(hrs_wrkd,payrate)
    else:
        calculate_OT_pay(hrswrkd,payrate)

#This function should print the single employee information after it was calculated
#It gets its arguments from the calc_employee function

def print_employee(reg_pay,OT_pay,name):
    print(name,'earned $',format(reg_pay,'.2f'),' worth of regular pay and ',format(OT_pay,'.2f'),' in overtime this week.')

#This function is supposed to calculate the running total of the hours and pay for overtime and regular pay for the company
# It accepts its arguments from the calc_employee function also

def running_total(reg_hrs,reg_pay,OT_hrs,OT_pay,total_reg_hrs,total_reg_pay,total_OT_hrs,total_OT_pay):
    total_reg_hrs = total_reg_hrs + reg_hrs
    total_reg_pay = total_reg_pay + reg_pay
    total_OT_hrs = total_OT_hrs + OT_hrs
    total_OT_pay = total_OT_pay + OT_pay
#This function is supposed to print out the running total for the company, but I realized that it isnt in the proper position when called

def print_totals(total_reg_hrs,total_reg_pay,total_OT_hrs,total_OT_pay):
    print('The total regular hours worked was',total_reg_hours)
    print('The total regular pay was $',format(total_reg_pay,'.2f'))
    print('The total overtime hours worked was',total_OT_hours)
    print('The total overtime pay was $',format(total_OT_pay,'.2f'))

# So here I am defining the main loop that will activate everytime the user selects Yes
#It calls most of the other functions

def main_loop():
    get_info
    calc_employee
    print_employee
    running_total
#Here I am defining the main program where I put the loop control


def main():
    loop_control = input("Would you like to enter an employee's name, payrate and hours? y to do so")
    if loop_control == "y":
        main_loop
    else:
        print_totals(total_reg_hrs,total_reg_pay,total_OT_hrs,total_OT_pay)
   #Here we call the main function

main()

1 个答案:

答案 0 :(得分:1)

您需要调用您的功能。除了引用函数对象之外什么都不做:

main_loop

添加()以调用函数:

main_loop()

main_loop()函数中的内容相同:

def main_loop():
    get_info()
    calc_employee()
    print_employee()
    running_total()

不是那样的,因为你的函数带有参数;你需要在函数调用中传递它们才能工作。 get_info()接受参数然后忽略;删除函数签名中的那些参数:

def get_info():
    print('is this working?');
    name = input('What is the last name of the employee?');
    hrs_wrkd = float(input('How many hours did',name,' work last week?'));
    payrate = float(input('How much does',name,' get paid?'));
    return name,hrs_wrkd,payrate

接下来你要分配返回值; get_info()会返回一些内容,但您永远不会分配任何内容:

name, hours_worked, payrate = get_info()

现在您可以将这些传递给其他函数调用:

calc_employee(hours_worked, payrate)

你已经退出了几个修复,但这超出了这个答案的范围。别忘了在函数调用上使用returncalc_employee没有返回任何内容,例如,它只是忽略了它委托返回的函数,例如。