各位高手好
小弟用工作閒暇時間自學python,其中一題練習為:
生成費波納契數列前20個數
我自己的寫的程式如下
import os
a = 0
b = 1
for x in range(20):
a = b
b = a+b
print(a )
os.system('pause')
可得出結果
但我希望能得到單純一行的數列,所以參考文章附的參考答案修改後得到下面的程式碼
https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/code/Day05/fibonacci.py
import os
a = 0
b = 1
for _ in range(20):
a, b = b, a + b
print(a, end=' ')
os.system('pause')
然而得到的結果如下
並沒有顯示任何的內容
我將第六行的end去掉後,能顯示一樣的內容
import os
a = 0
b = 1
for _ in range(20):
a, b = b, a + b
print(a)
os.system('pause')
請問是我哪邊設定有問題呢?還是我搞錯了end的用法。
感謝各位高手
你遇到的是 Python 的 print()
基於 buffer 機制而發生的現象,處理方式能用 flush=True
(即 print(a, end=' ', flush=True)
)。
或者,用下段程式碼的方式亦可:
import os
a, b = 0, 1
for _ in range(20):
a, b = b, a + b
print(a, end=' ')
print() ## 這是用以更新畫面用; 若想保險起見而用上 `flush=True` 亦可;
os.system('pause')
有興趣可去看 sys.stdout 的敘述, 還有 What does print()'s flush
do? 的討論。
(或是 Google Python print flush
)
P.s. 你的:
import os
a = 0
b = 1
for _ in range(20):
a, b = b, a + b
print(a, end=' ')
os.system('pause')
沒顯示就關閉視窗, 是因為 os.system('pause')
時, Python 尚未輸出資料至螢幕 (原因已於前敘); 而在按下任意鍵繼續後, Python 才輸出資料至螢幕, 並馬上關閉視窗, 所以你會誤以為沒有顯示。
我是因為習慣開個 Win-Cmd (命令提示字元),用 python myScript.py
方式執行程式碼, 才猜測你遇到是這現象。