当循环不工作时(函数和 Time.Sleep)
While Loop Not Working (Function and Time.Sleep)
我的 while 循环在 运行 时不打印任何内容。
import os
import time
place = 10
running = True
def Write():
j = 1
for i in range(place - 1):
print("-", end = "")
j += 1
print("a", end = "")
for k in range(10 - j):
print("-", end = "")
while running:
Write()
time.sleep(5)
if place > 1:
place -= 1
os.system("clear")
当只有打印和 time.sleep 时,while 循环有效。
while running:
print("Looping...")
time.sleep(5)
当有函数和time.sleep时,代码不起作用
while running:
Write()
time.sleep(5)
请告诉我如何解决这个问题。
我对你的发现感到困惑,现在找到了解决这个有趣行为的方法;您可以使用 flush=True
参数强制刷新:
import os
import time
place = 10
running = True
def Write():
j = 1
for i in range(place - 1):
print("-", end = "")
j += 1
print("a", end = "", flush=True)
for k in range(10 - j):
print("-", end = "", flush=True)
while running:
Write()
time.sleep(1)
if place > 1:
place -= 1
os.system("clear")
Whether the output is buffered is usually determined by file, but if the flush keyword argument is true, the stream is forcibly flushed.—https://docs.python.org/3/library/functions.html#print
或者,(i) 将 print()
(没有 end
)放在 Write
的末尾,或 (ii) 将 Write
变为 return一个字符串(不在函数内部打印)并在函数外部打印字符串(在 while
循环中)似乎有效。 Green Cloak Guy 在评论部分的解决方案,即 sys.stdout.flush()
也有效。
在我看来,end=''
使 python 或控制台不愿意急切地显示字符(在某些情况下),等待一行结束。
我的 while 循环在 运行 时不打印任何内容。
import os
import time
place = 10
running = True
def Write():
j = 1
for i in range(place - 1):
print("-", end = "")
j += 1
print("a", end = "")
for k in range(10 - j):
print("-", end = "")
while running:
Write()
time.sleep(5)
if place > 1:
place -= 1
os.system("clear")
当只有打印和 time.sleep 时,while 循环有效。
while running:
print("Looping...")
time.sleep(5)
当有函数和time.sleep时,代码不起作用
while running:
Write()
time.sleep(5)
请告诉我如何解决这个问题。
我对你的发现感到困惑,现在找到了解决这个有趣行为的方法;您可以使用 flush=True
参数强制刷新:
import os
import time
place = 10
running = True
def Write():
j = 1
for i in range(place - 1):
print("-", end = "")
j += 1
print("a", end = "", flush=True)
for k in range(10 - j):
print("-", end = "", flush=True)
while running:
Write()
time.sleep(1)
if place > 1:
place -= 1
os.system("clear")
Whether the output is buffered is usually determined by file, but if the flush keyword argument is true, the stream is forcibly flushed.—https://docs.python.org/3/library/functions.html#print
或者,(i) 将 print()
(没有 end
)放在 Write
的末尾,或 (ii) 将 Write
变为 return一个字符串(不在函数内部打印)并在函数外部打印字符串(在 while
循环中)似乎有效。 Green Cloak Guy 在评论部分的解决方案,即 sys.stdout.flush()
也有效。
在我看来,end=''
使 python 或控制台不愿意急切地显示字符(在某些情况下),等待一行结束。