У меня есть функция, которая должна печатать квадраты в заданном интервале:Почему моя программа возвращает None in for loop?
class Squares:
def __init__(self, min, max):
self.min = min
self.max = max
def __iter__(self):
return self
def __next__(self):
a_list = []
for i in range((self.max)+1):
a_list += [i**2]
if self.min <= self.max:
if self.min in a_list:
result = self.min
self.min += 1
return result
else:
self.min += 1
else:
raise StopIteration
import math
for i in Squares(5, 50):
print(i)
Он должен напечатать 9, 16, 25, 49, но выход был:
None
None
None
None
9
None
None
None
None
None
None
16
None
None
None
None
None
None
None
None
25
None
None
None
None
None
None
None
None
None
None
36
None
None
None
None
None
None
None
None
None
None
None
None
49
None
Почему это?
Вы ничего не возвращаете из внутреннего блока 'else:'? –
если число isnt в списке, то не нужно возвращаться, я прав? –
Итератор должен вернуть следующее значение. Если этого не произойдет, вы получите то, что видите сейчас. Поэтому либо измените свой код на a) сгенерируйте список, который содержит только квадраты, либо b) пропустите значения, которые не являются квадратами. –