Python程序打印帕斯卡三角形
在本教程中,我们将讨论如何使用Python程序打印帕斯卡三角形。但首先,让我们了解帕斯卡三角形是什么。
介绍
帕斯卡三角形是数学中一个令人兴奋的概念,它通过将前一行中的相邻元素相加形成一个三角形数组。简单来说,每个数字都是通过取相邻行的和来生成的,并且三角形的外边缘始终为1。它以著名的法国数学家布莱兹·帕斯卡命名。下面是帕斯卡三角形的表示。
在上图中,第一行是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()
输出:
案例 – 1
Enter the number: 4
1
1 1
1 2 1
1 3 3 1
我们再次运行程序。
案例 -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循环,将子列表添加到空列表中。接下来的一个被添加到所有的子列表中。内部的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
C = C * (i - j) // j
print()
上述方法的时间复杂度是O(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))))
输出:
案例 -1:
Enter the number of rows: 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
案例 – 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的情况。它的执行时间较短,为O(N)。