2017-07-16 118 views
2

我已經創建了一個常數,其包含一個三角形的一些ASCII技術中,這樣的:儘管是多行字符串,爲什麼不在多行上打印這種ASCII藝術?

ascii_triangle ='''  /\ 
    /\ 
    / \ 
/ \ 
/  \ 
/__________\ ''' 

我然後使用此作爲一個函數的參數,所以可與一些在函數內使用的圖片(沿其他ASCII藝術和其他參數)。該功能並不重要,但問題是,當我嘗試使用

print(ascii_triangle) 

函數中打印,輸出看起來是這樣的:

 /  /  /  /  /   /__________\ 

我怎樣才能使它看起來像一個適當的三角?

+1

請看如何提供[mcve]。 –

+1

您需要a)使用原始字符串('r'''')或b)使用另一個\ - > \\轉義\ –

回答

4

您發佈的ascii藝術品有一個尾隨的反斜槓就在每個換行之前。如果除了換行符之外的任何內容都沒有跟隨反斜槓,則將其視爲line continuation character

觀察:

In [118]: x = 'foo \ 
    ...: bar \ 
    ...: baz' 

In [119]: x 
Out[119]: 'foo bar baz' 

在上面的例子中,在尾部反斜槓後什麼都沒有,所以蟒認爲,這是沒有任何新行一個字符串。即使您對字符串有多行引用,也會得到相同的處理。

你需要在之後加上一個空格後面的反斜槓,並讓你的字符串成爲一個原始文字。

In [123]: ascii_triangle =r'''  /\ 
    ...: /\ 
    ...: / \ 
    ...: / \ 
    ...: /  \ 
    ...: /__________\ ''' 

In [124]: print(ascii_triangle) 
     /\ 
    /\ 
    / \ 
/ \ 
/  \ 
/__________\ 

嘗試在第一個例子中的反斜槓後添加一個空格,你會得到

SyntaxError: EOL while scanning string literal 

指示蟒蛇將需要串多行報價。