2016-08-11 710 views
0

我在教自己如何在Python中編程,並且我有一個關於「打印」的問題。我知道print語句嵌入了換行符「\ n」,但是我注意到每當我的代碼以print語句結束時,例如print(「this is the end」),它就不會創建一個換行符。Python中打印命令的換行功能

是否Python的一個特性是非常最後打印語句的換行符被抑制?

p.s.我正在使用IDLE

+2

是什麼讓你認爲最後的print語句不創建一個新行? –

+0

你在測試什麼?嘗試運行print('這是結束',end ='')',看看結果是什麼。 – Kupiakos

+0

@AdamSmith如果我運行一個只打印('test')語句的腳本,解釋器會吐出'test',但它不會給我一個額外的新行 – mononono

回答

4

不,Python沒有這樣的功能。您可能會混淆「不打印換行符」和「不以空格結束」。

例如,在bash中,它可能是這樣的:

$ cat endline.py 
print('line 1') 
print('line 2') 
$ cat noendline.py 
print('line 1') 
print('line 2', end='') 
$ python3 endline.py 
line 1 
line 2 
$ python3 noendline.py 
line 1 
line 2$ echo "It did not end in a newline" 
It did not end in a newline 
$ 

注意如何noendline.py退出沒有任何換行符和提示立即繼續。

這適用在現場翻譯,以及:

>>> print('Hello world!') 
Hello world! 
>>> print('Hello world!', end='') 
Hello world!>>> # See? 

的Windows(cmd)總是附加一個程序以新行結束:

C:\> python endline.py 
line 1 
line 2 

C:\> python noendline.py 
line 1 
line 2 
C:\> 
+0

我正在使用IDLE和Shell,但是當我輸入print('Hello World!,end ='')時,新的命令提示符出現在下一行。 – mononono

+2

@ hl0202這是由於IDLE是一個包裝解釋器並不能準確地顯示Python輸出的內容,它會檢測到命令末尾的輸出沒有以換行符結尾並自動添加它,你可以運行'sys.stdout.write('hello')'(如果你在終端中運行Python,你將不會看到這種行爲 – Kupiakos

0

在Python中,\n被添加default。您可以指定結束參數,你想級聯到打印語句在Python 3結束滿足以下(輸出崇高3複製到演示換行符):

print('Hello World', end='Arg goes here.') 

輸出:

Hello WorldArg goes here.[Finished in 0.0s] # Notice no newline. 

其他方面,如果沒有值傳遞給關鍵字參數end,則默認爲\n

print('Hello World') 

輸出:

Hello World 
[Finished in 0.0s] # Newline by default. 

觀光蟒蛇略有不同2print不是一個函數(\n是默認),但是你可以在以下效仿這一行爲方式:

from __future__ import print_function 
print('Hello World', end='\n') 

輸出:

Hello World 
[Finished in 0.0s] # Newline specified. 

下面是在終端的交互shell中運行演示了幾個例子。

在外殼(Python中2):

>>> from __future__ import print_function 
>>> print('Hello World', end='\n') 
Hello World 
>>> print('Hello World', end='\n\n') 
Hello World 

>>> print('Hello World', end='') 
Hello World>>> 
+0

如果你只是在Python解釋器(Python Shell)中輸入print('Hello World'),那麼它會添加一個換行符,你看到字符串'Hello World',並且你沒有看到額外的空行,你立即得到提示>>>。你不是嗎? – mononono

+0

@ hl0202:你爲什麼期望一個空行?'print'不會打印換行符,這就是爲什麼提示不會像'print'一樣繼續執行輸出。 – user2357112

+0

@ hl0202是的,但不是新行上的「>>>」? – Anonymous