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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM