簡體   English   中英

While 循環不工作(函數和 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")

當只有 print 和 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")

輸出是否緩沖通常由文件決定,但如果flush關鍵字參數為真,則流被強制刷新。— https://docs.python.org/3/library/functions.html#print

或者,(i)將print() (沒有end )放在Write的末尾,或者(ii)使Write返回一個字符串(不在函數內部打印)並在函數外部打印字符串(在while循環中)似乎去工作。 Green Cloak Guy 在評論部分的解決方案,即sys.stdout.flush()也有效。

在我看來, end=''使 python 或控制台不願意急切地顯示字符(在某些情況下),等待一行結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM