#coding:utf-8 rows = int ( raw_input ( ' 输入列数: ' ) ) i = j = k = 1 #声明变量,i用于控制外层循环(图形行数),j用于控制空格的个数,k用于控制*的个数 #等腰直角三角形1 print " 等腰直角三角形1 " for i in range ( 0 , rows ) : for k in range ( 0 , rows - i ) : print " * " , #注意这里的",",一定不能省略,可以起到不换行的作用 k += 1 i += 1 print " \n " #打印实心等边三角形 print " 打印空心等边三角形,这里去掉if-else条件判断就是实心的 " for i in range ( 0 , rows + 1 ) : #变量i控制行数 for j in range ( 0 , rows - i ) : #(1,rows-i) print " " , j += 1 for k in range ( 0 , 2 * i - 1 ) : #(1,2*i) if k == 0 or k == 2 * i - 2 or i == rows : if i == rows : if k % 2 == 0 : #因为第一个数是从0开始的,所以要是偶数打印*,奇数打印空格 print " * " , else : print " " , #注意这里的",",一定不能省略,可以起到不换行的作用 else : print " * " , else : print " " , k += 1 print " \n " i += 1 #打印菱形 print " 打印空心等菱形,这里去掉if-else条件判断就是实心的 " for i in range ( rows ) : #变量i控制行数 for j in range ( rows - i ) : #(1,rows-i) print " " , j += 1 for k in range ( 2 * i - 1 ) : #(1,2*i) if k == 0 or k == 2 * i - 2 : print " * " , else : print " " , k += 1 print " \n " i += 1 #菱形的下半部分 for i in range ( rows ) : for j in range ( i ) : #(1,rows-i) print " " , j += 1 for k in range ( 2 * ( rows - i ) - 1 ) : #(1,2*i) if k == 0 or k == 2 * ( rows - i ) - 2 : print " * " , else : print " " , k += 1 print " \n " i += 1 #实心正方形 print " 实心正方形 " for i in range ( 0 , rows ) : for k in range ( 0 , rows ) : print " * " , #注意这里的",",一定不能省略,可以起到不换行的作用 k += 1 i += 1 print " \n " #空心正方形 print " 空心正方形 " for i in range ( 0 , rows ) : for k in range ( 0 , rows ) : if i != 0 and i != rows - 1 : if k == 0 or k == rows - 1 : #由于视觉效果看起来更像正方形,所以这里*两侧加了空格,增大距离 print " * " , #注意这里的",",一定不能省略,可以起到不换行的作用 else : print " " , #该处有三个空格 else : print " * " , #这里*两侧加了空格 k += 1 i += 1 print " \n "

执行输出结果:

输入列数: 4 等腰直角三角形1 * * * * * * * * * 打印空心等边三角形,这里去掉if-else条件判断就是实心的 * * * * * * * * 打印空心等菱形,这里去掉if-else条件判断就是实心的 * * * * * * * * * * 实心正方形 * * * * * * * * * * * * * * * * 空心正方形 * * * * * * * * * * * *