28_iter.py 786 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from __builtins import next
  2. a = [1, 2, 3]
  3. a = iter(a)
  4. total = 0
  5. while True:
  6. obj = next(a)
  7. if obj is StopIteration:
  8. break
  9. total += obj
  10. assert total == 6
  11. class Task:
  12. def __init__(self, n):
  13. self.n = n
  14. def __iter__(self):
  15. self.i = 0
  16. return self
  17. def __next__(self):
  18. if self.i == self.n:
  19. return StopIteration
  20. self.i += 1
  21. return self.i
  22. a = Task(3)
  23. assert sum(a) == 6
  24. i = iter(Task(5))
  25. assert next(i) == 1
  26. assert next(i) == 2
  27. assert next(i) == 3
  28. assert next(i) == 4
  29. assert next(i) == 5
  30. assert next(i) == StopIteration
  31. assert next(i) == StopIteration
  32. # test normal next
  33. from builtins import next
  34. a = iter([1])
  35. assert next(a) == 1
  36. try:
  37. next(a)
  38. exit(1)
  39. except StopIteration:
  40. pass