Изучение языков программирования всегда сложно: много теории, нужна практика. И если в теории ещё зачастую всё просто, то на практике дела обстоят иначе. Сложно поначалу сделать самые элементарные вещи. Именно поэтому и решено было начать вести блог по практической стороне Питона для самых чайников, как я.
После прохождения теоретической части по теме «Итераторы и Генераторы» столкнулась с проблемой синтаксиса, правильного оформления функций и вывода списка. Решение было найдено благодаря Google и конспектам. Выкладываю его здесь, вдруг кому-то станет полезным в освоении данного языка. Итак, простой итератор для списка при помощи генератора и без него, вывод данных в обычном и обратном порядке по индексу, для Python v 3.5.
Итератор, который возвращает элементы списка в обратном порядке по индексу.
class MyIter: def __init__(self, step=15): self.step = step def __iter__(self): return self def __next__(self): self.step -= 1 if not self.step: raise StopIteration() return self.step it = MyIter() for value in it: print(value) print("Prostoy iterator reversed")
Итератор, который возвращает элементы списка в обычном порядке по индексу.
class MyIter: def __init__(self, step=1): self.step = step def __iter__(self): return self def __next__(self): self.step += 1 if self.step >= 15: raise StopIteration() return self.step it = MyIter() for value in it: print(value) print("prostoy iterator")
Выведение списка при помощи генератора в обычном порядке:
#generator iteracii: def generator_function(): for x in range (5): yield x generator=generator_function() for value in generator: print (value) print("Generator works!")
Выведение списка при помощи генератора с конца списка:
#generator s konca spiska: def generator_function(): for x in reversed (range (5)): yield x generator=generator_function() for value in generator: print (value) print("Generator reversed works!")
Для наглядности в коде прописаны выводы (принты) какая именно сейчас функция-итератор сработала и показан принцип, что выводится каждое значение отдельно, по 1 за цикл, после чего, если в списке есть ещё данные, цикл проходит весь путь заново. Конечно же, за ненадобностью, их можно быстро удалить с кода.
Как нарисовать квадрат, треугольник и прямоугольник звёздочками (или же дефисами, ноликами или чем-либо ещё) при помощи итерации (простого цикла). Пример для самых начинающих программистов, которые только вот-вот начали осваивать Python.
В принципе звёздочки для вывода изображения данных геометрических фигур можно заменить на любую букву, цифру или спецсимвол.
Прямоугольник в Python при помощи итерации
Для создания прямоугольника понадобится 2 значения (2 стороны), поэтому нужно прописать в конструкторе обязательно 2 этих параметра. Затем создаём метод Рисования и в нём простой итератор, который означает проход простого цикла с выведением звёздочек (или других спецсимволов) на экран. Звёздочку в кавычках просто замените на другой символ и фигура выведется именно им. Не забываем также, что нужно создать экземпляр класса и вывести прямоугольник путём обращения именно к данному методу цикла в классе.
class Rectangle(): def __init__(self, side1, side2): self.side1 = side1 self.side2 = side2 def draw(self): for i in range(self.side1): print('*' * self.side2) rectangle = Rectangle(4,16) rectangle.draw() print()
Квадрат при помощи цикла в Python
Для создания квадрата достаточно знать одну его сторону (так как по определению все стороны у данной геометрической фигуры равны). Поэтому код нужен аналогичный выше, но с указанием лишь одной стороны. Всё остальное по сути то же самое.
class Square(): def __init__(self, side): self.side = side def draw(self): for i in range(self.side): print('* ' * self.side) square = Square(5) square.draw() print()
Треугольник при помощи цикла в Python
Для создания треугольника также, как и для квадрата, достаточно знать лишь одну его сторону. Здесь только немного меняется вариант вывода звёздочек: каждый раз будет выводиться не одинаковое их количество, а столько, каково является значение переменной i именно в данном проходе цикла (начиная от 1).
class Triangle(): def __init__(self, side): self.side = side def draw(self): for i in range(self.side): print('* ' * i) triangle = Triangle(8) triangle.draw() print()
Конечно же есть и другие способы вывода геометрических фигур в Python и каждый сможет придумать свой способ выведения подобных графических объектов звёздочками, ноликами или иксами. Выше описан лишь один из многих вариантов решения данной задачи.