2016-03-07 2 views
-1

python 3.5 Spyderтекст треугольник в питона новой линии не работает в doctest

По какой-то причине мой выход включает \ п символов напечатанных вместо выполнения фактической новой строки. Я думаю, что моя позиция \ n неверна, и я попытался разместить ее в нескольких местах, но я не видел никаких улучшений.

Для например: text_triangle (5) приводит к:

X\\nXX\\nXXX\\nXXXX\\nXXXXX\\nXXXXX\\nXXXX\\nXXX\\nXX\\nX\\n

питон документы упоминается с использованием исходных строк DOc при использовании обратных косых черт, но это не меняет выход либо. Я чувствую, что мой код действительно возвращает правильное количество символов, но как получить новые строки, это для меня загадка.

def text_triangle(height): 
"""(int) -> string 

Returns a text version of an isosceles triangle built from 'X' characters 
with height copies of the X in the longest line. The triangle is returned 
in a multiline string. The string is empty if height <= 0. 

For instance, if we call print(text_triangle(5))it will print the following: 
X 
XX 
XXX 
XXXX 
XXXXX 
XXXX 
XXX 
XX 
X 

>>> text_triangle(0) 
'' 
>>> text_triangle(1) 
X 
>>> text_triangle(3) 
X 
XX 
XXX 
XX 
X 
>>> text_triangle(5) 
X 
XX 
XXX 
XXXX 
XXXXX 
XXXX 
XXX 
XX 
X 
""" 

if(height <= 0): 
    return '' 
else: 
    out_string = '' 
    for i in range(0, height): 
     out_string += 'X' * (i+1) + '\\n' 

    for i in range(height, 0, -1): 
     out_string += 'X' * i + '\\n' 

    return out_string 

if __name__ == '__main__': 
    import doctest 
    print(doctest.testmod(verbose = True, 
        optionflags = doctest.NORMALIZE_WHITESPACE)) 

ответ

3

Вы используете \\n в своей строке. \ используется для выхода из символа. Он добавит этот символ к строке, которая не может быть добавлена ​​напрямую, как " может быть добавлена ​​как \" и \ может быть добавлена ​​как \\.

В вашем коде \\ добавляется \ к вашей строке, а затем добавляется n.

Поэтому используйте \n вместо \\n.

Смежные вопросы