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