#41852: python 這題如果用 try 捕捉錯誤的話要用 ValueError


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-12-03 23:16:35
a738. 最大公约数 -- 海豚原创 | From: [123.192.228.253] | 發表日期 : 2024-09-02 00:48

因為測資裡面有空白行,如果抓 EOFError 的話會抓不到空白行(輸入格式錯誤)
說人話就是這題目有坑,輸入實際上並非到EOF為止,而是到空白行為止

while True:
try:
# 接收資料
except (ValueError, EOFError):
break
# 你要做的事情

過範例要用 EOFError,過測資要用ValueError

下面的寫法也能過,但不推薦

while True:
try:
# 接收資料
except:
break
# 你要做的事情

或是這樣寫
while True:
try:
# 接收資料
except Exception:
break
# 你要做的事情

兩者是一樣的,都是只要偵測到任意類型的錯誤,就會直接 break ,代價是你永遠不會知道是什麼錯誤,只知道如果出問題,程式會輸出錯誤的結果,但你永遠不會知道是怎麼回事。
(雖然都英文,但閱讀一下報錯內容還是很有幫助的)

 

 

 
ZeroJudge Forum