零基础入门学习python课后题杨辉三角
我感觉代码应该是如图一的,但结果不正确,为什么if语句必须在内层for循环内呢
正确答案如图3 抱歉,你没有提供代码的图示。如果你遇到了关于杨辉三角的问题,请提供你的代码和期望的输出,我会尽力帮助你解决问题。 很抱歉,由于这是一个文本输入环境,我无法查看您提到的图像。然而,我可以根据您提出的问题,给出一些可能的解释。
在实现杨辉三角时,if语句常常被用于控制元素的生成,因此它通常位于内层for循环中。
杨辉三角是这样的一个数列:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
每一行的首位都是1,除此之外的每个数字,都是其正上方的数和左上方的数之和。
用python实现这个数列,代码可能如下:
def generate(numRows):
res = []
for i in range(1, numRows):
res.append([])
for j in range(i + 1):
if j == 0 or j == i:
res[ i].append(1)
else:
res[ i].append(res + res)
return res
这里的if语句被用于判断当前位置是否为每行的首位或末位,是的话直接添加1,不是的话则根据杨辉三角的规则添加数字。
这就是为什么if语句需要在内层for循环内的原因。因为需要针对每一个位置(即内层循环的每一次迭代)进行判断和处理。 本帖最后由 yinda_peng 于 2023-7-18 16:15 编辑
想一想,放外层的话,就只能在偶数行执行一次,那么就只能在第一个元素那里隔开一次,然后第二个元素接着第一个元素,少了空格,就刚好跟后面对齐了没有隔开。
triangle = []
for i in range(10):
triangle.append([])
for j in range(10):
triangle.append(0)
for i in range(10):
triangle = 1
triangle = 1
for i in range(2,10):
for j in range(1,i):
triangle = triangle + triangle
count = 0
for i in range(10):
for k in range((10-i)//2):
print('\t',end = '')
if i % 2 == 1:
print(" ",end = '')
count+=1
for j in range(i+1):
# if i % 2 == 1:
# print(" ",end = '')
# count+=1
print(triangle,end = '\t')
print()
print(count)
用这个代码测试,加了测试值count,你会发现放在外层只执行了5次,而在内层执行了30次 yinda_peng 发表于 2023-7-18 16:10
想一想,放外层的话,就只能在偶数行执行一次,那么就只能在第一个元素那里隔开一次,然后第二个元素接着第 ...
为什么偶数行第二个元素跟第一个元素的间隔只有四个空格呢,第28行代码 print(triangle,end = '\t') 里的\t不应该是八个空格吗
页:
[1]