马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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):
for j in range(1, i):
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
# 输出杨辉三角形
for i in range(10):
# 因为是三角形,所以i越小,前边需要填充的TAB越多
for k in range((10-i)//2):
print('\t', end='')
for j in range(i+1):
# 要形成“隔行错开”的效果,所以我们在偶数行加4个空格
if i % 2 == 1:
print(" ", end='')
# 为何要使用TAB而非空格,大家可以将下面的end='\t'改成对应的空格数即可知晓
print(triangle[i][j], end='\t')
print()
问题1.trangle[i],这个trangle不是已经是列表了吗,加[i]是什么意思啊!
2.输出三角形部分
虽然有注释,但还是不太理解怎么打的意思。
3.就是求教学习编程有什么好的方法,后面看到题没有思路
1.trangle[i],这个trangle不是已经是列表了吗,加[i]是什么意思啊!
list[i]表示为索引
我们打印一下triangle
- >>> triangle
- [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 2, 1, 0, 0, 0, 0, 0, 0, 0], [1, 3, 3, 1, 0, 0, 0, 0, 0, 0], [1, 4, 6, 4, 1, 0, 0, 0, 0, 0], [1, 5, 10, 10, 5, 1, 0, 0, 0, 0], [1, 6, 15, 20, 15, 6, 1, 0, 0, 0], [1, 7, 21, 35, 35, 21, 7, 1, 0, 0], [1, 8, 28, 56, 70, 56, 28, 8, 1, 0], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]
- >>> triangle[0] #列表triangle中第0个元素
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- >>> triangle[1] #列表triangle中第1个元素
- [1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
- >>> triangle[0][0] #列表triangle[0]中第0个元素
- 1
- >>> triangle[0][1] #列表triangle[0]中第1个元素
- 0
复制代码
2.输出三角形部分
虽然有注释,但还是不太理解怎么打的意思。
程序是以for循环 分步运行的
不理解的话每一步for循环都打印一下triangle看看生成了什么东西,最后一步看看怎样打印出来的杨辉三角形
- # 初始化杨辉三角形
- # 创建一个10*10的二维列表,并将所有的元素初始化为0
- triangle = []
- for i in range(10):
- triangle.append([])
- for j in range(10):
- triangle[i].append(0)
- print(triangle)
- print('='*50)
- # 计算杨辉三角形
- # 根据观察,我们知道杨辉三角形左右两边的元素均为1
- for i in range(10):
- triangle[i][0] = 1
- triangle[i][i] = 1
- print(triangle)
- print('='*50)
- # 第i行j列的值 = 第(i-1)行(j-1)列的值 + 第(i-1)行(j)列的值
- for i in range(2, 10):
- for j in range(1, i):
- triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
- print(triangle)
- print('='*50)
- # 输出杨辉三角形
- for i in range(10):
- # 因为是三角形,所以i越小,前边需要填充的TAB越多
- for k in range((10-i)//2):
- print('\t', end='')
- for j in range(i+1):
- # 要形成“隔行错开”的效果,所以我们在偶数行加4个空格
- if i % 2 == 1:
- print(" ", end='')
- # 为何要使用TAB而非空格,大家可以将下面的end='\t'改成对应的空格数即可知晓
- print(triangle[i][j], end='\t')
- print()
复制代码
- [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
- ==================================================
- [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1]]
- ==================================================
- [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 2, 1, 0, 0, 0, 0, 0, 0, 0], [1, 3, 3, 1, 0, 0, 0, 0, 0, 0], [1, 4, 6, 4, 1, 0, 0, 0, 0, 0], [1, 5, 10, 10, 5, 1, 0, 0, 0, 0], [1, 6, 15, 20, 15, 6, 1, 0, 0, 0], [1, 7, 21, 35, 35, 21, 7, 1, 0, 0], [1, 8, 28, 56, 70, 56, 28, 8, 1, 0], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]
- ==================================================
复制代码
3.就是求教学习编程有什么好的方法,后面看到题没有思路
编程嘛,多看多练,熟能生巧。就像久病成医一样,被虐多了,融会贯通自然就会了
|