Issue
How to implement a for loop in Python with a condition like in С
for (int val = 1; ((double) 4 / val) > e; val = val + 2)
I tried to do such a loop through iterators, but as for me, this solution is too cumbersome
class Iterator:
def __iter__(self):
return self
def __init__(self, e):
self.e = e
self.val = 1
def __next__(self):
if 4 / self.val > self.e:
self.val += 2
return self.val
else:
raise StopIteration
iter_ = Iterator(0.1)
for i in iter_:
print(i)
Is there any simpler analogue, or in such cases the only option is to use a while cycle?
Solution
You could also just transform the loop condition.
4 / val > e
is mathematically equivalent to
4 / e > val
unless val or e are 0.
So then that becomes val < 4/e
and now we just have:
bound = math.ceil(4/e)
for val in range(1, bound, 2):
# do some other stuff
Answered By – Lagerbaer
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0