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