前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|等腰三角形

Python|等腰三角形

作者头像
算法与编程之美
发布2021-04-22 14:51:14
8960
发布2021-04-22 14:51:14
举报
文章被收录于专栏:算法与编程之美

本题目要求你在控制台输出一个由数字组成的等腰三角形。

1. 先用1,2,3,...的自然数拼一个足够长的串

2. 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。

比如,当三角形高度是8时:

1

2 1

3 8

4 1

5 7

6 1

7 6

891011121314151

要求:空格一律用"."代替。

输入格式:

一个正整数n(3<n<300),表示三角形的高度

输出格式:

用数字填充的等腰三角形。

输入样例:

5

输出样例:

....1

...2.1

..3...2

.4.....1

567891011

输入样例:

10

输出样例:

.........1

........2.2

.......3...2

......4.....2

.....5.......1

....6.........2

...7...........0

..8.............2

.9...............9

1011121314151617181

解决方案

(1)确定三角形拼接的范围:因为三角形是一个自然数拼接成的串,所以我们先确定不同层数对应到的自然数,观察两个案例(从上到左下到右再到上)可知:5层到13,10层到23(均未到最后一个自然数的最后一个值是因为第一层只有一个自然数)。所以n层则会从1拼接到2n+3。

(2)每一行第一个数字前的空格数:观察题目给出的两个输出案例可以发现每一行第一个数前面的空格数为输出三角形的高(n) - 第几层。

(3)每一行的第一个数刚好和层数相等。

(4)第2到第n层两个数之间的空格数:从第二层开始所以有i-2,每一层增加两个即(i-2)* 2,又因起始数量为1,所以规律是(i-2)* 2 – 1。

(5)第2到第n层第二个数的确定:因为从上到下的第二个数字是拼接的串的逆序且第一层只有一个数字,所以第n层的第二个数字为拼接串的倒数第n个数字。

(6)最后一层即为拼接串的第n个数到倒数第n个数。

解决代码

n = int(input())lis1 = "".join(str(i) for i in range(1, 2 * n + 4))print("." * (n - 1) + lis1[0]) # 第一层for i in range(2, n): # 第2到n-1层 print("." * (n - i) + lis1[i-1] + "." * ((i - 2) * 2 + 1) + lis1[-i])print(lis1[n - 1: -n+1]) # 最后一层

运行实例

结语

本题的关键在于寻找三角形中存在的多个规律。

主编:欧洋

稿件来源:深度学习与文旅应用实验室(DLETA)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档