Python程序打印帕斯卡三角形

Python程序打印帕斯卡三角形

在本教程中,我们将讨论如何使用Python程序打印帕斯卡三角形。但首先,让我们了解帕斯卡三角形是什么。

介绍

帕斯卡三角形是数学中一个令人兴奋的概念,它通过将前一行中的相邻元素相加形成一个三角形数组。简单来说,每个数字都是通过取相邻行的和来生成的,并且三角形的外边缘始终为1。它以著名的法国数学家布莱兹·帕斯卡命名。下面是帕斯卡三角形的表示。

Python程序打印帕斯卡三角形

在上图中,第一行是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)。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程