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