菱形--for循環解決
阿新 • • 發佈:2018-08-04
絕對值 數學 code 方式 使用 打印 效率 style -i
1 ‘‘‘ 2 正常菱形,不能使用一個一個打印,那就沒什麽意思,這裏使用的是對稱,也可以使用坐標的方式,如第四版 3 * 4 *** 5 ***** 6 ******* 7 ***** 8 *** 9 * 10 11 ‘‘‘ 12 # 第一版 繁瑣的 13 n = 7 14 e = -(n//2) 15 for i in range(e,1-e): # [-3,3] 16 #print(-i * ‘ ‘ + (n - abs(-i) * 2) * ‘*‘) if i <= 0 else print((4-i)*‘ ‘+(n-2i) * ‘*‘)17 if i <= 0: 18 print(-i * ‘ ‘ + (n - 2 * (-i)) * ‘*‘) 19 else: 20 print(i * ‘ ‘ + (n - 2 * i) * ‘*‘) 21 22 # 第二版,優化版,只是把上個版本歸納了一下 23 n = 7 24 e = -(n//2) 25 26 for i in range(e,1-e): 27 i = -i if i <= 0 else i 28 print(i * ‘ ‘ + (n - 2 * i) * ‘*‘) 29 30 # 第三版 兩重for 循環,降低效率31 n = 7 32 e = n//2 33 for i in range(-e, 1+e): # -3,3 34 for j in range(1,n+1): # 1,7 35 if abs(i) < j < n - abs(i) + 1: # 3< j < 5 最左側的點 36 print(‘*‘ , end=‘‘) 37 else: 38 print(‘ ‘, end=‘‘) 39 print() 40 41 # 第四版 利用了數學上的直線 陰影部分 |x|+|y|<442 for i in range(3, -4, -1): # 3,-3 43 print(abs(i) * ‘ ‘,end=‘‘) # i = 3 3空 2 2空 44 for j in range(-3,4): # j = -3,-2,-1 ,0,1,2,3 45 if abs(i) + abs(j) < 4:# 從上往下一個一個打印 46 print(‘*‘, end=‘‘) 47 print() 48 49 print(‘-----------------------------------------------------‘) 50 51 52 53 for i in range(-3, 4): # 3,-3 54 print(abs(i) * ‘ ‘,end=‘‘) # i = 3 3空 2 2空 -1 1空 0 0 55 for j in range(-3,4): # j = -3,-2,-1 ,0,1,2,3 56 if abs(i) + abs(j) < 4:# x + y <4 加絕對值,就是菱形 57 print(‘*‘, end=‘‘) 58 print()
菱形--for循環解決