首页 > 解决方案 > 使用 Python 3.0 创建领结图案

问题描述

给定一个大于或等于 5 的奇数正整数 h,创建一个有 h 行和 2h 列的蝴蝶结图案。

input: 5
output:

*        *
***    ***
**********
***    ***
*        *

或者

input: 7
output: 
*            *
***        ***
*****    *****
**************
*****    *****
***        ***
*            *

我创建的代码仅适用于给定的 h 值,但我不确定如何使其适用于任何 h 值。我还尝试利用对称性,所以我只做了一半的领结。

h = input()
n = int(h)
x = "*"
space = " "
print(x)
print(-(-n // 2)*x)
print(n*x)
print(-(-n // 2)*x)
print(x)

标签: pythonpython-3.x

解决方案


您可以通过左右来建立上半部分,*根据需要多次证明重复的次数(我们range为此使用一个步骤,因为第一行将有 1 *,接下来的 2 ,再接下来的 2 直到我们到达 N ) 用 width 左右填充n,例如:

n = int(input())
top = [('*' * i).ljust(n) + ('*' * i).rjust(n) for i in range(1, n, 2)]

这为您提供top(对于 n = 5):

['*        *', '***    ***']

然后,我们打印顶部、中间(总是*重复 N*2 次),然后以相反的顺序打印顶部,底部用换行符分隔,例如:

print(*top, '*' * n * 2, *reversed(top), sep='\n')

给你(n = 5):

*        *
***    ***
**********
***    ***
*        *

或者对于(n = 11):

*                    *
***                ***
*****            *****
*******        *******
*********    *********
**********************
*********    *********
*******        *******
*****            *****
***                ***
*                    *

推荐阅读