有些算法題是這樣要求的,一行輸入一行數據,然后沒有規定我要輸入多少行,你要自行判斷文件結束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)