2016-03-07 67 views
-1

python 3.5 Spyder文本三角形在文档测试

不工作由于某种原因,我的输出包括印而不是进行实际的新行\ n个字符。我认为我\ n的位置不正确,我试过将它放在多个位置,但我没有看到任何改进。

对于例如:text_triangle(5),得到:

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

python文档使用反斜线但这并不会改变输出时使用原始文档字符串提及。我觉得我的代码确实返回了正确数量的字符,但如何让新行发生对我来说是个谜。

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