\ n在函数的返回语句中打印\ n而不是python中的新行

时间:2018-10-23 18:05:37

标签: python

考虑以下python代码。我是python的新手,请帮助我。 该函数返回 '\ n56' 但是我需要 - 新队 - 56

def fun_ret(num):
    return '\n'+str(num)
if __name__=='__main__':
    a=fun_ret(56)

我经历过类似的帖子,但这全都与印刷声明有关

实际情况是在类中通过方法 str 的doctest。

def __str__(self):
    """(Maze)-->str
    The parameter represents a maze. Return a string representation of the maze 
    >>> maze=Maze([['#', '#', '#', '#', '#', '#', '#'],['#', 'J', '.', '.', 'P', '.', '#'], ['#', '.', '#', '#', '#', '.', '#'],['#', '.', '.', '@', '#', '.', '#'],['#', '@', '#', '.', '@', '.', '#'], ['#', '#', '#', '#', '#', '#', '#']], Rat('J', 1, 1),Rat('P', 1, 4))
    >>> str(maze)
    "#######
    #J..P.#
    #.###.#
    #..@#.#
    #@#.@.#
    #######
    J at (1, 1) ate 0 sprouts.
    P at (1, 4) ate 0 sprouts."
    """
    result=''
    for outer_list in self.maze_content:
        for inner_list in outer_list:
            result +='{0}'.format(str(inner_list))
        result+='\n'
    result += '\n'+'{0} at ({1}, {2}) ate {3} sprouts.'.format(self.rat_1.symbol,self.rat_1.row,self.rat_1.col,self.rat_1.num_sprouts_eaten)
    result += '\n'+('{0} at ({1}, {2}) ate {3} sprouts.'.format(self.rat_2.symbol,self.rat_2.row,self.rat_2.col,self.rat_2.num_sprouts_eaten))
    return result


if __name__=='__main__':
    import doctest
    doctest.testmod()

2 个答案:

答案 0 :(得分:1)

您是否在面向行的命令外壳中工作?如果是这样,我可以看到您的困惑。典型的命令外壳程序具有一个特殊的例程,用于简单地显示变量值,该例程不执行 not 转换输出格式字符的操作。例如,默认的Python交互式外壳为我们提供了此功能:

>>> def fun_ret(num):
...     return '\n'+str(num)
... 
>>> a=fun_ret(56)
>>> a
'\n56'
>>> print(a)

56
>>> 

请注意不同之处:简单的a命令会仔细显示变量的 string 值,从而扩展了各种控制字符的可视化简写形式。 print命令应用标准格式程序,在该格式程序中,\n字符被转换为实际的“换行”操作。

这有助于解决问题吗?

答案 1 :(得分:1)

我知道这是一个很老的问题,但是我在尝试解决类似问题时发现了它(我在学习的过程中遇到了挑战,我必须打印包含多行的字符串字符串字典)。因此,由于某些评论将我带到了答案,因此我想在这里分享它,以防以后其他人遇到相同的问题。

在OP的情况下,仅返回字符串:

def fun_ret(num):
    return '\n'+str(num)

您可以返回打印语句,如下所示:

def fun_ret(num):
    return print('\n'+str(num))

如果您可能需要将该函数返回到某个位置的某个变量中,那么这不一定奏效,在这种情况下,最好在print语句中调用它:

print(fun_ret(num)) 

相反。

我不确定这是否能解决OP指定的实际情况(对于Python本身来说是相当新的东西),但是这将导致函数调用打印新行,而不是仅仅返回值(如果这样)有人需要用例。