1 #题目:打印出如下图案(菱形)

   *
  ***
 *****
*******
 *****
  ***
   *


代码:


 11 lix = [x for x in range(3,0,-1)] + [x for x in range(0,4)]
 12 liy = [y for y in range(1,6,2)] + [y for y in range(1,8,2)][::-1]
 13 print(lix)
 14 print(liy)
 15 
 16 m = 0
 17 while m < len(lix):
 18     print(lix[m]*' ' + liy[m]*'*')
 19     m += 1


运行结果:


[root@HK code_100]# python code_23.py 
[3, 2, 1, 0, 1, 2, 3]
[1, 3, 5, 7, 5, 3, 1]
   *
  ***
 *****
*******
 *****
  ***
   *
[root@HK code_100]#


代码解释:


 #思路:看过别的解题思路上用两段for循环分别打印递增和递减两段,这里我是根据每行的空格和星号数量
 #    的规律,开始就分别构造好列表,然后根据列表下标循环就可以得出答案
 
 11 lix = [x for x in range(3,0,-1)] + [x for x in range(0,4)]            #构造每行空格的个数列表
 12 liy = [y for y in range(1,6,2)] + [y for y in range(1,8,2)][::-1]     #构造每行*的个数列表,最后的[::-1]是列表反转逆序
 13 print(lix)            #额外配置,供参考
 14 print(liy)            #额外配置,供参考
 15 
 16 m = 0                 #初始化while判断条件值
 17 while m < len(lix):   #循环列表的长度的次数
 18     print(lix[m]*' ' + liy[m]*'*')    #按照之前构造的列表打印
 19     m += 1                            #m加1递增,一直到条件不成立,跳出循环