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

介绍

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

202.png

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

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程