Python 中的数字模式

2024 年 08 月 29 日 | 阅读 9 分钟

编程很有趣,不是吗? 当我们发挥创造力时,我们可以从中获得更多乐趣。 打印到指定数字的自然数并没有那么有趣,但如果我们能创建数字视觉金字塔怎么办? 听起来很有趣?

本文包含使用 Python 编程可以创建的 10 种不同数字模式的逻辑。 玩得开心!

1. 具有给定行数的简单半金字塔数字

输出应如下所示

请输入需要多少行:5

1
2 2
3 3 3 
4 4 4 4 
5 5 5 5 5

程序

理解

我们从用户那里获取了行数。 假设用户输入了行数:5。 在第一个 for 循环中,我们迭代了要打印的数字,从 1 到行数(5)。 在第二个循环中,我们迭代了行。 Print() 用于在一行后移到下一行。

机制表

i 的值j 的值打印说明
i = 0j = --不打印任何内容
i = 1j = 01在第一行打印 1,移至下一行
i = 2j = 0, 12 2打印 2 次(请注意,我们打印的是 i 的值,而不是 j 的值)
i = 3j = 0, 1, 23 3 3打印 3 次
i = 4j = 0, 1, 2, 34 4 4 4打印 4 次
i = 5j = 0, 1, 2, 3, 45 5 5 5 5打印 5 次(i 得到 5,因为我们给出了 range(rows+1))

2. 具有给定行数的倒置简单半金字塔

输出应如下所示

请输入需要多少行:5

1 1 1 1 1 
2 2 2 2 
3 3 3 
4 4 
5

程序

理解

我们需要行以相反的顺序排列。 因此,我们在 range() 中将 -1 作为步长参数。 我们使用 num 变量来使数字在反向 for 循环中保持正确的升序 - 这是用于数字迭代的。

i 的值j 的值num 的值打印
i = 5j = 1, 2, 3, 4, 511 1 1 1 1
i = 4j = 1, 2, 3, 422 2 2 2
i = 3j = 1, 2, 333 3 3
i = 2j = 1, 244 4
i = 1j = 155

3. 具有升序数字的半金字塔

输出应如下所示

请输入需要多少行:5

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

程序

理解

这里,i 表示行迭代,j 表示列迭代。

i 的值j 的值打印
111
21, 21 2
31, 2, 31 2 3
41, 2, 3, 41 2 3 4
51, 2, 3, 4, 51 2 3 4 5

请注意,我们打印的是 j 的值。

4. 倒置简单半金字塔降序数字

输出应如下所示

请输入需要多少行:5

5 5 5 5 5
4 4 4 4
3 3 3
2 2
1

程序

理解

我们从用户那里获取了行数。 我们以相反的顺序从行数迭代 i 到 0,因为我们需要金字塔是倒置的。 然后,我们使用普通的 for 循环来迭代行中的位置。 在从 0 到 i 的迭代过程中,i 的值会不断变化,但我们需要在整行中保持相同的值; 因此,我们将 i 存储在 num 中并打印它。

机制表

i 的值j 的值num 的值打印
50, 1, 2, 3, 455 5 5 5 5
40, 1, 2, 344 4 4 4
30, 1, 2 333 3
20, 122 2
1011

5. 相同数字的倒置半金字塔

输出应如下所示

请输入需要多少行:5

5 5 5 5 5
5 5 5 5
5 5 5
5 5
5

程序

理解

我们需要在整个半金字塔中打印用户输入的行号。 因此,我们将行数存储在 num 中,然后每次都打印它。

机制表

num 的值i 的值j 的值打印
550, 1, 2, 3, 45 5 5 5 5
40, 1, 2, 35 5 5 5
30, 1, 25 5 5
20, 15 5
105

6. 数字模式的倒置半金字塔

输出应如下所示

请输入需要多少行:5

 1 2 3 4 5
1 2 3 4
1 2 3
1 2
1

程序

理解

我们需要每行中的数字按升序排列,并且金字塔需要是倒置的,为此我们使用了倒置的 for 循环,并在内部 for 循环中,我们迭代了从 1 到 i+1 的自然数来打印数字。

机制表

i 的值j 的值打印
51 2 3 4 51 2 3 4 5
41 2 3 41 2 3 4
31 2 31 2 3
21 21 2
111

请注意,这里我们在内部循环中打印了 j 的值。

7. 倒序数字半金字塔

请输入需要多少行:5

1 
2 1 
3 2 1 
4 3 2 1
5 4 3 2 1

程序

理解

我们需要数字按降序排列。 因此,我们使用反向 for 循环作为内部循环。 我们迭代 i 从 1 到行数 + 1 来获取行中的位置,内部循环用于打印数字。

机制表

i 的值j 的值打印
111
22 12 1
33 2 13 2 1
44 3 2 14 3 2 1
55 4 3 2 15 4 3 2 1

8. 升序数字镜像半金字塔

输出

请输入需要多少行:5

              1 
            1 2 
          1 2 3 
        1 2 3 4 
      1 2 3 4 5

程序

理解

我们需要了解在哪里打印空格以及在哪里打印数字。 我们增加 num 值以获得升序。 我们迭代 i,从 1 到 rows + 1 来表示行。 在每一行中,我们需要所有位置。 因此,无论行号如何,我们都以相反的顺序迭代 j。 在循环内部,我们检查 j 的值是否大于 i,以确定是打印空格还是数字。

机制表

i 的值

j 的值num 的值:num,num +=1条件 (j > i)打印
15, 4, 3, 2, 115, 4, 3, 2空格
11
25, 4, 3, 2, 11, 25, 4, 3空格
2, 11 2
35, 4, 3, 2, 11, 2, 35, 4间距
3, 2, 11 2 3
45, 4, 3, 2, 11, 2, 3, 45间距
4, 3, 2, 11 2 3 4
55, 4, 3, 2, 11, 2, 3, 4, 5-无空格
5, 4, 3, 2, 11 2 3 4 5

9. 水平表格半金字塔

输出

请输入需要多少行:5

0
0 1
0 2 4
0 3 6 9
0 4 8 12 16

程序

理解

在第一个 for 循环中,我们迭代了 i - 我们想要打印的乘法表。 这与打印正常的简单金字塔相同。 唯一的改变是打印乘法 i*j 的值。 在内部循环中,我们迭代了 i - 从 0 到 i 的数字。

机制表

i 的值j 的值打印
000
10, 10 1
20, 1, 20 2 4
30, 1, 2, 30 3 6 9
40, 1, 2, 3, 40 4 8 12 16

10. 交替数字半金字塔

输出

请输入需要多少行:5

1
3 3
5 5 5
7 7 7 7
9 9 9 9 9

程序

理解

这里,我们使用了 while 循环。 它与正常的简单数字金字塔几乎相同; 唯一的改变是我们想要打印交替的数字,为此我们使用了 - i * 2 - 1。

机制表

i 的值j 的值打印
111
21, 23 3
31, 2, 35 5 5
41, 2, 3, 47 7 7 7
51, 2, 3, 4, 59 9 9 9 9

奖励乐趣

这是面试中也要求的一种特殊类型的金字塔。 利用迄今为止获得的知识来理解代码。

输出

请输入需要多少行:5

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

程序

享受你的工作会让你觉得工作更有趣。 如果你认为编程很复杂,它就会一直如此。 但是,如果你喜欢写代码,它将成为你的 PS5。

试着从你周围创造更多图案。 向世界学习。

享受编码……