python - 以不同的顺序打印序列
问题描述
我能够理解以下模式的逻辑,但没有得到实现的方式,请有人在这里帮助我。
我想要的模式如下所示,(在第一列直到 5,然后在 5 之后的第二列离开第一行和最后一行,依此类推。..)
1
2 6
3 7 9
4 8
5
解决方案
尝试这个:
n = int(input())
for i in range(1, (n//2)+2):
for j in range(i):
print(i + ((n - 1) * j) - (j * (j - 1)) , end=' ')
print()
for i in range((n//2)+2, n + 1):
for j in range(n - i + 1):
print(i + ((n - 1) * j) - (j * (j - 1)), end=' ')
print()
输出:
n = 9
1
2 10
3 11 17
4 12 18 22
5 13 19 23 25
6 14 20 24
7 15 21
8 16
9
逻辑
n = 9
1 |
2 10 |(10 - 2) = 8
3 11 17 |(11 - 3) = 8, (17 - 11) = 6
4 12 18 22 |(12 - 4) = 8, (18 - 12) = 6, (22 - 18) = 4
5 13 19 23 25 |(13 - 5) = 8, (19 - 13) = 6, (23 - 19) = 4, (25 - 23) = 2
6 14 20 24 |(14 - 6) = 8, (20 - 14) = 6, (24 - 20) = 4
7 15 21 |(15 - 7) = 8, (21 - 15) = 6
8 16 |(16 - 8) = 8
9 |
例如在第 5 行
- 第一个数字是
5 + ((n - 1) * 0) - (0 * -1) = 5
- 下一个值
5 + ((n - 1) * 1) - (1 * 0) = 13
- 下一个值
5 + ((n - 1) * 2) - (1 * 2) = 19
- 下一个值
5 + ((n - 1) * 3) - (2 * 3) = 23
- 下一个值
5 + ((n - 1) * 4) - (3 * 4) = 25
5 以上是i
值,0,1,2,3,4 是j
值
计算值的通用公式i + ((n - 1) * j) - (j * (j - 1))
推荐阅读
- serialization - 杰克逊序列化问题
- python - Python AttributeError:“str”对象没有属性“_sa_instance_state”
- python - 在以下示例中,在 python 中插入语句到 mysql 中的错误是什么?
- javascript - Discord.js 无法读取属性“名称”
- php - 为什么我的 php 文件无法识别会话?
- sql - 两个相同表之间的联合,每个表位于不同的数据库和连接(主机、用户、密码等)
- pandas - Pandas 中的 Groupby 和 Count 基于 DataFrame 中的值
- python - 如何在 Python 多处理中指定某个关键字参数
- go - Memcached Ping() 不会在无效服务器上返回错误
- javascript - React 更新了什么?