關於raw_input()和sys.stdin.readline()的區別
阿新 • • 發佈:2019-02-14
原文作者:海子
關於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')),這樣處理一下就行了。