0

我刚刚写了一个程序来计算员工的工资率。对我来说,该程序看起来还不错,但是当我尝试运行它时,我会重新启动,但它没有运行。我试过重新启动 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'))

是的,图表会很不稳定。我一直没能成功运行它,所以它会顺利出来。

4

1 回答 1

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,但你没有存储结果。(这是你的hours, rate)再次,接下来的两行也是如此。当您调用方法时,它会返回答案,您必须将它们存储到变量中。

这些是 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 上的变量中

您可能会发现对阅读有帮助的链接:定义函数

如果你想修复你的聊天,这里是如何做到的。

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.
于 2012-04-06T03:56:18.100 回答