首先我定义了两个函数。一个使奇数(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))
两次打印“无”。此外,我必须改变,以便我没有基地两次,但我不能改变三角形的定义。我该如何解决这个问题?任何提示都很有用
答案 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)
*****
***
*
*
***
*****