关于循环语句和列表的几段代码的优化

初学对代码还不是很熟悉,学习循环语句和列表后,想要实现以下效果:

 

 

 

 

开始想用循环语句实现结果敲两行就敲不下去了,效果如下:

 1 # 第一行打印5×+7=+5×+7=+5×+3=+2×+5=+5×
 2 #第四行打印8*+1=+8*+1=+2*+1=+2*+1=+5*+3=+2*+5=+5*
 3 # 第六行打印5×+7=+5×+7=+5×+3=+2×+5=+5×
 4 #第七行打印
 5 i =1 
 6 while i<=22 :
 7     j =1
 8     if i==6 or i==11 :
 9         while j<=7 :
10             print("=",end="")
11             j=j+1
12     elif i==16 :
13         while j<=3:
14             print("=",end="")
15             j=j+1
16     elif i==18 :
17         while j<=5 :
18             print("=",end="")
19             j=j+1
20     print("*",end="")
21     i=i+1
22 print("")
23 #第二到三行打印8×+1=+8×+1=+2×+1=+2*+1=+7*+1=+2*+1=+3*+1=+5*
24 h=1
25 while h<=37 :
26     if h==9 or h==17 or h==19 or h==21 or h==28 or h==30 or h==33:
27         print("=",end="")
28     
29     print("*",end="")
30     h=h+1
31 print("")
32 
33 #第二到三行打印8×+1=+8×+1=+2×+1=+2*+1=+7*+1=+2*+1=+3*+1=+5*
34 
35 h=1
36 while h<=37 :
37     if h==9 or h==17 or h==19 or h==21 or h==28 or h==30 or h==33:
38         print("=",end="")
39     
40     print("*",end="")
41     h=h+1
42 print("")

这样既麻烦,又容易出错,决定改用列表实现,重新整理代码:

 1 h=1
 2 while h<=10:
 3     list_1 = []
 4     list_2 = []
 5     i=0
 6     while i<=44:
 7         list_1.append('*')
 8         list_2.append('=')
 9         i=i+1
10     if h<=2:
11         for list_id in list_1[:10]:
12             print(list_id,end="")
13         for list_id in list_2[11:31]:
14             print(list_id,end="")
15         for list_id in list_1[32:44]:
16             print(list_id,end="")
17     elif h==5 or h==6:
18         for list_id in list_1[:12]:
19             print(list_id,end="")
20         for list_id in list_2[13:29]:
21             print(list_id,end="")
22         for list_id in list_1[30:44]:
23             print(list_id,end="")
24     elif h==9 or h==10:
25         for list_id in list_1[:8]:
26             print(list_id,end="")
27         for list_id in list_2[9:33]:
28             print(list_id,end="")
29         for list_id in list_1[34:44]:
30             print(list_id,end="")
31     else :
32         for list_id in list_1[:19]:
33             print(list_id,end="")
34         for list_id in list_2[20:22]:
35             print(list_id,end="")
36         for list_id in list_1[23:44]:
37             print(list_id,end="")
38     print("")
39     h += 1

测试结果可以实现预想效果,但是这样代码还是觉得有些繁琐,且重复,于是增加列表修改来优化:

 1 h=1
 2 while h<=10:
 3     list_1 = []
 4     list_2 = []
 5     i=0
 6     while i<=44:
 7         list_1.append('*')
 8         i=i+1
 9     if h<=2:
10         j =11
11         while j<=31:
12             list_1[j]='='
13             j += 1
14     elif h == 5 or h == 6:
15         j = 13
16         while j<=29:
17             list_1[j] = '='
18             j +=1
19     elif h == 9 or h == 10:
20         j = 9
21         while j<=33:
22             list_1[j] = '='
23             j +=1
24     else :
25         j = 20
26         while j<=22:
27             list_1[j] = '='
28             j +=1
29     for list_id in list_1:
30         print(list_id,end="")
31     print("")
32     h += 1

这次代码觉得挺满意的,但是发现列表3到8行重复了10次,可不可以减少重复呢?我又做了修改:

 1 list_1 = []
 2 i=0
 3 while i<=44:
 4     list_1.append('*')
 5     i=i+1
 6 h=1
 7 while h<=10:
 8     if h<=2:
 9         j =11
10         list_2 = list_1[:]
11         while j<=31:
12             list_2[j]='='
13             j += 1
14     elif h == 5 or h == 6:
15         j = 13
16         list_2 = list_1[:]
17         while j<=29:
18             list_2[j] = '='
19             j +=1
20     elif h == 9 or h == 10:
21         j = 9
22         list_2 = list_1[:]
23         while j<=33:
24             list_2[j] = '='
25             j +=1
26     else :
27         j = 20
28         list_2 = list_1[:]
29         while j<=22:
30             list_2[j] = '='
31             j +=1
32     for list_id in list_2:
33         print(list_id,end="")
34     print("")
35     h += 1

测试实现效果是一样的,代码精简的不少,目前能想到的就只有到这了,有没有大神再帮忙优化一下,不胜感谢。

posted @ 2020-05-23 09:10  长脸大马猴  阅读(156)  评论(0编辑  收藏  举报