關於raw_input( )和sys.stdin.readline( )的區別
之前一直認為用raw_input( )和sys.stdin.readline( )來獲取輸入的效果完全相同,但是最近在寫程序時有類似這樣一段代碼:
import sys line = sys.stdin.readline() for i in range(len(line)): print line[i]+'hello'
它的運行結果讓我百思不得其解:
怎么會多輸出一個空行和hello?然后特意輸出了line的長度,發現是4,然后重新調試了幾次,發現無論輸入什么,len(line)的長度總比輸入的長度大1,然后用raw_input( )試着運行了一下,運行是正常的,然后查閱了一下文檔,發現sys.stdin.readline( )會將標准輸入全部獲取,包括末尾的'\n',因此用len計算長度時是把換行符'\n'算進去了的,但是raw_input( )獲取輸入時返回的結果是不包含末尾的換行符'\n'的。
import sys line1 = sys.stdin.readline() line2 = raw_input() print len(line1),len(line2)
因此如果在平時使用sys.stdin.readline( )獲取輸入的話,不要忘了去掉末尾的換行符,可以用strip( )函數去掉(sys.stdin.readline( ).strip('\n')),這樣處理一下就行了。