iT邦幫忙

0

python while迴圈???

  • 分享至 

  • xImage

import time, subprocess

t = 5

while t > 0:
print(t, end = ' ')
t = t-1
time.sleep(1)

subprocess.Popen(['start', 'p398.wav'], shell=True)

想像中是螢幕上會陸續倒數54321,然後才放音樂。
實際卻是停頓5秒後,才開始播放音樂,然後一下印出數字54321。
不懂為什麼會這樣???
懇請知道的大大幫忙解惑,謝謝。

re.Zero iT邦研究生 5 級 ‧ 2023-01-14 15:56:53 檢舉
如果能修改發問標題(Title),在開頭加個 `[已解決]` 之類的讓人知道即可。
(話說,我也不知道現在能不能刪除發問~)
re.Zero大大您好,我改成別的問題了XD
正好有別的問題待問,謝謝您。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-26 06:05:39
最佳解答

你需要使用flush()函數刷新輸出。
這樣可以讓每次輸出數字時都會立刻刷新輸出,
在每次time.sleep(1)阻塞程式1秒後都會印出數字,
而不是先停頓5秒後一下印出數字54321。

import time, subprocess

t = 5
while t > 0:
    print(t, end = ' ')
    t = t-1
    time.sleep(1)
    print(flush=True)
subprocess.Popen(['start', 'p398.wav'], shell=True)

注意:flush() 函數是 python 3.3 版本才引入的,如果你使用的是比較舊版本的python 請使用 sys.stdout.flush()

謝謝,我合併在一起了。print(t, end = ' ', flush=True)

我要發表回答

立即登入回答