【python蓝桥杯】等腰三角形

核心思路:

1.将所有数以字符串保存在列表

2.将各个数拆成单个字符

3.一行一行填充(其中尾行单独填充)

4.列表再转化为字符串,统一输出格式

详细思路在代码注释:

#等腰三角形
n = int(input())
#n = 10
#end为观察得知,n与三角形个数的关系
end = (n-2)*2+n*2
#保存需要的字符,将每个数字当成字符串判断
m = []
#将每个数字加入列表,如['9','10','11']
for i in range(1,end):
    m.append(str(i))
    #判断是否大于等于所需要的个数,
    if len(''.join(m)) >= end:
        break

#将每个数字拆分,如['9','10','11']拆成['9','1','0','1','1']        
m = list(''.join(m))[:end]
#print(m)

#观察得知,其'.'与行数的关系,即有n行,每行有n+i个值(包括数字,先默认为'.')
ans = []
for i in range(n):
    ans.append(list('.'*(n+i)))
#print(ans[0])

#开始同时填充等腰的两条边
#主要观察
k = 0
for i in range(len(ans)):
    #第一行规律与其它行不同,只用填充一个值
    if i == 0:
        #观察发现填充的位置,如n=10,ans[0][9] = m[0],符合
        ans[i][n-1-i] = m[k]
    else:
        #其它行数,可以同时由两边往中间填,其观察得到规律如下
        ans[i][n-1-i] = m[k]
        ans[i][n-1+i] = m[len(m)-k]
    k += 1
#print(ans)

#最后填充底边
for i in range(1,2*n-1):
    ans[-1][i] = m[k]
    k += 1
#整理格式,将列表变为字符串,输出
for x in ans:
    print(''.join(map(str,x)))

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值