因此,我尝试在PyCharm中制作一个简单的Conway生活游戏,我只能在输出控制台中获得一堆输出,而没有像流之类的视频。是否有一条命令可以让我清除程序中每个循环的输出。我已经尝试过“ sys”命令和ANSI转义键(希望我拼写正确)。似乎没有任何作用!我正在使用Python 3。
我想在while循环的第一个打印语句上清除控制台。如果有帮助。
import copy
import random
import time
WIDTH = 60
HEIGHT = 10
nextCells = []
for x in range(WIDTH):
column = []
for y in range(HEIGHT):
if random.randint(0, 1) == 0:
column.append('#')
else:
column.append(' ')
nextCells.append(column)
while True:
# print('\n\n\n\n')
currentCells = copy.deepcopy(nextCells)
for y in range(HEIGHT):
for x in range(WIDTH):
print(currentCells[x][y], end='')
print()
答案 0 :(得分:1)
在命令提示符(不是PyCharm控制台)上,尝试使用colorama
库将光标移回并打印当前迭代中的下一个迭代(colorama
使ANSI控制代码与Windows兼容) :
({colorama
可以通过pip install colorama
安装)
import copy
import random
import time
import colorama
colorama.init()
WIDTH = 60
HEIGHT = 10
nextCells = []
for x in range(WIDTH):
column = []
for y in range(HEIGHT):
if random.randint(0, 1) == 0:
column.append('#')
else:
column.append(' ')
nextCells.append(column)
while True:
#print('\n\n\n\n')
currentCells = copy.deepcopy(nextCells)
for y in range(HEIGHT):
for x in range(WIDTH):
print(currentCells[x][y], end='')
print()
for x in range(WIDTH):
for y in range(HEIGHT):
leftCoord = (x - 1) % WIDTH
rightCoord = (x + 1) % WIDTH
aboveCoord = (y - 1) % HEIGHT
belowCoord = (y + 1) % HEIGHT
numNeighbors = 0
if currentCells[leftCoord][aboveCoord] == '#':
numNeighbors += 1
if currentCells[x][aboveCoord] == '#':
numNeighbors += 1
if currentCells[rightCoord][aboveCoord] == '#':
numNeighbors += 1
if currentCells[leftCoord][y] == '#':
numNeighbors += 1
if currentCells[rightCoord][y] == '#':
numNeighbors += 1
if currentCells[leftCoord][belowCoord] == '#':
numNeighbors += 1
if currentCells[x][belowCoord] == '#':
numNeighbors += 1
if currentCells[rightCoord][belowCoord] == '#':
numNeighbors += 1
if currentCells[x][y] == '#' and (numNeighbors == 2 or numNeighbors == 3):
nextCells[x][y] = '#'
elif currentCells[x][y] == ' ' and numNeighbors == 3:
nextCells[x][y] = '#'
else:
nextCells[x][y] = ' '
# Here we move the cursor back up:
print(f'\033[{HEIGHT+1}A')
time.sleep(1)
答案 1 :(得分:0)
从此https://www.jetbrains.com/help/pycharm/interactive-console.html开始。
它基本上使用基于系统的python解释器,没有直接的方法或命令来清除Python解释器控制台。
因此,您需要系统调用以清除Python解释器控制台屏幕。对于窗口系统,cls
清除控制台。对于Linux系统,clear
命令有效。
它要求导入OS库。
import os
clear = lambda: os.system('cls') #on Windows System
os.system('clear') #on Linux System
clear()
Python中的“ lambda”关键字用于定义匿名函数。
import os
在python 3中是内置的