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