【问题标题】:Please explain these commands in the code请在代码中解释这些命令
【发布时间】:2018-02-19 19:17:23
【问题描述】:
n=int(input("Enter number of rows: "))
a=[]
for i in range(n):
    a.append([])
    a[i].append(1)
    for j in range(1,i):
        a[i].append(a[i-1][j-1]+a[i-1][j])
    if(n!=0):
        a[i].append(1)
for i in range(n):
    print("   "*(n-i),end=" ",sep=" ")
    for j in range(0,i+1):
        print('{0:6}'.format(a[i][j]),end=" ",sep=" ")
    print()

我的问题: 1-请解释第 7 行的附加索引(我不明白它试图用a[i-1][j-1]+a[i-1][j] 说什么

2-为什么我们需要在最后放一个空打印? print()

【问题讨论】:

  • "为什么我们需要在最后放一个空的打印?print()"你不需要做任何事情,但是一个空的print打印一个换行符,所以大概是编写该代码的人打算打印一个换行符。
  • 但本质上“a[i].append(a[i-1][j-1]+a[i-1][j])”是帕斯卡递归定义的表达式三角形,简单地说,每个数字是它上面两个数字的总和,即upload.wikimedia.org/wikipedia/commons/0/0d/…

标签: python arrays python-3.x


【解决方案1】:

显然,这段代码生成了帕斯卡三角形的 ASCII 版本。

$ python3 testing.py
Enter number of rows: 5
                     1 
                  1      1 
               1      2      1 
            1      3      3      1 
         1      4      6      4      1 

1)。代码在这里:

a[i-1][j-1]+a[i-1][j] 

将第一行第一列数与第一行第二列数相加,生成帕斯卡三角形。

2)。此处声明:

print()

打印一个换行符。

【讨论】:

  • 我不明白a[i-1][j-1]+a[i-1][j] 在做什么。我在哪里可以获得有关此语法的详细信息?
  • a[i][j] 正在访问数组中的第 i 行和第 j 列。
  • [i-1] 不是 i-to-1,而是 i 减 1。
  • 而我们为什么要做 [i-1][j-1] 我们将它们相乘还是……?
  • 它不是乘法,而是一个坐标,例如 a[1][3] 是数组中 (1,3) 的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多