diff --git a/python-temel/sample.iterable.py b/python-temel/sample.iterable.py new file mode 100644 index 0000000..1efc5a6 --- /dev/null +++ b/python-temel/sample.iterable.py @@ -0,0 +1,47 @@ +class SampleIterable: + def __init__(self, *args): + self._args = args + + def __iter__(self): + return SampleIterator(self._args) + + def __reversed__(self): + return SampleReverseIterator(self._args) + +class SampleIterator: + def __init__(self, args): + self._args = args + self._i = 0 + + def __iter__(self): + return self + + def __next__(self): + if self._i == len(self._args): + raise StopIteration + self._i += 1 + + return self._args[self._i - 1] + +class SampleReverseIterator: + def __init__(self, args): + self._args = args + self._i = len(self._args) - 1 + + def __iter__(self): + return self + + def __next__(self): + if self._i < 0: + raise StopIteration + self._i -= 1 + + return self._args[self._i + 1] + +for i in SampleIterable(1, 2, 3, 4, 5): + print(i, end = ' ') +print() + +for i in reversed(SampleIterable(1, 2, 3, 4, 5)): + print(i, end = ' ') +print() diff --git a/python-temel/sample.iterable.py~ b/python-temel/sample.iterable.py~ new file mode 100644 index 0000000..d05881c --- /dev/null +++ b/python-temel/sample.iterable.py~ @@ -0,0 +1,47 @@ +class SampleIterable: + def __init__(self, *args): + self._args = args + + def __iter__(self): + return SampleIterator(self._args) + + def __reversed__(self): + return SampleReverseIterator(self._args) + +class SampleIterator: + def __init__(self, args): + self._args = args + self._i = 0 + + def __iter__(self): + return self + + def __next__(self): + if self._i == len(self._args): + raise StopIteration + self._i += 1 + + return self._args(self._i - 1) + +class SampleReverseIterator: + def __init__(self, args): + self._args = args + self._i = len(self._args) - 1 + + def __iter__(self): + return self + + def __next__(self): + if self._i < 0: + raise StopIteration + self._i -= 1 + + return self._args[self._i + 1] + +for i in SampleIterable(1, 2, 3, 4, 5): + print(i, end = ' ') +print() + +for i in reversed(SampleIterable(1, 2, 3, 4, 5)): + print(i, end = ' ') +print()