鱼C论坛

 找回密码
 立即注册
查看: 1870|回复: 1

[已解决]杨辉三角中的问题

[复制链接]
发表于 2020-7-17 09:47:55 | 显示全部楼层 |阅读模式

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

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

x
看到一杨辉三角的程序,对里面很多代码不太理解,希望大佬能指点一下:

1.  yh = [[]] * num    意思是   yh是一个有num个元素的列表?[[]]表示每个元素有行、列两个参数吗?
2.  print(yh[row][col], end='\t')  意思是 打印出数字,最后的 end='\t' 是制表符的意思嘛? 有了它好像就会打印到一行而不是每次都换行了,\t 都有哪些作用呢?
3. 最后的print()有什么作用呢?有了它好像会自动换行了,但是为什么一个普通的print就能自动换行啊?而且没有打印任何东西

写的注释如果有错的,也请大佬指正一下,谢谢!
def main():
    num = int(input('Number of rows: '))
    yh = [[]] * num                    # ? yh是一个有num个元素的列表?[[]]表示每个元素有行列两个参数?不太理解
    for row in range(len(yh)):
        yh[row] = [None] * (row + 1)  # 第n行有n+1个元素
        for col in range(len(yh[row])): # 对于第n行的每一列的元素,
            if col == 0 or col == row:  # 如果处在第一列(0),或者最后一列(n+1)
                yh[row][col] = 1       # 则元素等于1
            else:                      # 否则
                yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1] # 该元素等于上一行同位置元素与上一行前一位元素之和
            print(yh[row][col], end='\t')  # ? 打印出数字,制表符?了它好像就会打印到一行而不是每次都换行了,\t 都有哪些作用呢?
        print()   # ? 不太明白是什么意思,为什么这里有一个print 有了它好像会自动换行了,但是为什么一个普通的print就能自动换行啊?而且没有打印任何东西


if __name__ == '__main__':
    main()
最佳答案
2020-7-17 10:24:53
1.  yh = [[]] * num    意思是   yh是一个有num个元素的列表?[[]]表示每个元素有行、列两个参数吗?
2.  print(yh[row][col], end='\t')  意思是 打印出数字,最后的 end='\t' 是制表符的意思嘛? 有了它好像就会打印到一行而不是每次都换行了,\t 都有哪些作用呢?
3. 最后的print()有什么作用呢?有了它好像会自动换行了,但是为什么一个普通的print就能自动换行啊?而且没有打印任何东西
1,你的解释不太明确,你想知道这代码是什么意思,首先要了解这个代码是什么解题思路。作者的思路应该是:
定义一个yh列表,列表内每个元素也是一个列表。既例如:yh=[[1],[1,2],[1,2,3]],此时通过列表的特性yh[0][0]就等于1,yh[2][2]=3,相当于可以实现类似与杨辉三角的二维排列形式,也就是你所说的每个元素有行、列两个参数(不是因为[[]]代码赋予了行列,而是做着解题思路人为赋予的)

2,第一个需要明白一个知识点,print()是有参数的,默认end='\n'既换行符,那我们沿着做着思路,此时要打印出类似三角形的形状肯定不能采取默认的换行,而是需要用\t制表符,使每列之间TAB隔开;

3,看第二个的解释就明白了,每个列质检采取\t空出来了,那么自然,每行之间就需要默认的\n换行。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-17 10:24:53 | 显示全部楼层    本楼为最佳答案   
1.  yh = [[]] * num    意思是   yh是一个有num个元素的列表?[[]]表示每个元素有行、列两个参数吗?
2.  print(yh[row][col], end='\t')  意思是 打印出数字,最后的 end='\t' 是制表符的意思嘛? 有了它好像就会打印到一行而不是每次都换行了,\t 都有哪些作用呢?
3. 最后的print()有什么作用呢?有了它好像会自动换行了,但是为什么一个普通的print就能自动换行啊?而且没有打印任何东西
1,你的解释不太明确,你想知道这代码是什么意思,首先要了解这个代码是什么解题思路。作者的思路应该是:
定义一个yh列表,列表内每个元素也是一个列表。既例如:yh=[[1],[1,2],[1,2,3]],此时通过列表的特性yh[0][0]就等于1,yh[2][2]=3,相当于可以实现类似与杨辉三角的二维排列形式,也就是你所说的每个元素有行、列两个参数(不是因为[[]]代码赋予了行列,而是做着解题思路人为赋予的)

2,第一个需要明白一个知识点,print()是有参数的,默认end='\n'既换行符,那我们沿着做着思路,此时要打印出类似三角形的形状肯定不能采取默认的换行,而是需要用\t制表符,使每列之间TAB隔开;

3,看第二个的解释就明白了,每个列质检采取\t空出来了,那么自然,每行之间就需要默认的\n换行。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 23:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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