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递增,一直到条件不成立,跳出循环
本文出自 “学习笔记” 博客,请务必保留此出处http://netsyscode.blog.51cto.com/6965131/1748388
原文:http://netsyscode.blog.51cto.com/6965131/1748388