python - python, 练习, for 循环
问题描述
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)
我怎样才能找到这个三角形的最后一行的总和?您的函数必须返回三角形最后一行的所有整数的总和。例如
高度 = 4 时为 16,高度 = 2 时为 4,高度 = 7 时为 49。您的函数必须使用另一个名为 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
循环内部,而是首先创建整行,并且只有在到达三角形的最后一行(即“高度”)时,才计算该行的总和。
这是一个简化的方法,带有注释来解释一些逻辑:
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
推荐阅读
- node.js - Puppeteer 登录 TikTok
- shell - Unix shell 脚本 - 读取具有日期到期的文件并在达到 x 天时通知 -
- dm-script - 将 ROI 添加到 1D 图像(强度图等)
- mysql - 我可以运行 Docker 容器以在另一个 Google Cloud Build 步骤中使用吗?
- azure-storage - 是 Azure 存储共享访问签名 (SAS) REST API 所需的授权标头
- java - 在 Thymeleaf 中选择选项过滤
- python - Python PyPDF2 - getpage 多页
- python - 使用 Google OAuth API 使用 SSO 配置超集 - 缺少范围参数?
- python-3.x - 为什么我收到 ImportError ../lib/libgobject-2.0.so.0: undefined symbol: g_uri_ref based on import of order?
- jquery - AJAX GET返回错误>请求的资源不支持http方法'GET'