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