通过两个三角形

时间:2015-10-14 22:01:08

标签: python python-3.x

首先我定义了两个函数。一个使奇数(3,5,7 ...)基础 b 向上的三角形,并将 a 单位放在远离左侧的位置。然后另一个做同样但有一个三角形与基部向下。分别称他们为triup和trido。我们得到:

def triup(a,b):
    c=b
    a=a 
    for i in range(1,b+1):
        print(a*" "+c*'*')
        c-=2
        a+=1
        if c==-1:
           break

def trido(a,b):
    c=1
    a=a+round((b-1)/2)
    for j in range(1,b+1):
        print(a*" "+c*"*")
        c+=2
        a-=1
        if c==b+2:
            break

现在我想通过组合这两个函数来制作一个菱形。所以首先我尝试了:

def rhomb(a,b):
    print(trido(a,b))
    print(triup(a,b))

两次打印“无”。此外,我必须改变,以便我没有基地两次,但我不能改变三角形的定义。我该如何解决这个问题?任何提示都很有用

1 个答案:

答案 0 :(得分:2)

如果你想稍后使用字符串,你需要返回值,连接你在代码中打印的每个字符串添加换行符,通过返回实际值,你也会删除你在输出中看到的无。你实际上并没有返回一个值而不是python默认的None。:

def triup(a, b):
    c = b
    out = ""
    for i in range(1, b + 1):
        out += a * " " + c * '*' + "\n"
        c -= 2
        a += 1
        if c == -1:
            return out
    return  out


def trido(a, b):
    c = 1
    a += round((b - 1) / 2)
    out = ""
    for j in range(1, b + 1):
        out += a * " " + c * "*"  + "\n"
        c += 2
        a -= 1
        if c == b + 2:
            return out
    return out

您可以存储两个输出并随意执行任何操作:

In [10]: a,b = triup(5,5),trido(5,5)

In [11]: print(a)
     *****
      ***
       *


In [12]: print(b)
       *
      ***
     *****


In [13]: print(b+a)
       *
      ***
     *****
     *****
      ***
       *
In [14]: print(a + b)
     *****
      ***
       *
       *
      ***
     *****