2014-11-02 3 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

+0

Кроме того, следует ли «kwhour2» быть ставкой для * всех кВтч, если общая сумма составляет более 1000 * или только для части более 1000 кВт-ч? – jonrsharpe

+0

'в течение нескольких месяцев в диапазоне (1, месяцев + 1)' делает странную вещь: он переопределяет «месяцы» во время итерации. Попробуйте что-то вроде 'для продолжительности в диапазоне (1, месяцев + 1)' и посмотрите, где вам нужно то, что в ваших формулах. – 9000

ответ

-1

Из того, что я понял, вы читаете значения от energy meter (counter) в конце каждого месяца. Вы должны рассчитать разницу между тем, что вы читаете в конце и начале каждого месяца. Это то, что вы потребляли в этом месяце. Затем умножьте то, что вы потребляете с правильным часовым коэффициентом kwhour/kwhour2 и суммируете каждый раз. Я все еще не понимал, что он добавляет его каждый раз (но он мог объяснить). Вам не нужно bill += output1 + output2 u, чтобы добавить вещи, которые вам не нужно добавлять, вот почему вы добавили if condition.

'bill= output1+output2' не решает проблему. Представьте себе, если u цикл и получил в случае <=1000 (Update output1), в следующий раз u попал в регистр >1000 (Update output2). В третий раз, если у вас получится в любом случае (скажем, для обновления 'output1'), u'r собирается добавить устаревшее значение 'output2' для выставления счета. Вы должны добавить output1/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

Кроме того, вы действительно не нужно output1 и output2, добавить непосредственно в счет вместо этого

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», иначе это было бы сбивает с толку. –

+0

относительно +1 ... просто стрелял по звездам в надежде, что что-то сработает. это было поздно, и я только начал бросать вещи. Но я ценю помощь. – Diggerplus

-1

Вместо for months do for month потому что месяцы уже объявлены переменными. u не следует перебирать его. во-вторых, обновить счет как bill=bill+output1+output2

2

Прежде всего, необходимо инициализировать переменные output1 и output2 к нулю, то общее дополнение законопроекта должно быть вне если и еще цикла. Вы можете переписать так:

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

не уверен, что это мой питон или что-то в этом роде, но мой результат все равно пришел к 0 для каждого результата, независимо от того, какой был вход. Это был оригинальный вопрос, который у меня был. – Diggerplus

+0

Но я смог получить выход. Можете ли вы сослаться на мой код и попробуйте – jack

+0

Я использовал ваш код и использовал 0 в качестве старта и 100 в качестве конца для каждого из 12 месяцев, результат должен был быть 72.00, но у меня все еще есть 0. Я действительно ценю помощь tho , – Diggerplus

Смежные вопросы