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

