第024讲:列表(VI) _ 课后测试题的最后一题答案的代码好像有问题
本帖最后由 WENZH 于 2025-8-10 15:06 编辑小甲鱼这一题的代码好像写错了,那么请问一下大家这一题的的代码应该怎么写啊?
# 初始化杨辉三角形
# 创建一个10*10的二维列表,并将所有的元素初始化为0
triangle = []
for i in range(10):
triangle.append([])
for j in range(10):
triangle.append(0)
# 计算杨辉三角形
# 根据观察,我们知道杨辉三角形左右两边的元素均为1
for i in range(10):
triangle = 1
triangle = 1
# 第i行j列的值 = 第(i-1)行(j-1)列的值 + 第(i-1)行(j)列的值
for i in range(2, 10):
for j in range(1, i):
triangle = triangle + triangle
# 输出杨辉三角形
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, end='\t')
print()
这个输出之后的效果是这样的:
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
根据你提供的代码,确实存在多处错误(如列表初始化错误、索引赋值错误、逻辑错误等)。以下是修正后的正确代码,能输出标准的等腰三角形杨辉三角:
# 创建10x10的二维列表并初始化为0
triangle = []
for i in range(10):
row = * 10# 创建一行10个0
triangle.append(row)
# 初始化杨辉三角的边
for i in range(10):
triangle = 1# 每行第一个元素为1
triangle = 1# 每行对角线元素为1
# 计算内部元素
for i in range(2, 10):
for j in range(1, i):
# 当前元素 = 左上角元素 + 上方元素
triangle = triangle + triangle
# 输出杨辉三角
for i in range(10):
# 打印行前空格(居中效果)
for k in range(10 - i):
print("", end="")# 两个空格为一个单位
for j in range(i + 1):
# 打印数字(固定占4位宽度)
print(f"{triangle:4d}", end="")
print()# 换行
输出效果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 51010 5 1
1 6152015 6 1
1 721353521 7 1
1 82856705628 8 1
1 93684 126 1268436 9 1
关键修正点:
1. 列表初始化:使用 row = *10 正确创建子列表
2. 元素赋值:使用 triangle 双索引访问
3. 计算公式:正确使用 triangle + triangle
4. 输出优化:
- 使用 f"{num:4d}" 固定数字宽度
- 行前空格数 = 10 - i(递减)
- 移除原代码中导致错位的隔行空格
> 提示:调整 range(10-i) 中的空格数量可改变三角形位置,调整 :4d 的数字可改变列宽。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]