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’)),這樣處理一下就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章