本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题描述
打印大X
样式要求:
高度=15, 笔宽=3
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*****
***
*****
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
高度=8, 笔宽=5
***** *****
**********
********
******
******
********
**********
***** *****
为了方便检查空格用‘.’代替
解决方案
一个叉大概分三个环节
一是最开始笔宽不交叉中间有空的地方
二是中间交叉但又比笔宽大的地方
三是中间等于笔宽的地方
将三个地方分开实现打印用while循环给定条件就行了。
代码语言:javascript复制h,x=map(int,input().split(' '))
m=h-x-1
i=0
while m>0:
print('.' * i '*'*x "." * (m) '*'*x '.' * i)
m-=2
i =1
s=q=h x-1-2*(i)
while q>=x:
print('.'*i '*'*q '.'*i)
q-=2
i =1
q=q 4
i=i-1
while q<=s:
i=i-1
print('.' * i '*' * q '.' * i)
q =2
m=m 2
i-=1
while m<=h-x-1:
print('.' * i '*' * x "." * (m) '*' * x '.' * i)
m =2
i-=1