Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Изучение языков программирования всегда сложно: много теории, нужна практика. И если в теории ещё зачастую всё просто, то на практике дела обстоят иначе. Сложно поначалу сделать самые элементарные вещи. Именно поэтому и решено было начать вести блог по практической стороне Питона для самых чайников, как я.

После прохождения теоретической части по теме «Итераторы и Генераторы» столкнулась с проблемой синтаксиса, правильного оформления функций и вывода списка. Решение было найдено благодаря 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 и каждый сможет придумать свой способ выведения подобных графических объектов звёздочками, ноликами или иксами. Выше описан лишь один из многих вариантов решения данной задачи.