2014-01-19 26 views
2

我是Python的初學者,剛剛得知python在每個print語句的末尾隱式地打印了一行。對於大多數語句,我都有試過。Python語句結尾處沒有隱含的新行

number = 23 

guess = int(input("Enter an integer")) 

if number == guess: 
    print('guessed the number correctly') 
else: 
    print('That was an incorrect guess') 

當我執行上面的代碼時,popwindow出現了,我把它放在了23.這是我得到的輸出。

Enter an integerguessed the number correctly 

我沒有使用標準的python,而是使用了一個名爲pythonfiddle的在線python IDE。

+4

你在哪裏執行此操作? – thefourtheye

+1

在正常情況下,在「輸入一個整數」和「猜對數字」之間會出現'23'和一個換行符,因爲在正常情況下,您會在那裏輸入您的輸入。 – user2357112

+0

該代碼在終端/ cmd shell中按預期工作。 看[screencast](http://asciinema.org/a/7255)。 – falsetru

回答

4

print函數有一個隱含的換行符(除非使用end關鍵字參數告訴它不這樣做)。該input本身明確不:

如果提示參數存在,它被寫入沒有結尾的新行標準輸出...

當你在終端運行的Python,input通過讀取該終端的一行輸入來工作,所以當你輸入23並點擊return時,終端回顯包括換行符的輸入。

如果您在IDE環境下運行Python(無論是IDLE,Visual Studio還是像Python Fiddle這樣的在線IDE),它可以通過彈出一個對話框讓您輸入輸入來實現input成。在這種情況下,您的輸入會出現在該框中,而不是輸出中,因此不會有換行符。

大多數此類IDE不會在輸出中顯示提示 - 相反,它們通常會將其顯示在對話框中。但沒有規則說他們不能打印輸出提示(而事實上,上面引用的文檔的措辭意味着,也許他們應該)。所以,Python Fiddle對你做的是完全合理的。

如果你想讓你的代碼很好地處理它,你可以嘗試在這種情況下檢測環境並打印自己的換行符。我不知道如何如何區分該網站與空閒與常規終端(我注意到sys.stdin.isatty()sys.stdout.isatty()都返回小提琴True ...),但您可能能夠通過搜索他們的文檔找到它。