2017-07-29 145 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 = computeOvertime(h,r) 

局部變量overTimePay(您的本地函數)返回並分配給變量p。嘗試使用:

totalPay = p + basicPay 

希望這是你在找什麼...

+0

當然!謝謝。由於我猜測的樹木無法看到森林。 –

0

其因overTimePay是在computeOvertime funcion一個局部變量。所以,如果你想使用它作爲一個全球性的,你可以:

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

記住您保存computeOvertime結果爲P?使用它。

p = computeOvertime(h,r) 

totalPay = p + basicPay 
print(totalPay) 
+0

謝謝!盯着這一段時間,並沒有建立聯繫。謝謝。 –

+0

@ o.fithcheallaigh如果我的回答對你有幫助,請給予讚賞:) – Inconnu

+0

我試過了,但似乎我沒有> 15點聲望點,所以沒有記錄。當我這樣做,我會回來,並upvote。 –

0

如果您正在收集'p'中的返回值,那麼爲什麼您必須使用'OverTimePay'。

只需使用p+basicPay

或者聲明OverTimePay如使用關鍵字全局全局變量。還有一件事用這種方式使用全局變量並不是一件好事。所以只需使用存儲返回結果的局部變量。

+0

請修改此說,以這種方式使用全局變量是*壞事*。 – quamrana

+0

這很快。謝謝。 – quamrana