Почему Python IDLE Print вместо Backspace?

Я учусь в старшей школе в Корее.

При программировании на python я хочу реализовать «призрачную печать», поэтому я написал этот код на python IDLE.

for i in range(5):
    print(i+1, end='')
    time.sleep(0.05)
    print('\b', end='')

Но отображалось:

12345

Изображение — этот char() здесь не отображается.

Итак, мне интересно, почему python IDLE print '' и что мне делать, чтобы нормально печатать 'backspace'?

Это в питоне 3.5.3 (с окнами 10), 3.6.0 (с окнами 7).

p.s. Этот код в консоли Python ничего не печатает.


person Envil_Saintan    schedule 22.02.2017    source источник


Ответы (1)


IDLE не поддерживает символы возврата,

Нет, IDLE не поддерживает ни возврат каретки, ни возврат каретки, ни перевод страницы, ни управляющие последовательности ANSI.

Вы ожидаете, что \b переместит курсор на одну ячейку влево в окне интерактивной оболочки IDLE. Это не так. IDLE не поддерживает адресацию курсора в окне оболочки, за исключением новой строки и табуляции.

источник

Кроме того, вы используете range(), но затем добавляете один к i. Вы можете упростить его, указав начальный и конечный диапазоны, range(1, 6), чтобы вместо этого он вывел 1,2,3,4,5.

person TankorSmash    schedule 22.02.2017
comment
Нет, я думаю, что они ищут символ '\b', чтобы стереть один символ, а не '\r', чтобы стереть всю строку, ни один из которых не работает в IDLE. - person TigerhawkT3; 22.02.2017
comment
@TigerhawkT3 совершенно прав, я отредактировал свой ответ. - person TankorSmash; 22.02.2017
comment
Спасибо за ответ, но я хочу стереть только один символ, а символ '\r тоже не может нормально отображаться. Он печатается как знак «восьмая нота». - person Envil_Saintan; 22.02.2017
comment
@Envil_Saintan Я отредактировал свой ответ, оказалось, что IDLE вообще его не поддерживает. Попробуйте IPython или просто обычный терминал Python - person TankorSmash; 22.02.2017