我对编码相当陌生,并开始通过“自动化无聊的东西”来学习 python。在尝试创建“Conway 的生命游戏”(第 4 章)时,我尝试使用 ANSI 颜色代码突出显示打印输出,使其在视觉上更容易理解。
我遇到了以下几行的问题:
for y in range(height):
for x in range(width):
print ("\033[1;32;40m" + current_field[y][x] + "\033[1;37;40m", end ="")
print ("")
它应该创建一个用彩色 0 和 1 填充的正方形,但输出看起来像这样(从输出中截取):
37,40m0 0 0 1 1 1 0
1;32;40m0 1 1 1 1 0 0
0 1 0 1 1 0 0 1
,40m1 0 0
On VS-Code 终端 颜色本身(绿色)按预期工作。与预期输出混合的是随机空格、部分 ANSI 代码本身和看似随机的新行(没有任何清晰的逻辑我可以遵循)。
在我的current Python Terminal (3.8.3)它打印出整个ANSI代码以及它应该打印的其余部分,但没有像这样的绿色:
?[1;32;40m1 ?[1;37,40m??[1;32;40m1 ?[1;37,40m??[1;32;40m1 ?[1;37,40m?
如果我删除 ANSI 代码,它会按预期工作;如果我缩短循环或删除 end=" " 部分(但仅在 VS-Code 终端中——“常规”python 终端仍然显示 ANSI 代码本身)
我的问题:我试图理解为什么这没有按预期工作以及我如何“修复”它(同时仍然使用 ANSI 代码 - 我知道其他可能对印刷文本进行着色,例如 colorama)。问题是由于代码还是我正在使用的应用程序造成的? (带有 Code Runner 和 Python 扩展/Python 终端的 VS-Code;均在 Windows 10 上;均在版本 3.8.3 上)。另外,为什么 VS-Code Python 终端似乎接受 ANSI 代码而普通的不接受?