循环水平打印

问题描述 投票:2回答:3

我试图在命令行上进行snort效果。

snort = "SNoooOOO000oooRT"

for char in snort:
            time.sleep(0.1)
            print(char,)

现在,这段代码是垂直打印的:

S
N
o
o
o
O
O
O
0
0
0
o
o
o
R
T

当我可以让它水平打印时,我会放松0.1秒等待以创建所需的效果。

干杯

python python-3.x
3个回答
3
投票

@Patrick Artner的回答是正确的,但我只是想添加一个可以在某些IDE和Windows命令提示符下使用的用例。

为了获得所需的动画,你还必须包含sys,并在循环的每次迭代中使用sys.stdout.flush(),如下所示:

import time
import sys

snort = "SNoooOOO000oooRT"

for char in snort:
    sys.stdout.flush()
    time.sleep(0.1)
    print(char,end='')

如果您不在命令提示符(或某些IDE)中执行此操作,程序将在循环的每次迭代后睡眠后输出整个字符串。

实际上,您还可以通过在print语句中包含print()参数来强制flush刷新输出缓冲区。因此,如果您这样做,您可以避免导入sys

print(char,end='', flush=True)

2
投票

指定print command的结束字符 - 如果没有特别给出,则默认为换行符。这就是为什么单独的印刷品在新线上结束:

import time
snort = "SNoooOOO000oooRT"

for char in snort:
    time.sleep(0.1)
    print(char, end = '')

也很有用:sep=''插件:

print(*[1,2,3,4,5,6,7,8], sep='+')
print(*list("Done"),sep='      ') 

输出:

1+2+3+4+5+6+7+8
D      o      n      e

1
投票
print(char,)

替换为下面的行print语句将end参数与任何字符串或char一起使用

print(char,end='')
© www.soinside.com 2019 - 2024. All rights reserved.