python - 如何使用 python 打印这个菱形图案?
问题描述
我想在python中打印这个模式:(10行菱形递增-递减数)
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
1234567891987654321
12345678987654321
123456787654321
1234567654321
12345654321
123454321
12321
121
1
注意:最后但第四行缺少 1234321,所以我认为它不是一个完美的菱形。Plus 不是 10,而是在第十行打印了 1。如何实现这个形状?请告诉我。
我不知道如何使用数字来做到这一点,所以使用 * 尝试了下面的基本程序,但我不知道如何使用上面显示的数字打印相同的程序。
n=11
for i in range(n):
print(''*(n-i-1)+'* '*(i+1))
for j in range(n-1,0,-1):
print(''*(n-j)+'* '*(j))
这也只打印一半的形状
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
如何打印我提到的模式(使用增量 - 减量数字)?加上问题是错误的,因为它错过了 1234321 行还是可以实现?请帮助我。我是编码新手,那么如何使用最简单的方法来实现这一点,即使用循环结构,如 for 循环?提前感谢您的帮助和时间。
解决方案
以下是如何生成几何图形的可能性:
n = 11
for i in range(n // 2 + 1):
print(' ' * (n // 2 - i) + '* ' * (i + 1))
for i in reversed(range(n // 2)):
print(' ' * (n // 2 - i) + '* ' * (i + 1))
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
编辑:这是一个带有数字的实际实现,不幸的是,它在 n = 10 时失败。
from itertools import chain
n = 9
ranges = chain(range(n), reversed(range(n - 1)))
for i in ranges:
print(' ' * (n - i - 1), *[x + 1 for x in range(i + 1)],
*[x + 1 for x in reversed(range(i))])
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
推荐阅读
- excel - 根据外部列表过滤访问表
- javascript - Swiper.js 不在第一页滚动
- google-cloud-firestore - Firestore 时间戳条件不起作用
- ios - 从 UIViewControllerRepresentable 推送 NavigationController
- python - Python,检查数组元素是否都相同
- php - WordPress 会在每个文件夹中自动创建像 /.folderName.php 这样的文件
- sql - 在 'where' 和 'and' 运算符中一一绑定 id
- javascript - React Native,有很多组件会影响性能?
- python - 当我正常运行时容器工作正常但是当我使用任务定义通过 ecs 运行它时它的抛出错误
- ios - 如果我不想要新的更新,让 ios 分发证书过期