为什么我的打字机的打印为每个字符创建一个新行?



我在控制台中运行python 3.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

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

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

print(..., end="")

这样做:

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

给:


code

print采用可选的关键字参数end,其值默认为n'。您需要将其更改为空字符串。忽略i == "n"也比用""替换它更简单。

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

好的,我自己想通了。 有这个:

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 等模拟器中不起作用,除非您在控制台模式下运行。这需要在控制台中。

Print 具有内置于 Python 3.3 及更高版本的刷新方法。如果可以选择使用 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)

相关内容

最新更新