From 546013b0b94a07967b96a3bbede03e9fe3a7eb23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=83=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=9F=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=BE?= <124675990+CrazyDuck192@users.noreply.github.com> Date: Tue, 21 Mar 2023 20:22:04 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D0=BD=D0=B0=20=D1=80?= =?UTF-8?q?=D0=BE=D0=B1=D0=BE=D1=82=D0=B0=20=E2=84=9611=20(=E2=84=9616.1,?= =?UTF-8?q?=2016.2,=2016.3,=2016.4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit №16.5 аналогічний до №16.3, тому його не робив --- classwork11.py | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 classwork11.py diff --git a/classwork11.py b/classwork11.py new file mode 100644 index 0000000..4c59081 --- /dev/null +++ b/classwork11.py @@ -0,0 +1,122 @@ +# Завдання 16.1 +class Iterator_1: + + def __init__(self, n, multiplicity): + self.n = n + self.k = 0 + self.multiplicity = multiplicity + + def __iter__(self): + return self + + def __next__(self): + if self.k + 2 > self.n: + raise StopIteration + if self.multiplicity == 'even': + self.k += 2 + return self.k + elif self.multiplicity == 'odd': + self.k += 1 + if self.k % 2 != 0: + return self.k + else: + self.k += 1 + return self.k + +# Завдання 16.2 +class Iterator_2: + + def __init__(self, n, multiplicity): + self.n = n + 1 + self.multiplicity = multiplicity + + def __iter__(self): + return self + + def __next__(self): + if self.n <= 2: + raise StopIteration + if self.multiplicity == 'even': + if self.n % 2 == 0: + self.n -= 2 + return self.n + else: + self.n -= 1 + return self.n + elif self.multiplicity == 'odd': + if self.n % 2 != 0: + self.n -= 2 + return self.n + else: + self.n -= 1 + return self.n + +# Завдання 16.3 +class Iterator_3: + + def __init__(self, sequence, multiplicity): + self.sequence = sequence + self.multiplicity = multiplicity + self.index = 0 + + def __iter__(self): + return self + + def __next__(self): + if self.index >= len(self.sequence): + raise StopIteration + if self.multiplicity == 'even': + element = self.sequence[self.index] + self.index += 2 + return element + elif self.multiplicity == 'odd': + if self.index == 0: + self.index += 1 + element = self.sequence[self.index] + self.index += 2 + return element + +# Завдання 16.4 +class Iterator_4: + + def __init__(self, sequence, multiplicity): + self.sequence = sequence + self.multiplicity = multiplicity + self.index = len(self.sequence) - 1 + + def __iter__(self): + return self + + def __next__(self): + if self.index < 0: + raise StopIteration + if self.multiplicity == 'even': + if self.index % 2 != 0: + self.index -= 1 + element = self.sequence[self.index] + self.index -= 2 + return element + elif self.multiplicity == 'odd': + if self.index % 2 == 0: + self.index -= 1 + element = self.sequence[self.index] + self.index -= 2 + return element + + +if __name__ == '__main__': + i_1 = Iterator_1(11, 'odd') + for x in i_1: + print(x) + + i_2 = Iterator_2(11, 'even') + for x in i_2: + print(x) + + i_3 = Iterator_3('abcdefgh', 'odd') + for x in i_3: + print(x) + + i_4 = Iterator_4('abcdefgh', 'even') + for x in i_4: + print(x)