而不是打印,而是返回整个字符串的值

时间:2016-08-08 08:59:32

标签: python

目前正在进行一项我希望将星星打印为三角形的作业,代码目前看起来像这样(非常基本,我知道):

def triangelbasupp(n,m):
    for a in range(0,m):
        print((n*" "),(m*"*"))
        m=m-2
        n=n+1
        if m<=0:
            break

当我进入时,例如(3,1)我会在第一行获得前3颗星,然后是1颗星。这段代码运行正常,问题是对于赋值,我只想返回构成三角形的整个字符串,它还必须包含用于切换行的'\ n'。有谁知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

而不是打印,初始化一个空字符串并使用字符串连接运算符来构建字符串:

def triangelbasupp(n,m):
    s = ""
    for a in range(0,m):
        s += n*" " + m*"*" + "\n"
        m=m-2
        n=n+1
        if m<=0:
            break
    return s

答案 1 :(得分:2)

收集列表中的行,然后join将其与\n一起收回并返回。

def triangelbasupp(n,m):
    lines = []
    for a in range(0,m):
        lines.append(n*" " + m*"*")
        ...
    return "\n".join(lines)

或更短:

def triangelbasupp(n, m):
    return "\n".join(("*"*i).center(n) for i in range(m, 0, -2))