Почему эта ASCII-печать не выполняется в несколько строк, несмотря на то, что она многострочная?
Я создал константу, которая содержит искусство треугольника ASCII, например:
ascii_triangle =''' /\
/ \
/ \
/ \
/ \
/__________\ '''
Затем я использую это в качестве аргумента для функции, поэтому я могу использовать изображение внутри функции (наряду с некоторыми другими ASCII-артами и другими аргументами). Функция не важна, но проблема в том, что когда я пытаюсь распечатать ее, используя
print(ascii_triangle)
внутри функции вывод выглядит так:
/ / / / / /__________\
Как я могу сделать так, чтобы он выглядел как правильный треугольник?
1 ответ
Отправленный вами ascii-art имеет косую черту перед каждой новой строкой. Эта обратная косая черта, если за ней не следует ничего, кроме новой строки, рассматривается как символ продолжения строки.
Заметим:
In [118]: x = 'foo \
...: bar \
...: baz'
In [119]: x
Out[119]: 'foo bar baz'
В приведенном выше примере после завершающей обратной косой черты ничего нет, поэтому python считает, что это отдельная строка без символов новой строки. То же самое дается, даже если у вас есть многострочная кавычка для строки.
Вам нужно будет добавить пробел после обратной косой черты и сделать вашу строку необработанным литералом.
In [123]: ascii_triangle =r''' /\
...: / \
...: / \
...: / \
...: / \
...: /__________\ '''
In [124]: print(ascii_triangle)
/\
/ \
/ \
/ \
/ \
/__________\
Попробуйте добавить пробел после обратной косой черты в первом примере, и вы получите
SyntaxError: EOL while scanning string literal
Для обозначения python потребуется многострочная кавычка для строки.