2016-03-04 96 views
1

嗨,我在教自己的python,已經下載了3.4,並且正在通過Think Python工作。我遇到的問題是打印網格。我不會把整個代碼放在一起,但這是一個問題。在python 3.4中打印呼叫

def do_twice(f): 
    f() 
    f() 

def print_beam(): 
    print("+ - - - - ",) 

def print_beams(): 
    do_twice(print_beam) 
    print("+") 

現在這個時候叫應該是打印這樣的梁+ - - - - + - - - - +

然而,實際產量
+ - - - -
+ - - - -
+

我已經在這個上花了兩個小時,但是我使用的python版本與我正在使用的書不同。任何人都可以幫我解決這個日誌堵塞問題嗎?

+0

的文檔?如果你不確定,試試'import sys; print(sys.version)' – Kevin

+0

您正在閱讀Python 2教程並在Python 3上運行它。這就是問題所在。 –

+0

3.4.4但這本書是diff 3.2也許 –

回答

5

問題是,默認情況下,print函數在其輸出結尾創建一個新行。這是一個簡單的修復。

def do_twice(f): 
    f() 
    f() 

def print_beam(): 
    print("+ - - - - ", end='') #Don't create a new line. 

def print_beams(): 
    do_twice(print_beam) 
    print("+") 
+0

感謝您的幫助Gareth,它立即修復了它。很高興我來到這裏,而不是再敲2個小時。非常感謝! –

+2

@MarkNolan不要忘記標記這是其他人路過的答案! – GarethPW

1

與Python 3,防止換行字符被打印設置end=""像這樣:

print("+ - - - -", end="")

你可以閱讀您正在使用什麼版本的這個here