尽管是一个多行字符串,为什么这个 ASCII 艺术字不打印在多行上?
Why isn't this ASCII art printing on multiple lines despite being a multiline string?
我创建了一个常量,其中包含一些三角形的 ASCII 艺术,如下所示:
ascii_triangle =''' /\
/ \
/ \
/ \
/ \
/__________\ '''
然后我将其用作函数的参数,这样我就可以在函数中使用图片(以及其他一些 ASCII 艺术和其他参数)。该功能并不重要,但问题是当我尝试使用
打印它时
print(ascii_triangle)
在函数中,输出如下所示:
/ / / / / /__________\
如何让它看起来像一个正三角形?
您发布的 ascii-art 在每个换行符 之前都有一个尾部反斜杠 。这个反斜杠如果后面没有跟除换行符之外的任何内容,则被视为 line continuation character。
观察:
In [118]: x = 'foo \
...: bar \
...: baz'
In [119]: x
Out[119]: 'foo bar baz'
在上面的示例中,尾部反斜杠 后没有任何内容,因此python 认为它是一个没有任何换行符的字符串。即使您有一个字符串的多行引号,也会给予相同的处理。
您需要 在反斜杠后添加 space,并使您的字符串成为原始文字。
In [123]: ascii_triangle =r''' /\
...: / \
...: / \
...: / \
...: / \
...: /__________\ '''
In [124]: print(ascii_triangle)
/\
/ \
/ \
/ \
/ \
/__________\
尝试在第一个示例中的反斜杠后添加一个 space,你会得到
SyntaxError: EOL while scanning string literal
表示 python 将需要字符串的多行引号。
我创建了一个常量,其中包含一些三角形的 ASCII 艺术,如下所示:
ascii_triangle =''' /\
/ \
/ \
/ \
/ \
/__________\ '''
然后我将其用作函数的参数,这样我就可以在函数中使用图片(以及其他一些 ASCII 艺术和其他参数)。该功能并不重要,但问题是当我尝试使用
打印它时print(ascii_triangle)
在函数中,输出如下所示:
/ / / / / /__________\
如何让它看起来像一个正三角形?
您发布的 ascii-art 在每个换行符 之前都有一个尾部反斜杠 。这个反斜杠如果后面没有跟除换行符之外的任何内容,则被视为 line continuation character。
观察:
In [118]: x = 'foo \
...: bar \
...: baz'
In [119]: x
Out[119]: 'foo bar baz'
在上面的示例中,尾部反斜杠 后没有任何内容,因此python 认为它是一个没有任何换行符的字符串。即使您有一个字符串的多行引号,也会给予相同的处理。
您需要 在反斜杠后添加 space,并使您的字符串成为原始文字。
In [123]: ascii_triangle =r''' /\
...: / \
...: / \
...: / \
...: / \
...: /__________\ '''
In [124]: print(ascii_triangle)
/\
/ \
/ \
/ \
/ \
/__________\
尝试在第一个示例中的反斜杠后添加一个 space,你会得到
SyntaxError: EOL while scanning string literal
表示 python 将需要字符串的多行引号。