2012-04-06 21 views
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')) 

はい、グラフがうまくいきません。私はそれが正常に実行されていないので、スムーズに出てくるでしょう。

+0

あなたは 'python'、' variable'であなたの質問にタグ付けする場合があります – George

答えて

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

これらの変更

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

最後の3行が、代わりにあなたが書いたもののcal_payのタイプミスcalc_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

A:フォームはこのようなものですあなたが読むのに役立つかもしれないリンク: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. 
関連する問題