1 #题目:打印出如下图案(菱形)
1
2
3
4
5
6
7
|
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
|
代码:
1
2
3
4
5
6
7
8
9
|
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
|
运行结果:
1
2
3
4
5
6
7
8
9
10
11
|
[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] #
|
代码解释:
1
2
3
4
5
6
7
8
9
10
11
12
|
#思路:看过别的解题思路上用两段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递增,一直到条件不成立,跳出循环
| |||
| 本文转自snc_snc 51CTO博客,原文链接:http://blog.51cto.com/netsyscode/1748388,如需转载请自行联系原作者 |