разбив на l oop, если изменение в общей стоимости равно определенной сумме - PullRequest
0 голосов
/ 15 января 2020

Обратите внимание, код извлекается вместе с данными-заполнителями, например, для примера. Возможно, в этом нет особого смысла, но он играет роль в более крупном проекте.

Код выглядит следующим образом:


for x in range(10):
 Total = 0    

 for i in range(4):
        t = 1 + i**x
        print ("Unit", i+1 ,"value: ", t)
        Total += t
 print("Total: ", Total)

 if Total == 280:
    break  

и дает следующий результат:

Unit 1 value:  2
Unit 2 value:  2
Unit 3 value:  2
Unit 4 value:  2
Total:  8
Unit 1 value:  1
Unit 2 value:  2
Unit 3 value:  3
Unit 4 value:  4
Total:  10
Unit 1 value:  1
Unit 2 value:  2
Unit 3 value:  5
Unit 4 value:  10
Total:  18
Unit 1 value:  1
Unit 2 value:  2
Unit 3 value:  9
Unit 4 value:  28
Total:  40
Unit 1 value:  1
Unit 2 value:  2
Unit 3 value:  17
Unit 4 value:  82
Total:  102
Unit 1 value:  1
Unit 2 value:  2
Unit 3 value:  33
Unit 4 value:  244
Total:  280

Вышеприведенная программа заканчивается, когда итоговое значение равно 280.

Как добавить функцию, завершающую программу, если общее изменение от одной итерации к другой равно или больше чем определенное количество. В псевдокоде:

if Δ in Total is > 100:
   break

Это означает, что программа остановилась бы в общей сложности 102, поскольку общее значение между 100 и 280 составляет> 100, с точным изменением 178.

1 Ответ

0 голосов
/ 15 января 2020

Давайте попробуем это, создайте tmp:

tmp = 0
for x in range(10):
    total = 0    
    for i in range(4):
        t = 1 + i**x
        print ("Unit", i+1 ,"value: ", t)
        total += t
    print("Prev value: ", tmp)
    print("Total: ", total)
    if abs(tmp - total) > 100 or total == 280:
        break
    tmp = total
...