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