孜然爱爱 发表于 2020-7-17 09:47:55

杨辉三角中的问题

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

1.yh = [[]] * num    意思是   yh是一个有num个元素的列表?[[]]表示每个元素有行、列两个参数吗?
2.print(yh, 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 + 1)# 第n行有n+1个元素
      for col in range(len(yh)): # 对于第n行的每一列的元素,
            if col == 0 or col == row:# 如果处在第一列(0),或者最后一列(n+1)
                yh = 1       # 则元素等于1
            else:                      # 否则
                yh = yh + yh # 该元素等于上一行同位置元素与上一行前一位元素之和
            print(yh, end='\t')# ? 打印出数字,制表符?了它好像就会打印到一行而不是每次都换行了,\t 都有哪些作用呢?
      print()   # ? 不太明白是什么意思,为什么这里有一个print 有了它好像会自动换行了,但是为什么一个普通的print就能自动换行啊?而且没有打印任何东西


if __name__ == '__main__':
    main()

yhhpf 发表于 2020-7-17 10:24:53

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

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

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


页: [1]
查看完整版本: 杨辉三角中的问题