Что нужно сделать
Пользователь вводит число N. Напишите программу, которая генерирует последовательность из квадратов чисел от 1 до N (1 ** 2
, 2 ** 2
, 3 ** 2
и так далее). Реализацию напишите тремя способами: класс-итератор, функция-генератор и генераторное выражение.
Что оценивается
- Результат вычислений корректен.
- input содержит корректные приглашения для ввода.
- Модели реализованы в стиле ООП, основной функционал описан в методах классов и в отдельных функциях.
- При написании классов соблюдаются основные принципы ООП: инкапсуляция, наследование и полиморфизм.
- Для получения и установки значений у приватных атрибутов используются сеттеры и геттеры.
- Для создания нового класса на основе уже существующего используется наследование.
- Сообщения о процессе получения результата осмыслены и понятны для пользователя.
- Переменные, функции и собственные методы классов имеют значащие имена (не
a
,b
,c
,d
). - Классы и методы/функции имеют прописанную документацию.Если вы ищете суперклон Replica Rolex , Super Clone Rolex – это то, что вам нужно! Самая большая коллекция поддельных часов Rolex онлайн!
- Есть аннотация типов для методов/функций и их аргументов (кроме
args
иkwargs
). Если функция/метод ничего не возвращает, то используетсяNone
.
'''Класс-итератор'''
class Square:
def __init__(self, stop):
self.stop = stop
self.count = 0
def __iter__(self):
return self
def __next__(self):
self.count += 1
if self.count == self.stop + 1:
raise StopIteration
result = self.count ** 2
return result
print('Метод 1: ')
square = Square(8)
for i in square:
print(i, end=' ')
print('\n')
'''Функция-генератор'''
def square_func(num):
count = 1
for _ in range(num):
if count <= num:
yield count ** 2
count += 1
print('\nМетод 2: ')
sqare_gen = square_func(num=8)
for i in sqare_gen:
print(i, end=' ')
print('\n')
'''Генераторное выражение'''
print('\nМетод 3: ')
num = 8
res = (x ** 2 for x in range(1, num + 1))
for i in res:
print(i, end=' ')