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)、そして次の2行もそうです。メソッドを呼び出すと、答えが返されます。それらを変数に格納する必要があります。

これらは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 に答える