为什么python打印'\n'而不是移到下一行?

2024-06-16 11:46:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程完全是个新手。 目前,我正在编写一个简单的代码来打印带有星星的三角形。你知道吗

def star_drawer(n):
    if n==1:
        return('*')
    elif n>1:
        return str(star_drawer(n-1))+'\n'+"*"*n

如果我运行代码,n=3例如,shell显示'*\n**\n***' 代替

*
**
***

我不明白为什么\n不起作用。你知道吗


Tags: 代码returnifdef编程shellstardrawer
2条回答

Python中的对象可能有两个字符串表示法str(obj)是打印它的方式,repr(obj)是理解它的方式。如果只在交互控制台中键入对象的名称,则与打印其repr相同。你知道吗

示例:

>>> a = 'a\nb'
>>> a
'a\nb'
>>> repr(a)
"'a\\nb'"
>>> print repr(a)
'a\nb'
>>> print a
a
b

因此需要使用print(在python2.7中)或print(...)(在python3中)来实际显示字符串,而不是显示它们的repr值。你知道吗

这可以在没有递归的情况下更有效地完成

def star(n):
    return "\n".join("*" * i for i in range(1, n+1))

相关问题 更多 >