我正在制作一个基于文本的rpg/冒险游戏,我想添加一些ASCII艺术。对于这样的多行字符串,我使用了三重引号:
print("""
/\ /\ /\ /\
/**\ /**\ /**\ /**\
/****\ /\ /\ /****\ /\ /****\ /\ /\ /****\ /\
/ \ /**\ / \ / \ /**\ / \ /**\ / \ / \ /**\
/ /\ / \ / \ / /\ / \ /\ / /\ / \ / \ / /\ / \
/ / \ / \/ \/ / \ / \ / \ / / \ / \/ \/ / \ / \
/ / \/ /\ \ / / \/ /\ \/ \/ / \/ /\ \ / / \/ /\ \
/ / \/ \/\ \ / / \/ \/\ \ / / \/ \/\ \ / / \/ \/\ \
__/__/_______/___/__\___\__/__/_______/___/__\___\___/__/_______/___/__\___\__/__/_______/___/__\___\_
""")理想情况下,这就是我运行程序时应该看到的样子。
然而,它看起来却是这样,一点也不理想,而且看起来非常混乱:

我在想,在如何解决这个问题上,是否有人能为我指明正确的方向。提前感谢!
发布于 2021-02-10 10:29:58
代码中的主要问题是,行尾的\被解释为行的延续,因此下一行将被连接到前一行。
您可以避免这一点,方法是在反斜杠后面的行尾添加任何字符,比如空格(因为只有当反斜杠是行中的最后一个字符时才会触发行继续)。
另一种解决方案是使用原始字符串,从r""" ....开始。如文献资料中所述
具体来说,原始文字不能以单个反斜杠结尾(因为反斜杠将转义下面的引号字符)。还请注意,--一个反斜杠后面跟着一个换行符--被解释为这两个字符是文字的一部分,而不是行的延续。
这还将防止任何以反斜杠开头的潜在转义序列被解释为反斜杠。
发布于 2021-02-10 10:07:41
您应该raw您的字符串,如下所示:
# v
print(r"""
/\ /\ /\ /\
/**\ /**\ /**\ /**\
/****\ /\ /\ /****\ /\ /****\ /\ /\ /****\ /\
/ \ /**\ / \ / \ /**\ / \ /**\ / \ / \ /**\
/ /\ / \ / \ / /\ / \ /\ / /\ / \ / \ / /\ / \
/ / \ / \/ \/ / \ / \ / \ / / \ / \/ \/ / \ / \
/ / \/ /\ \ / / \/ /\ \/ \/ / \/ /\ \ / / \/ /\ \
/ / \/ \/\ \ / / \/ \/\ \ / / \/ \/\ \ / / \/ \/\ \
__/__/_______/___/__\___\__/__/_______/___/__\___\___/__/_______/___/__\___\__/__/_______/___/__\___\_
""")这是因为反斜杠"\“是Python中的特别字符。
发布于 2021-02-10 10:35:16
除了其他答案之外,另一件可能会搞乱ASCII艺术的东西是缩进,例如:
print("""these 3 lines
should start
in the same place""")将产出:
these 3 lines
should start
in the same place要解决这个问题,您需要这样做:
print("""these 3 lines
should start
in the same place""")但是,如果print语句缩进,它仍然不能工作。
for i in range(1):
print("""these 3 lines
should start
in the same place""")将产出:
these 3 lines
should start
in the same place要解决这个问题,您的字符串应该始终从行的开头开始,而不管缩进,如下所示:
for i in range(1):
print("""these 3 lines
should start
in the same place""")但那太丑了。
https://stackoverflow.com/questions/66134751
复制相似问题