为什么打字机的印刷品会为每个字符换行?

时间:2019-10-17 16:17:58

标签: python string printing newline

我正在控制台中运行python3.x。 为什么打字机的印刷品会为每个字符换行? 这是代码:

import msvcrt as m
def wait():
    m.getch()

print(" ")
string = """
code
"""

for i in string:
    wait()
    print(str(i).replace("\n", ""))

以下是输出:



c
o
d
e


这是我想要的输出:


code

4 个答案:

答案 0 :(得分:1)

print()函数有一个名为end的参数,默认情况下……您猜对了! '\n'

如果您不想使用默认的换行符,可以执行以下操作:

print(..., end="")

这样做:

string = """
code
"""

for i in string:
    print(i, end="")

礼物:


code

答案 1 :(得分:0)

print带有一个可选的关键字参数end,其值默认为\n'。您需要将其更改为空字符串。只需忽略i == "\n"而不是将其替换为""也会更简单。

for i in string():
    wait()
    if i != "\n":
        print(i, end='')

答案 2 :(得分:0)

好的,我自己弄清楚了。 有这个:

print(someString, end=anything)

导致不加载输出。这是因为代码正在缓冲,并保留在输出上。我的解决方案是使用 sys.stdout.flush()刷新每次打印的输出。以下是使输出通过的代码:

import sys
sys.stdout.flush()

这是我最后的“假装打字机”代码:

import msvcrt as m
import sys
def wait():
    m.getch()

print(" ")
stringy = """code"""

for i in stringy:
    wait()
    s = i
    print(s, end="")
    sys.stdout.flush()

使用您希望用户键入的任何内容替换stringy。除非您在控制台模式下运行,否则这在诸如PyCharm或Eclipse之类的模拟器中不起作用。 需要在控制台中。

答案 3 :(得分:0)

Print具有Python 3.3和更高版本内置的flush方法。如果可以选择使用Python 3.3+,则应该可以跳过调用sys.stdout.flush()

import msvcrt as m

def wait():
    m.getch()

print(" ")
my_string = "code"

for c in my_string:
    wait()
    print(str(c), end='', flush=True)