iter_3.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. class Iterator:
  2. def __init__(self, text: str):
  3. self.text = text.upper()
  4. self.index = 0
  5. def __iter__(self):
  6. return self
  7. def __next__(self):
  8. try:
  9. result = self.text[self.index]
  10. except IndexError:
  11. raise StopIteration
  12. self.index += 1
  13. return result
  14. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. class SequenceIterator:
  16. def __init__(self, data):
  17. self.data = data
  18. self.start_index = 0
  19. def is_even(self, value):
  20. return value%2 == 0
  21. def __iter__(self):
  22. return self
  23. def __next__(self):
  24. if self.start_index >= len(self.data):
  25. raise StopIteration
  26. value = self.data[self.start_index]
  27. if self.is_even(len(self.data)) and self.start_index == len(self.data) - 2:
  28. self.start_index = 1
  29. elif self.is_even(len(self.data)) == False and self.start_index == len(self.data) - 1:
  30. self.start_index = 1
  31. else:
  32. self.start_index += 2
  33. return value
  34. def test_2():
  35. container = SequenceIterator([1, 5, 4, 6, 43, True, 'hello'])
  36. # container = SequenceIterator([1, 5, 4, 6, 43, True])
  37. for i in container:
  38. print(i)
  39. def test_1():
  40. phrase = Iterator('Qwerty')
  41. it_1 = iter(phrase)
  42. it_2 = iter(phrase)
  43. for i in it_1:
  44. print(i)
  45. for i in it_1:
  46. print(i)
  47. for i in it_2:
  48. print(i)
  49. def main():
  50. # test_1()
  51. test_2()
  52. if __name__ == '__main__':
  53. main()