2017-07-29 8 views
0

プログラミングが新しく、私はPython(バージョン3)から始めます。分時に私は機能を理解しようとしています。私は時間の経過とともに人を払うための簡単な電卓を持っています。関数は時間の経過を計算します。関数外の関数からの戻り値を使用する

def computeOvertime(h,r): 
    standardHrs = 40 
    overTimeRate = r * 1.5 
    overTimeHrs = h - standardHrs 
    overTimePay = overTimeHrs * overTimeRate 
    return overTimePay 

h = float(input("Enter Hours:")) 
rate = input("Enter Rate:") 
r = float(rate) 

basicPay = 40 * r 

p = computeOvertime(h,r) 

totalPay = overTimePay + basicPay 
print(totalPay) 

私はこれを実行すると、私は名前overTimePayを示すエラーが定義されていません取得します。

私が関数からoveTimePayを返したとき、私は関数の外でそれを使うことができたと思いました。

私は誰かが私に助言を与えることができることを願っています。

+1

あなたの関数はいくつかの説明変数とともによく書かれています。 'def computeOvertime(h、r):return(h-40)*(r * 1.5)'のように書くと、機能的には同じですが、ローカル変数はありません。あなたが行ったように関数を書くべきですが、私が書いたようにそれらを考えるべきです。思考を混乱させる局所変数はありません。 – quamrana

+0

また、ローカルの 'p'は必要ないことに注意してください。これを行う: 'totalPay = computeOverTime(h、r)+ basicPay' – quamrana

+0

@quamranaフィードバックのおかげで、私は心に留めておきます。 –

答えて

2

あなたがやった時:戻り、変数pに割り当てられた

p = computeOvertime(h,r) 

ローカル変数overTimePay(あなたの関数にローカル)。使用してみてください:overTimePaycomputeOvertime funcion内のローカル変数であるため、

totalPay = p + basicPay 

希望これは...あなたが探しているもの

+0

もちろん!ありがとうございました。私が推測する樹木のために森を見ることができませんでした。 –

0

そのです。ですから、グローバルとしてそれを使用したい場合は、次のことができます。

def computeOvertime(h,r): 
    standardHrs = 40 
    overTimeRate = r * 1.5 
    overTimeHrs = h - standardHrs 
    global overTimePay 
    overTimePay = overTimeHrs * overTimeRate 

しかし、通常では、私は通常、この

def computeOvertime(h,r): 
    standardHrs = 40 
    overTimeRate = r * 1.5 
    overTimeHrs = h - standardHrs 
    overTimePay = overTimeHrs * overTimeRate 
    return overTimePay 

p = computeOvertime(h,r) 
totalPay = p + basicPay 
0

ようにあなたがPにcomputeOvertime結果を保存した覚えていますか?それを使用してください。

p = computeOvertime(h,r) 

totalPay = p + basicPay 
print(totalPay) 
+0

ありがとう!しばらくの間見つめて、接続しなかった。ありがとう。 –

+0

@ o.fithcheallaighは私の答えがあなたを助けたならupvoteを与える:) – Inconnu

+0

私はしようとしたが、私は> 15評判のポイントを持っていないようだ、それは記録されていません。私がするとき、私は戻ってupvote来る。 –

0

「p」に返された値を収集する場合、なぜ「OverTimePay」を使用する必要があるのですか?

だけp+basicPay

を使用するか、グローバルなキーワードを使用して、グローバル変数として宣言しOverTimePay。このようにグローバル変数を使うもう一つのことは良いことではありません。したがって、返された結果を格納しているローカル変数を使用してください。

+0

これを修正して、このようにグローバルを使用することは*悪いことです*。 – quamrana

+0

それは速かった。ありがとう。 – quamrana