鱼C论坛

 找回密码
 立即注册
查看: 1826|回复: 2

[已解决]纠结

[复制链接]
发表于 2022-8-3 12:25:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 初始化杨辉三角形
# 创建一个10*10的二维列表,并将所有的元素初始化为0
triangle = []
for i in range(10):
    triangle.append([])
    for j in range(10):
        triangle[i].append(0)
   
# 计算杨辉三角形
# 根据观察,我们知道杨辉三角形左右两边的元素均为1
for i in range(10):
    triangle[i][0] = 1
    triangle[i][i] = 1                                                                  
   
# 第i行j列的值 = 第(i-1)行(j-1)列的值 + 第(i-1)行(j)列的值
for i in range(2, 10):                                                                  ###第一行只有一个1所以从第二行到第十行需要计算,这个我懂。
    for j in range(1, i):                                                                 ###这句话我不太理解什么是(1,i)。
        triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
   
# 输出杨辉三角形
for i in range(10):
    for j in range(i+1):
        print(triangle[i][j], end='  ')
    print()
最佳答案
2022-8-3 13:43:11
本帖最后由 jackz007 于 2022-8-3 14:24 编辑

         当然是指循环变量 j 的变化范围是从 1 到 i 了(不包括 i)。
def yang(n):
    r = [[1 for j in range(i + 1)] for i in range(n)]
    for i in range(2 , n):
        for j in range(1 , i):
            r[i][j] = r[i - 1][j - 1] + r[i - 1][j]
    return r

n = int(input('输入 n : ') . strip())
d = yang(n)
for i in range(n):
    s = ' ' * (n - i - 1) * 2 + '%3d' % d[i][0]
    for j in range(1 , i + 1):
        s += ' %3d' % d[i][j]
    print(s)
        运行实况:
D:\[00.Exerciese.2022]\Python>python yang.py
输入 n : 7
              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    1   5  10  10   5   1
  1   6  15  20  15   6   1

D:\[00.Exerciese.2022]\Python>python yang.py
输入 n : 12
                        1
                      1   1
                    1   2   1
                  1   3   3   1
                1   4   6   4   1
              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
    1  10  45 120 210 252 210 120  45  10   1
  1  11  55 165 330 462 462 330 165  55  11   1

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-3 13:43:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-8-3 14:24 编辑

         当然是指循环变量 j 的变化范围是从 1 到 i 了(不包括 i)。
def yang(n):
    r = [[1 for j in range(i + 1)] for i in range(n)]
    for i in range(2 , n):
        for j in range(1 , i):
            r[i][j] = r[i - 1][j - 1] + r[i - 1][j]
    return r

n = int(input('输入 n : ') . strip())
d = yang(n)
for i in range(n):
    s = ' ' * (n - i - 1) * 2 + '%3d' % d[i][0]
    for j in range(1 , i + 1):
        s += ' %3d' % d[i][j]
    print(s)
        运行实况:
D:\[00.Exerciese.2022]\Python>python yang.py
输入 n : 7
              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    1   5  10  10   5   1
  1   6  15  20  15   6   1

D:\[00.Exerciese.2022]\Python>python yang.py
输入 n : 12
                        1
                      1   1
                    1   2   1
                  1   3   3   1
                1   4   6   4   1
              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
    1  10  45 120 210 252 210 120  45  10   1
  1  11  55 165 330 462 462 330 165  55  11   1

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-4 12:26:57 | 显示全部楼层
jackz007 发表于 2022-8-3 13:43
当然是指循环变量 j 的变化范围是从 1 到 i 了(不包括 i)。

        运行实况:

哥,这个i 我还是不懂(1,i)。我的理解是吧i改成10,就是(1,10)。
这样好像也可以运行。
抱歉老哥,我是菜鸟........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表