如何在Python 3中清除控制台多行内容?(俄罗斯方块开发场景)
解决方案
一、指定清除20行(优先方案)
你原来的清除代码问题在于print多参数会自动添加空格,导致转义序列失效。正确做法是结合光标上移和清除当前行的ANSI转义序列:
修改清除部分的代码为:
# 清除之前打印的20行 for i in range(20): # \033[F 光标上移一行;\033[K 清除从光标到行尾的内容 print("\033[F\033[K", end="")
原理:循环20次,每次将光标移到上一行并清除该行所有内容,最终精准清除之前输出的20行游戏区域。
二、清除整个屏幕(备选方案)
如果指定行数清除在PyCharm终端中仍有问题,可以直接清除整个屏幕,适合Mac环境的代码如下:
import os from time import sleep # blocks is a 20x10 array filled with 0s and 1s running = True while running: # 打印游戏区域 for y in range(20): for x in range(10): print('[#]' if blocks[y][x] == 1 else ' . ', end='') print() sleep(1) # 清除整个屏幕 os.system('clear')
注意事项
在PyCharm中使用ANSI转义序列时,需要确保终端支持:
- 打开PyCharm设置(
Preferences) - 找到
Tools > Terminal - 勾选
Emulate terminal in output console(旧版本选项名称可能类似) - 重启PyCharm终端后生效
内容的提问来源于stack exchange,提问作者Winter Sand
相关产品推荐
相关产品推荐

