用两个三角形定义菱形

洛赞斯基

首先,我定义两个函数。一个使底数b为奇数(3,5,7 ...)的三角形向上并远离左侧放置一个单位的三角形然后再做一个与之相同但底部向下的三角形。分别称它们为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))

两次打印“无”。另外,我还必须进行更改,以免我两次都不做底数,但是不能更改三角形的定义。我该如何解决呢?任何提示将是有用的

帕德拉克·坎宁安(Padraic Cunningham)

如果您以后要使用字符串,则需要返回值,将您在代码中打印的每个字符串连接起来,并添加换行符,通过返回实际值,您还将删除在输出中看到的“无”,因为您实际上并未返回任何值不是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)
     *****
      ***
       *
       *
      ***
     *****

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章