马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
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换行。
|