1 ''' 2 正常菱形,不能使用一个一个打印,那就没什么意思,这里使用的是对称,也可以使用坐标的方式,如第四版 3 * 4 *** 5 ***** 6 ******* 7 ***** 8 *** 9 *10 11 '''12 # 第一版 繁琐的13 n = 714 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 = 724 e = -(n//2)25 26 for i in range(e,1-e):27 i = -i if i <= 0 else i28 print(i * ' ' + (n - 2 * i) * '*')29 30 # 第三版 两重for 循环,降低效率31 n = 732 e = n//233 for i in range(-e, 1+e): # -3,334 for j in range(1,n+1): # 1,735 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,-343 print(abs(i) * ' ',end='') # i = 3 3空 2 2空44 for j in range(-3,4): # j = -3,-2,-1 ,0,1,2,345 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,-354 print(abs(i) * ' ',end='') # i = 3 3空 2 2空 -1 1空 0 055 for j in range(-3,4): # j = -3,-2,-1 ,0,1,2,356 if abs(i) + abs(j) < 4:# x + y <4 加绝对值,就是菱形57 print('*', end='')58 print()