程序无法运行,只需重新启动即可

时间:2012-04-06 03:35:54

标签: python restart

我刚写了一个程序来计算员工的工资率。对我来说,程序看起来很好,但是当我尝试运行它时,我重新启动,它不会运行。我已经尝试重新启动Python GUI,但没有运气。这是程序:

def get_info():
    hours = int(input("How many hours did you work this week?", ))
    while hours < 8 or hours > 86:
        print('Error ---- you must work at least 8 hours and no more than 86 hours')
        hours = int(input('Please enter your hours worked again:', ))
    print()
    rate = float(input("Please enter your pay rate: $", ))
    while rate < 7.00 or rate > 50.00:
        print("Error ---- pay rate cannot be less than $7.00 or greater than $50.00")
        rate = float(input("Please re-enter your pay rate: $", ))

    return hours, rate

def calc_hours(num):
    if num < 40:
        reg_hours = num
        overtime = 0
    else:
        reg_hours = 40
        overtime = num - 40

    return reg_hours, overtime

def calc_pay(num1, num2, pay_rate):
    regular_pay = num1 * pay_rate
    overtime_pay = num2 * (pay_rate * 1.5)
    total_pay = regular_pay + overtime_pay

    return regular_pay, overtime_pay, total_pay

def main():
    get_info()
    calc_hours(hours)
    cal_pay(reg_hours, overtime, rate)

    print ()
    print ("                     Payroll Information")
    print ()
    print ("Pay Rate", format(rate, '14.2f'))
    print ("Regular Hours", format(reg_hours, '10.2f'))
    print ("Overtime Hours", format(overtime, '10.2f'))
    print ("Regular Pay", format(regular_pay, '10.2f'))
    print ("Overtime Pay", format(overtime_pay, '10.2f'))
    print ("Total Pay", format(total_pay, '10.2f'))

是的,图表会很糟糕。我无法成功运行它以便它能够顺利运行。

1 个答案:

答案 0 :(得分:1)

hours, rate = get_info()
reg_hours, overtime = calc_hours(hours)
regular_pay, overtime_pay, total_pay = calc_pay(reg_hours, overtime, rate)

print ()
print ("                     Payroll Information")
print ()
print ("Pay Rate", format(rate, '14.2f'))
print ("Regular Hours", format(reg_hours, '10.2f'))
print ("Overtime Hours", format(overtime, '10.2f'))
print ("Regular Pay", format(regular_pay, '10.2f'))
print ("Overtime Pay", format(overtime_pay, '10.2f'))
print ("Total Pay", format(total_pay, '10.2f'))

首先,看看你的main():。您调用了get_info()函数,当函数完成时,它返回hours, rate,但您没有存储结果。 (这是您的hoursrate),接下来的两行也是如此。当您调用方法时,它会返回答案,您必须将它们存储到变量中。

这是3行变更

hours, rate = get_info()
reg_hours, overtime = calc_hours(hours)
regular_pay, overtime_pay, total_pay = calc_pay(reg_hours, overtime, rate)

最后,您写的内容有一个拼写错误calc_pay而不是cal_pay。因此,修复这将使您的程序工作,这是输出。

<强>输出

How many hours did you work this week?8

Please enter your pay rate: $20

                     Payroll Information

Pay Rate          20.00
Regular Hours       8.00
Overtime Hours       0.00
Regular Pay     160.00
Overtime Pay       0.00
Total Pay     160.00

让我向您解释这些任务陈述的作用。表格是这样的: variable = expression

  1. 正在评估RHS上的表达式(值是内存地址)
  2. 将内存地址存储在LHS
  3. 中的变量中

    您可能会发现有助于阅读的链接:Defining Functions

    如果您想修复聊天,请按以下步骤操作。

    pattern = '{0:15s}    {1:4.2f}'
    print(pattern.format('Pay Rate', rate))
    print(pattern.format('Regular Hours', reg_hours))
    print(pattern.format('Overtime Hours', overtime))
    print(pattern.format('Regular Pay', regular_pay))
    print(pattern.format('Overtime Pay', overtime_pay))
    print(pattern.format('Total Pay', total_pay))
    

    输出:

    Pay Rate           20.00
    Regular Hours      20.00
    Overtime Hours     0.00
    Regular Pay        400.00
    Overtime Pay       0.00
    Total Pay          400.00
    

    说明:

    pattern = '{0:15s}    {1:4.2f}'
    # 0 mean the blank should be filled with the first argument, 
    # the colon(:) specifies the formatting of the string / number.
    # s means to format a string, 15s means the string will be padded with spaces
    # so it will take up exactly 15 spaces, without the number, s just mean
    # use the string without any space padding
    # d means format an integer, 4d mean the integer will be padded with space
    # so it takes up exactly 4 spaces. f means float, and .2 mean 2 decimal point.