Python中for循环练习

'''
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)))



你可能感兴趣的:(Python中for循环练习)