Решение, которое вы написали, выглядит хорошо, возможно, есть проблема с отступом, которая наиболее важна в Python, потому что она представляет блоки кода, как это делают другие языки с {}. Другое дело, что вы используете number_of_shapes в первой переменной l oop в качестве переменной итерации, что может вызвать проблему, поскольку l oop сохраняет число (1, 2, 3, 4, ...) в этой переменной. Вы можете попробовать, как это работает, просто l oop.
for x in range(1, 5):
print(x)
Попробуйте изменить это значение на другую переменную (for x in range(1, number_of_shapes + 1):
) или некоторых разработчиков, если им не нужно использовать эту переменную в коде они просто используют _