关于循环语句和列表的几段代码的优化
初学对代码还不是很熟悉,学习循环语句和列表后,想要实现以下效果:
开始想用循环语句实现结果敲两行就敲不下去了,效果如下:
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
测试实现效果是一样的,代码精简的不少,目前能想到的就只有到这了,有没有大神再帮忙优化一下,不胜感谢。