因為測資裡面有空白行,如果抓 EOFError 的話會抓不到空白行(輸入格式錯誤)
說人話就是這題目有坑,輸入實際上並非到EOF為止,而是到空白行為止
while True:
try:
# 接收資料
except (ValueError, EOFError):
break
# 你要做的事情
過範例要用 EOFError,過測資要用ValueError
下面的寫法也能過,但不推薦
while True:
try:
# 接收資料
except:
break
# 你要做的事情
或是這樣寫
while True:
try:
# 接收資料
except Exception:
break
# 你要做的事情
兩者是一樣的,都是只要偵測到任意類型的錯誤,就會直接 break ,代價是你永遠不會知道是什麼錯誤,只知道如果出問題,程式會輸出錯誤的結果,但你永遠不會知道是怎麼回事。
(雖然都英文,但閱讀一下報錯內容還是很有幫助的)