python - 使用 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)
解决方案
您可以通过左右来建立上半部分,*
根据需要多次证明重复的次数(我们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):
* *
*** ***
***** *****
******* *******
********* *********
**********************
********* *********
******* *******
***** *****
*** ***
* *
推荐阅读
- javascript - Angular observable 使用订阅检索数据
- python - 注释“--noreload”时,vscode 没有关闭所有 django 进程
- javascript - 移动 chrome 浏览器不显示我的 div 或结果数据
- java - javafx 事件处理程序返回错误我不完全理解
- apache-spark - 如何在 Yarn 模式下访问 Spark Web UI
- python - 更改作为成员变量的列表
- java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“__type”
- excel - 显示 SSIS 数据的问题 - 从 Excel 文件导入到 SQL DB
- google-chrome - 是否不会从 Chrome 80 设置 samesite=none 和 secure=true 的 cookie?
- wix - Visual Studio Code 的 WIX 项目生成器