'''
1 *
2 *
**
3 *
**
***
'''
'''
分析:先找规律,以3层为例,第一层有两个空格(n-1),第二层有1空格(n-2),第三层没有空格(n-3)
'''
n = int(input("请输入一个数:"))
# 将行数循环
for i in range(n+1):
# for j in range(i+1):
# # print("*"*i)
# pass
# n为多少,打印多少个*,但是每行的空格逐行递减,
print(' '*(n-i)+'*'*i)
'''
拓展:
*
***
*****
*******
*********
*******
*****
***
*
'''
'''
分析:
* 1
*** 2
***** 3
******* 4
********* 5
******* 6
***** 7
*** 8
* 9
由这个图形可以发现,第二行与第一行相比,多出了2个*,然后,少了两个空格。
依次类推,总共有9行,
第一行,左右各(9-2*0-1)/2空格,中间1+2*0个*
第二行,左右各(9-2*1-1)/2空格,中间1+2*1个*
第三行,左右各(9-2*2-1)/2空格,中间1+2*2个*
第四行,左右各(9-2*3-1)/2空格,中间1+2*3个*
……
第(n+1)/2行,左右各(n-2*(n-1)-1)/2空格,中间n个*
从第六行开始要逐行递减。需要重新判断,并且使用倒着的,range(m-2,0,-2),步长设为-2
第(n-1)/2行,左右各1+2*0空格,中间n-2*1个*
第(n-3)/2行,左右各1+2*1空格,中间n-2*2个*
…………
第n行,左右各(n-1)/2空格,中间1个*
'''
m = int(input("请输入一个奇数"))
# 将行数循环
# 打印正着的
for i in range(1,m+1,2):
print(' '*int(((m-i)/2))+'*'*i+' '*int(((m-i)/2)))
# 当打印到最大行时,使用range(m-2,0,-2),倒着打印
if i == m: #判断打印到最大行时,执行下面循环,
for j in range(m-2,0,-2): #使用range(),从大到小,间隔为2,依次递减
print(' ' * int(((m -j ) / 2)) + '*' * j + ' ' * int(((m - j) / 2)))