Проблема здесь:
squares(2, 7, 3, 12)
for k in squares():
print(k)
вы звоните squares()
в первый раз - который возвращает объект генератора, который вы отбрасываете (вы не назначаете его переменной). Затем вы вызываете его во второй раз и перебираете возвращаемый генератор, но так как вы не передали ни одного аргумента, genrator является «пустым» (ему нечего дать), и тело для l oop не выполняется .
IOW, замените это на:
squared = squares(2, 7, 3, 12)
for k in squared:
print(k)
Или просто:
for k in squares(2, 7, 3, 12):
print(k)
Примечание: я не проверял ваш код, могут возникнуть другие проблемы ...