29_iter.py 716 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. a = [1, 2, 3]
  2. a = iter(a)
  3. total = 0
  4. while True:
  5. try:
  6. obj = next(a)
  7. except 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. raise 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. try:
  31. next(i)
  32. exit(1)
  33. except StopIteration:
  34. pass
  35. a = iter([1])
  36. assert next(a) == 1
  37. try:
  38. next(a)
  39. exit(1)
  40. except StopIteration:
  41. pass