2017-08-30 46 views
0

我有一些代碼可以根據一週內工作的小時數計算工資/加班工資。有兩個if語句計算第1周和第2周的薪資。然後,我要做的就是計算一週的結果支付的總薪酬,if語句加上week2的結果if語句,但我很掙扎。我可能會讓它比需要的更加困難。結合兩個if語句的結果 - python/jupyter筆記本

我正在使用一個Jupyter筆記本,其中每個下面的塊都在一個單獨的單元格中。第一條if語句的結果= 440第二條語句= 473.期望的結果是組合這些以使輸出爲913.

任何幫助或建議都非常感謝!

rate = 11 
week1 = 40 
week2 = 42 

if week1 <= 40: 
    print((rate * week1)) 
else: 
    print((week1 - 40)*(rate * 1.5) + (40 * rate)) 

if week2 <= 40: 
    print(rate * week2) 
else: 
    print((week2 - 40)*(rate * 1.5) + (40 * rate)) 
+0

儲存你的計算結果的變量,而不是僅僅打印。 –

+0

使那些返回結果的if/else塊函數相同,而不是僅僅打印它。那麼它應該是微不足道的,否則我不知道有什麼問題。 –

+0

謝謝大家的幫助。我使用了下面列出的最大/最小選項,它完美地工作。事實上,我喜歡三元運算符,這可能更容易剖析。 – bbalch

回答

0

您可以使用一個更高級的功能,稱爲三元運算符來做到這一點:

rate = 11 
week1 = 40 
week2 = 42 

week1_pay = rate * week1 if week1 <=40 else (week1 - 40)*(rate * 1.5) + (40 * rate)) 
week2_pay = rate * week2 if week2 <=40 else (week2 - 40)*(rate * 1.5) + (40 * rate)) 

print(week1_pay) 
print(week2_pay) 
print(week1_pay + week2_pay) 

這個操作符的工作方式非常類似,當你閱讀的代碼出聲怎麼聽起來。即:如果某個條件爲真,則變量x等於某個值,否則變量x等於某個其他值。

在一個更簡單的例子,我們可以使用:

number = 45 
pos_or_neg = "negative" if number < 0 else "positive" 

在這個例子中pos_or_neg將評估爲"positive",因爲45> = 0

三元幫助:

Does Python have a ternary conditional operator? https://docs.python.org/3.3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator

0
if week1 <= 40: 
    #print((rate * week1)) # Not necessary, unless you need to print separate weekly pays as well. 
    pay = rate * week1 
else: 
    #print((week1 - 40)*(rate * 1.5) + (40 * rate)) 
    pay = (week1 - 40)*(rate * 1.5) + (40 * rate) 

if week2 <= 40: 
    #print(rate * week2) 
    pay += rate * week2 
else: 
    #print((week2 - 40)*(rate * 1.5) + (40 * rate)) 
    pay = (week2 - 40)*(rate * 1.5) + (40 * rate) 
print(pay) 
0
rate = 11; 
week1 = 40; 
week2 = 42; 

if week1 <= 40 and week2 <= 40: 
    print((rate * week1)+(rate * week2)) 
else: 
    print("For Week1: ", (week1 - 40) * (rate * 1.5) + (40 * rate)) 
    print("For Week2: ", (week2 - 40) * (rate * 1.5) + (40 * rate)) 
    print("Total is: ", ((week1 - 40) * (rate * 1.5) + (40 * rate) + (week2 - 40) * (rate * 1.5) + (40 * rate))) 

也可以使用變量。

0

寫完我的初步答案後,我認爲是完全不同的,我認爲更好。您可以使用maxmin函數來確保不會加上負面加班。

rate = 11 
week1 = 40 
week2 = 42 

week1_pay = max(week1 - 40, 0)*(rate * 1.5) + (min(week1, 40) * rate) 
week2_pay = max(week2 - 40, 0)*(rate * 1.5) + (min(week2, 40) * rate) 

print(week1_pay) 
print(week2_pay) 
print(week1_pay + week2_pay) 

該作品以尋找較大者爲準:weekX - 400rate * 1.5相乘。如果少於40小時,這將是零。然後它找到weekX40中較小的一個,並將其乘以rate以找到標準工資並將其添加到加班工資中。

最小和最大的文檔:

https://docs.python.org/3/library/functions.html#max https://docs.python.org/3/library/functions.html#min