欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

疯狂python讲义第4章第11题

程序员文章站 2022-07-12 22:55:14
...

没转换成字母,就按数字来做

--------5--------
------5-4-5------
----5-4-3-4-5----
–5-4-3-2-3-4-5–
5-4-3-2-1-2-3-4-5
–5-4-3-2-3-4-5–
----5-4-3-4-5----
------5-4-5------
--------5--------

思路是把整体分为两部分,第一部分是前n行,第二部分是n+1到2n-1行。

然后每一行又分为4个部分,第一部分是左边的‘—’;第二部分是n的倒序插入‘-’,可用列表或字符串实现;第三部分是n的顺序插入‘-’,第二和第三部分可先合并在一起再插入‘-’;第四部分是右边的‘----’。

n=5
#上半部分,把每一列分为4部分打印出来

for i in range(n):
	#第一部分
	print('-'*(2*n-2*i-2),end='')
	#第二部分
	a=''
	for j in range(n,n-i-1,-1):
		a+=str(j)
	#第三部分
	for k in range(n-i+1,n+1):
		a+=str(k)
	print('-'.join(a),end='')
	#第四部分
	print('-'*(2*n-2*i-2))


#下半部分

for i in range(n-1):
	print('-'*(2*i+2),end='')
	b=''
	for j in range(n,i+1,-1):
		b+=str(j)
	for k in range(i+3,n+1):
		b+=str(k)
	print('-'.join(b),end='')
	print('-'*(2*i+2))