考虑以下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()
答案 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本身来说是相当新的东西),但是这将导致函数调用打印新行,而不是仅仅返回值(如果这样)有人需要用例。