跳到主要内容

Python 程序创建金字塔图案

要理解这个示例,你应该了解以下 Python 编程 主题的知识:

| 源代码列表 | | 使用 *、数字和字符打印三角形的代码 | | 使用 * 和数字打印倒三角形的代码 | | 打印完整金字塔的代码 | | 打印帕斯卡三角形的代码 | | 打印弗洛伊德三角形的代码 |

使用 *、数字和字符打印三角形的程序

示例 1:使用 * 打印半金字塔程序

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

源代码

rows = int(input("请输入行数:"))

for i in range(rows):
for j in range(i + 1):
print("* ", end="")
print("\n")

在上述程序中,让我们看看如何打印图案。

  • 首先,我们从用户那里获取金字塔的高度 rows
  • 在第一个循环中,我们从 i = 0 迭代到 i = rows
  • 第二个循环从 j = 0 运行到 i + 1。在这个循环的每次迭代中,我们打印 i + 1*,不换行。这里,行号给出了该行需要打印的 * 数量。例如,在第 2 行,我们打印两个 *。同样,在第 3 行,我们打印三个 *
  • 内循环结束后,我们打印新行并开始在新行中打印 *。

示例 2:使用数字打印半金字塔的程序

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

源代码

rows = int(input("请输入行数:"))

for i in range(rows):
for j in range(i + 1):
print(j + 1, end=" ")
print("\n")

在上述程序中,让我们看看如何打印图案。

  • 首先,我们从用户那里获取金字塔的高度 rows
  • 在第一个循环中,我们从 i = 0 迭代到 i = rows
  • 在第二个循环中,我们从 1 开始打印数字,直到 j,其中 j 的范围从 0i
  • 第一个循环的每次迭代后,我们打印一个新行。

示例 3:使用字母打印半金字塔的程序

A
B B
C C C
D D D D
E E E E E

源代码

rows = int(input("请输入行数:"))

ascii_value = 65

for i in range(rows):
for j in range(i + 1):
alphabet = chr(ascii_value)
print(alphabet, end=" ")

ascii_value += 1
print("\n")

上述示例的工作原理与前面讨论的其他示例类似,不同之处在于这里打印了 ascii 值。字母的 ascii 值从 65 (即 A)开始。因此,在每次迭代中,我们增加 ascii_value 的值并打印其对应的字母。

使用 * 和数字打印倒半金字塔的程序

示例 4:使用 * 打印倒半金字塔

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

源代码

rows = int(input("请输入行数:"))

for i in range(rows, 0, -1):
for j in range(0, i):
print("* ", end=" ")

print("\n")

这个示例与直立金字塔类似,不同之处在于这里我们从总的 rows 数开始,并且在每次迭代中将 rows 的数量减少 1。

示例 5:使用数字打印倒半金字塔

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

源代码

rows = int(input("请输入行数:"))

for i in range(rows, 0, -1):
for j in range(1, i + 1):
print(j, end=" ")

print("\n")

直立和倒立金字塔使用数字的唯一区别是第一个循环从总的 rows 数到 0 开始。

打印完整金字塔的程序

示例 6:使用 * 打印完整金字塔程序

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

源代码

rows = int(input("请输入行数:"))

k = 0

for i in range(1, rows + 1):
for space in range(1, (rows - i) + 1):
print(end=" ")

while k != (2 * i - 1):
print("* ", end="")
k += 1

k = 0
print()

这种类型的金字塔比我们上面学习的更复杂。

  • 最外层循环从 i = 1i = row + 1
  • 在两个内部循环中,for 循环使用公式 (rows - i) + 1 打印每行所需的空格,其中 rows 是总行数,i 是当前行号。
  • while 循环使用公式 2 * i - 1 打印所需数量的星星。这个公式给出了每行的星星数量,其中行是 i

示例 7:数字完整金字塔

 1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5

源代码

rows = int(input("请输入行数:"))

k = 0
count = 0
count1 = 0

for i in range(1, rows + 1):
for space in range(1, (rows - i) + 1):
print(" ", end="")
count += 1

while k != ((2 * i) - 1):
if count <= rows - 1:
print(i + k, end=" ")
count += 1
else:
count1 += 1
print(i + k - (2 * count1), end=" ")
k += 1

count1 = count = k = 0
print()

与示例 6 类似,这个示例也在一个 for 循环内使用了两个循环。

  • 外部 for 循环遍历每一行。
  • 这里我们使用两个计数器 countcount1 分别打印空格和数字。
  • 内部 for 循环使用公式 (rows - i) + 1 打印所需的空格,其中 rows 是总行数,i 是当前行号。
  • while 循环打印数字,其中 2 * i - 1 给出了每行的项目数量。

示例 8:* 的倒立完整金字塔

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

源代码

rows = int(input("请输入行数:"))

for i in range(rows, 1, -1):
for space in range(0, rows - i):
print(" ", end="")
for j in range(i, 2 * i - 1):
print("* ", end="")
for j in range(1, i - 1):
print("* ", end="")
print()

在这个示例中,我们使用了总共 4 个 for 循环。

  • 外部 for 循环从 i = rows 迭代到 i = 1
  • 第一个内部 for 循环打印每行所需的空格。
  • 第二个内部 for 循环打印金字塔的前半部分(垂直切割),而最后一个内部 for 循环打印另一半。

示例 9:帕斯卡三角形

 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

源代码

rows = int(input("请输入行数:"))
coef = 1

for i in range(1, rows + 1):
for space in range(1, rows - i + 1):
print(" ", end="")
for j in range(0, i):
if j == 0 or i == 0:
coef = 1
else:
coef = coef * (i - j) // j
print(coef, end=" ")
print()

在这个示例中,我们使用了三个 for 循环。

  • 外部循环从 1 迭代到 rows + 1
  • 第一个内部循环打印空格。
  • 第二个内部循环首先使用语句 coef = coef * (i - j) // j 找出要打印的数字,然后打印它。这里,i 是行号,j 是从 0i 的值。

示例 10:弗洛伊德三角形

1
2 3
4 5 6
7 8 9 10

源代码

rows = int(input("请输入行数:"))
number = 1

for i in range(1, rows + 1):
for j in range(1, i + 1):
print(number, end=" ")
number += 1
print()

这是最简单的图案之一。

  • number 变量初始化为值 1。
  • 外部 for 循环从 1 迭代到总行数。
  • 内部 for 循环从 1 开始到 i + 1,其中 i 是行号。每次迭代后,number 的值增加。