К сожалению, ваш подход не сработает. Разделенные запятыми значения в операторе print не допускают новых фрагментов логики; они просто говорят python печатать строки, разделенные пробелом. Для этого вам нужно немного поэкспериментировать с параметрами оператора print.
Код:
import time
i = 1
while i < 4:
dots = '.'*i
print("\r{}".format(dots), flush=True, end='')
time.sleep(1)
i += 1
Вам необязательно нужно время l oop, но чтобы понять, что происходит в заявлении печати. Вы должны включить в начало строки "\ r", то есть возврат каретки. Это говорит Python после печати, чтобы вернуть курсор в начало строки, в следующий раз, когда он должен будет печатать.
В параметрах для функции печати используйте "end = ''", который говорит python заканчиваться пустой строкой. По умолчанию оператор print заканчивается символом новой строки, что является нежелательным поведением.
Наконец, "flush = True" говорит Python удалить все, что нужно напечатать. Это необходимо, потому что вы использовали возврат каретки к go к началу.