28_iter.py 614 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. a = [1, 2, 3]
  2. a = iter(a)
  3. total = 0
  4. while True:
  5. obj = next(a)
  6. if obj is StopIteration:
  7. break
  8. total += obj
  9. assert total == 6
  10. class Task:
  11. def __init__(self, n):
  12. self.n = n
  13. def __iter__(self):
  14. self.i = 0
  15. return self
  16. def __next__(self):
  17. if self.i == self.n:
  18. return StopIteration
  19. self.i += 1
  20. return self.i
  21. a = Task(3)
  22. assert sum(a) == 6
  23. i = iter(Task(5))
  24. assert next(i) == 1
  25. assert next(i) == 2
  26. assert next(i) == 3
  27. assert next(i) == 4
  28. assert next(i) == 5
  29. assert next(i) == StopIteration
  30. assert next(i) == StopIteration