python, exercise, for loop


def drawTriangle(height):
for i in range(1, height+1):
for j in range(1, height+1-i ):  # for space
print(" ", end = "")
for j in range(1, i+1): # for increasing numbers
print(j, end = "")
for j in range(i-1, 0, -1 ):   # for decreasing numbers
print(j, end = "")
# if i == height:
#    print(j, end = "")
print() # for new lines
for j in range(1, i+1):
if i == height:
print(j, end = "")
sum = j+j
print(sum)
else:
print("", end = "")
for j in range(i-1, 0 , -1):
if i == height:
print(j, end = "")
else:
print("", end = "")
drawTriangle(7)

我如何找到这个三角形最后一行的和?函数必须返回三角形最后一行上所有整数的和。例如

height= 4,4 = height= 2, 49 = height=7。您的函数必须使用另一个名为get_row的函数来确定要打印的行。此函数必须获取行高并返回所需的行。例如,对于row_height=1,它将返回" 1 ";对于row_height=2,它将返回" 1 2 1 ";对于row_height=5,它将返回" 1 2 3 4 5 4 3 2 1 "。

正如评论中提到的,你的方法太复杂了,而且有点矫枉过正。
您还遗漏了问题声明中的一个关键步骤:"您的函数必须使用另一个名为get_row的函数来确定要打印的行。">

不是在循环中计算sum,而是首先创建整个行,只有当你到达三角形的最后一行,即& height"时,才计算该行的和。

下面是用注释解释一些逻辑的简化方法:

def drawTriangle(height):
for step in range(1,height+1):
row = get_row(step)
if step == height:
print(sum(row))
def get_row(step):
row = []
# start building the row of integers 
# from 1 up to this step height
# e.g. [1,2,3,4,5,6,7]
for i in range(1,step+1):
row.append(i)
# then append integers from this height, 
# e.g. 7 (to avoid duplicate from previous loop) down to 1
for i in reversed(range(1, step)):
row.append(i)
return row
drawTriangle(7)

输入7的三角形上的最后一行是[1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1],其总和作为输出返回:

49

注意:正如评论中提到的,通过"第N行和为N*N"来确认这是有意义的:7 x 7 = 49