2017-07-16 41 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 

指示蟒蛇将需要串多行报价。