I have several mathematical algorithms that use iteration to search for the right answer. Here is one example:
def Bolzano(fonction, a, b, tol=0.000001):
while abs(b - a) > tol:
m = (a + b) / 2
if sign(fonction(m)) == sign(fonction(a)):
a = m
else:
b = m
return a, b
I want to count how many times the algorithm goes through the loop to get a and b. However this is not a for
function and it isn't a list, so I can't clearly indicate what objects do I want to count if I use enumerate
. Is there a way to count those loops?
Note: I am not trying to change the code itself. I am really searching for a way to count iterations in a while
loop, which I can then use for other cases.
The simplest answer if you need a counter outside of a for
loop is to count manually using a simple variable and addition inside your while
loop:
count = 0
while condition:
...
count += 1
There is an alternative case - if each step of your iteration has a meanigful value to yield
, you may want your loop to be a generator, and then use for
loop and enumerate()
. This makes most sense where you care about which step you are on, not just the count at the end. E.g:
def produce_steps():
while condition:
...
yield step_value
for count, step_value in enumerate(produce_steps()):
...
For a counter I use count
from itertools
:
from itertools import count
c = count(1)
>>>next(c)
1
>>>next(c)
2
and so on...
Syntax
count(start=0, step=1)
Docs
Make an iterator that returns evenly spaced values starting with number start.
Ref. itertools.count
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With