Python教程-Python程序打印帕斯卡三角形
在本教程中,我们将讨论如何使用Python程序打印帕斯卡三角形。但首先,让我们了解一下什么是帕斯卡三角形。
介绍
帕斯卡三角形是数学中一个令人兴奋的概念,它是通过对前一行的相邻元素求和而形成的三角形数组。简单来说,每个数字都是通过取相邻行的和来生成的,三角形的外边缘始终为1。它以著名的法国数学家布莱兹·帕斯卡(Blaise Pascal)命名。下面是帕斯卡三角形的表示。
在上图中,第一行是1。第二行包含2个1,第三行是1 2 1,它是通过取上一行的和形成的。因此,整个三角形都遵循交替模式,依此类推。
在Python中打印帕斯卡三角形的算法
以下是打印帕斯卡三角形所使用的步骤。
步骤 - 1: 从用户获取输入以获取行数。
步骤 - 2: 声明一个空列表,用于存储值。
步骤 - 3: 使用for循环,该循环将迭代0到n - 1,将子列表附加到列表中。
步骤 - 4: 现在向列表附加1。
步骤 - 5: 现在,使用for循环来定义三角形中相邻行内的数字的值。
步骤 - 6: 根据格式打印帕斯卡三角形。
步骤 - 7: 退出
让我们了解将算法实现到Python程序中的以下内容。
程序
num = int(input("Enter the number: "))
list1 = [] #an empty list
for i in range(num):
list1.append([])
list1[i].append(1)
for j in range(1, i):
list1[i].append(list1[i - 1][j - 1] + list1[i - 1][j])
if(num != 0):
list1[i].append(1)
for i in range(num):
print(" " * (num - i), end = " ", sep = " ")
for j in range(0, i + 1):
print('{0:6}'.format(list1[i][j]), end = " ", sep = " ")
print()
输出:
Case - 1
Enter the number: 4
1
1 1
1 2 1
1 3 3 1
我们再次运行程序。
Case - 2:
Enter the number: 10
1
1 1
1 2 1
1 3 3 1
1 4 6 4
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
说明 -
在上面的程序中,我们从用户那里获取了多行输入。我们声明了一个空列表。然后我们使用for循环,它将子列表附加到空列表中。下一个1附加到所有子列表中。内部for循环定义了三角形内部的数字是上面相邻行的和。最后,我们使用for循环按照格式打印帕斯卡三角形。
方法 - 2:
我们可以使用另一种方法,按照组合系数的方式,所有行都以1开始,行数线的第i个条目是二项式系数C(line, i)。公式如下所示。
C(line, i) = C(line, i-1) * (line - i + 1) / i
示例 -
# input n
n = int(input("Enter the number of rows:"))
for i in range(1, n+1):
for j in range(0, n-i+1):
print(' ', end='')
# first element is always 1
C = 1
for j in range(1, i+1):
# first value in a line is always 1
print(' ', C, sep='', end='')
# using Binomial Coefficient
CC = C * (i - j) // j
print()
上述方法的时间复杂度为0(N2)。
方法 - 3
这种方法是以11的幂为基础的帕斯卡三角形的优化方式。
11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331
示例 -
# input n
n = int(input("Enter the number of rows:"))
# iterarte upto n
for i in range(n):
# adjust space
print(' '*(n-i), end='')
# compute power of 11
print(' '.join(map(str, str(11**i))))
输出:
Case - 1:
Enter the number of rows: 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Case - 2:
Enter the number of rows: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 6 1 0 5 1
正如我们在上述代码中所看到的,当我们输入行数为5时,它给出了错误的输出。这意味着它仅在n<=5的情况下工作。它执行的时间较短,为0(N)。