2014-11-02 55 views
-3

這運行良好,但不會產生我需要的結果。我的猜測是我在數學中缺少了一些簡單的東西。這是我確定的問題。消耗每月能源成本的算法

bill = 0 
months = 12 
kwhour = .06 
kwhour2 = .08 

for months in range(1, months+1): 

    month_start = int(input('month ' + str(months) + ' starting reading: ')) 
    month_end = int(input('month ' + str(months) + ' ending reading: ')) 

    if month_end <= 1000: 
     output1 = month_end * kwhour 
     output1 += 1 
    else: 
     output2 = month_end * kwhour2 
     output2 += 1 

     bill = output1 + output2 

print('Your yearly bill is: ', bill) 

if bill < 500: 
    print('Thanks for saving so much energy') 
+0

什麼是你需要的結果嗎? – chepner 2014-11-02 13:21:19

+0

此外,如果總數超過1000 *,所有千瓦時使用的電量應該「kwhour2」,還是1000千瓦時以上的電量? – jonrsharpe 2014-11-02 13:22:23

+0

'在範圍內(1個月+ 1)'做了一件奇怪的事情:它在迭代過程中重新定義了'月'。嘗試類似'在範圍(1,月+ 1)的持續時間',看看你的公式需要什麼。 – 9000 2014-11-02 13:23:21

回答

-1

從我所瞭解的情況來看,您在每個月末讀取的值爲energy meter (counter)。你應該計算每個月結束時和每個月初的讀數之間的差異。這是你在那個月消費的東西。然後,每次乘以正確的小時係數kwhour/kwhour2和總和。我仍然不明白他每次都加一個(但他可以解釋)。 你不需要bill += output1 + output2我會添加你不需要添加的東西,這就是爲什麼你添加if condition

'bill= output1+output2'沒有解決問題。想象一下,如果你循環,並進入案件<=1000(更新輸出1),下一次你進入案件>1000(更新輸出2)。第三次,如果你遇到任何情況(假設要更新'output1'),我們會添加一個過期值'output2'來開票。你應該增加輸出1/2分別在每塊(bill+=output1/bill+=output2

bill = 0 
    months = 12 
    kwhour = .06 
    kwhour2 = .08 
    output1=0 
    output2=0 

    for m in range(1, months+1): 

     month_start = int(input('month ' + str(m) + ' starting reading: ')) 
     month_end = int(input('month ' + str(m) + ' ending reading: ')) 

     if (month_end-month_start) <= 1000: 
       output1 = (month_end-month_start) * kwhour 
       #output1 += 1 
       bill+=output1 
     else: 
       output2 = (month_end-month_start) * kwhour2 
       #output2 += 1 
       bill+=output2 

     #bill += output1 + output2 You don't need this, u gonna re-adding things 

print('Your yearly bill is: ', bill) 

if bill < 500: 
    print('Thanks for saving so much energy') 
0

你在每個循環重新分配議案

bill = output1 + output2

嘗試添加代替

bill += output1 + output2

而且你並不真正需要的輸出1和輸出2,直接添加到賬單而不是

if month_end <= 1000: 
    bill += month_end * kwhour 
    bill += 1 # I dont see why you add 1 here 
else: 
    bill += month_end * kwhour2 
    bill += 1 
+0

將第二個更新爲:'bill + = month_end * kwhour2',否則,這會讓他感到困惑。 – 2014-11-02 13:56:21

+0

關於+1 ...只是爲明星拍攝,希望能有所作爲。它遲到了,我剛開始扔東西。但我非常感謝幫助。 – Diggerplus 2014-11-04 00:43:09

-1

而不是for monthsfor month因爲月份已經宣佈變量。你不應該迭代它。第二,更新賬單爲bill=bill+output1+output2

2

首先,你需要的變量輸出1和輸出2 intialize零,則總的帳單添加應該是如果和其他循環外。您可以改寫這樣的:

bill = 0 
    months = 12 
    kwhour = .06 
    kwhour2 = .08 
    output1=0 
    output2=0 

    for months in range(1, months+1): 

     month_start = int(input('month ' + str(months) + ' starting reading: ')) 
     month_end = int(input('month ' + str(months) + ' ending reading: ')) 

     if month_end <= 1000: 
       output1 = month_end * kwhour 
       output1 += 1 
     else: 
       output2 = month_end * kwhour2 
       output2 += 1 

     bill += output1 + output2 

print('Your yearly bill is: ', bill) 

if bill < 500: 
    print('Thanks for saving so much energy') 

我得到了以下的輸出:

 ('Your yearly bill is: ', 47.03999999999999) 
    Thanks for saving so much energy 
+0

不知道它是我的python還是什麼,但是無論輸入是什麼,每個結果的結果仍然爲0。那是我原來的問題。 – Diggerplus 2014-11-03 15:02:18

+0

但我能夠得到輸出。你可以參考我的代碼,並嘗試 – jack 2014-11-03 15:41:33

+0

我用你的代碼,並使用0作爲開始和100作爲每個12個月的結束,結果應該是72.00,但我仍然有一個0.我非常感謝幫助壽。 – Diggerplus 2014-11-04 00:40:22