Попробуйте это:
a = 5
for i in range(a): # <-- this causes i to go from 0,1,2,3,...,a-1
print("{}".format(i+1)*(i+1)) # < -- this creates a new string in each iteration ; an alternative would be str(i+1)*(i+1)
i=i+1 # <-- this is unnecessary, i already goes from 0 to a-1 and will be re-created in the next iteration of the loop.
Это создает новую строку в каждой итерации l oop. Обратите внимание, что for i in range(a)
само пройдет через диапазон go. Нет необходимости дополнительно увеличивать i в конце. В общем, считается плохой практикой менять показатели, превышающие ваши.