python在算法題中判斷輸入結束(EOF)


有些算法題是這樣要求的,一行輸入一行數據,然后沒有規定我要輸入多少行,你要自行判斷文件結束EOF,否則是會runtime error的,因為oj內部都是用文件來進行讀寫的。

例如a+b,每一行輸入a b,計算a+b的結果。

一般這種嘛,c/c++很簡單了,就是scanf判斷一下!=EOF就完事了,但是python中沒有這種操作,需要另外的操作。這里介紹一些目前我掌握的有三種方法:

用異常

這個很好想,就是判斷輸入並轉換成數值,然后最后讀不到東西了,轉換肯定會有異常,通過異常退出就行了,這個方法我個人不是太喜歡,就沒寫。

stdin

import sys
for line in sys.stdin:
    a, b = (float(x) for x in line.split())
    print(a + b)

 

但是這種方法有一個【致命】的缺點!!那就是不能斷點調試,會提示這個stdin不是iterable的,這個真的是很致命了。。。。在做算法題的時候不能調試,我個人是覺得比讓我用txt寫還難受。。。

還是stdin,但是解決了2中的問題

import sys
while True:
    line = sys.stdin.readline()
    if not line:
        break
    a, b = (int(x) for x in line.split())
    print(a + b)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM