1. 程式人生 > >關於raw_input()和sys.stdin.readline()的區別

關於raw_input()和sys.stdin.readline()的區別

原文作者:海子    

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