2013-12-15 85 views
1

我試圖從用戶那裏讀取一個\n字符,但它不工作。 這裏是我的代碼:閱讀Python中的「 n」字符失敗

op = raw_input("Hit enter to continue!") 

if op == '\n': 
#run code 

然而,當我打進入if condition裏面的代碼不會運行。這就像op不是\n,雖然我剛剛進入。

+3

'raw_input'不返回新的行字符。 – Tim

回答

1

來自raw_input docstring:「從標準輸入讀取一個字符串,尾隨的換行符被刪除。

所以才改爲

if op == '': 
#run code 
4

raw_input從輸入端去除\n。如果你想檢查一個字符串的空白,即:用戶剛剛使用輸入...只需使用if not op

您還可以在此調試自己很容易,比如:

op = raw_input('enter something: ') # hit only enter 
print repr(op) # it's a blank string 
+0

+1顯示如何進行調試。教一個人釣魚... – SethMMorton

1

不,raw_input(Python的2.X)或input(Python 3.x都有)不返回的最後一個換行符(\n)字符因爲這是它如何知道你已經完成輸入輸入

如果你想檢查空用戶輸入(簡單的輸入),你可以做

if not op: 
    # code 

if op == "": 
    # code 

if not op:版本是因爲從not布爾評估通用聲明返回True所有這些 -

  1. 空 「iterables」 - ''[]{}()
  2. 布爾 「假」 - False00.0
1

,檢查是否有空白的輸入的最佳方法是對第一條帶然後測試感實性:

if not op.strip(): 
    #code 

您需要調用帶(),因爲空格仍然True

>>> s 
' ' 
>>> bool(s) 
True 
1

如果你想,直到用戶點擊進入,你可以只使用暫停的Python 2.x的腳本:

raw_input("Hit enter to continue!") 

那麼不管是輸入腳本會繼續使用任何代碼遵循什麼。我傾向於做它的功能(一個稱爲例如「提示」),所以,如果我想要編輯的提示或行爲,我可以編輯的功能,所以:你什麼時候

def prompt(): 
    raw_input("Hit enter to continue!") 

然後在您的腳本想暫停直到用戶輸入任何東西使用:

prompt()