20190103-打印各种类型的三角形,四边形等

2019-01-03 09:57:46来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1. 打印四边形

* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
如图:四边形由宽和高构成,将宽转换为每行打印的的个数,将高转换为打印的行数
def quadrangle_generate(width,hight):
    for i in range(hight+1):
        for j in range(width+1):
            print('*',end=' ')
            if j == width:
                print()
quadrangle_generate(5,4)

解析:for i in range(hight+1)循环保证打印的行数,for j in range(width+1)循环保证每行打印的*个数。当打印完成,即j == width的时候换行,其中 print('*',end=' ')执行一次打印2个字符

 

2. 打印各类等腰三角形

2.1左下角等腰三角形
*
* *
* * *
* * * *
* * * * *
* * * * * *
左下角三角形由*和空格构成,保证三角形在四边形的基础上高(等价于三角形的腰)不变,每行打印的*个数进行变化。具体规则如下:
第一行保留打印一个*,剩下的用空格代替
第二行保留打印两个*,剩下用空格代替
第i行,打印i个星
第n行,打印n个星
def left_down_Isosceles_trigal_generate(n):
    for i in range(n+1):
        for j in range(i+1):
            print('*',end = ' ')
            if j == i:
                print()
left_down_Isosceles_trigal_generate(10)

解析:for i in range(n+1)保证了打印的行数(等腰三角形的腰),for j in range(i+1)循环保证每行打印的*个数,第1行打印1个,第二行打印2个,j==i的时候打印换行。

2.2左上角等腰三角形

* * * * * *
* * * * *
* * * *
* * *
* *
*
左上角等腰三角形是由三角形由*和空格构成,保证三角形在四边形的基础上高(等价于三角形的腰)不变,每行打印的*个数进行变化。具体规则如下:
第一行保留打印n个*
第二行保留打印n-1两个*
第i行,打印n-i+1个*
第n行,打印1个*
因此打印的*个数使用n-i+1来确定,打印*以空格分隔
def left_top_Isosceles_trigal_generate(n):
    for i in range(n+1):
        for j in range(n-i+1):
            print('*',end = ' ')
            if j ==n-i:
                print()
left_top_Isosceles_trigal_generate(10)

解析:for i in range(n+1)保证了打印的行数,for j in range(n-i+1)保证了打印的*个数逐级递减,当每行打印结束的时候使用j==n-i换行

2.3右下角等腰三角形

          *
* *
* * *
* * * *
* * * * *
* * * * * *
右下角等腰三角形,保证三角形在四边形的基础上高(等价于三角形的腰)不变,每行打印的*个数进行变化。具体规则如下,此处需要留意打印空格的时候end=‘ ’,一次print(' ',end = ' ')执行,打印出2个空格字符:
第一行前面保留打印2(n-1)个空格,加上1个*,如上图,n=6,则第一行打印10个空格
第二行前面保留打印2(n-2)个空格,加上2个*
第i行,打印2(n-i)个空格,加上i个*
第n行,打印n个*,中间以空格分隔
因此打印的*个数使用i来确定,打印的空格使用n-i+1来确定

def right_down_Isosceles_trigal_generate(n):
    for i in range(n+1):
        for j in range(n-i+1):
            print(' ',end = ' ')
        for k in range(i+1):
            print('*',end = ' ')
            if k ==i:
                print()
right_down_Isosceles_trigal_generate(10)

解析:for i in range(n+1)保证打印的行数,for j in range(n-i+1)来打印空格,空格的个数随着i的增加逐级减少,使用i来打印逐级增加的*

2.4右上角等腰三角形

* * * * * *
* * * * *
* * * *
* * *
* *
*
右上角等腰三角形,保证三角形在四边形的基础上高(等价于三角形的腰)不变,每行打印的*个数进行变化。具体规则如下:
第一行保留打印n个*,前面填充0个空格
第二行保留打印n-1个*,前面填充2个空格,书写格式为print(' ',end = ' ')
第i行,打印n-i个*,前面填充2*i个空格
第n行,打印1个*,前面填充2(n-1)个空格,如上图n=6,第6行前面填充10个空格
因此打印的*个数使用n-i来确定,打印的空格使用i来确定
def right_top_Isosceles_trigal_generate(n):
    for i in range(n+1):
        for j in range(i):
            print(' ',end = ' ')
        for k in range(n-i):
            print('*',end = ' ')
            if k ==n-i-1:
                print()
right_top_Isosceles_trigal_generate(10)
解析:使用 for i in range(n+1)来确定要打印的行数(三角形的腰),右上角等腰三角形,每行的*逐级递减,因此使用for k in range(n-i)来确定要打印的*的个数,当*打印完的时候使用k == n-i-1来换行
2.5正三角形
*
* *
* * *
* * * *
* * * * *
正三角形保证三角形在四边形的基础上高(等价于三角形的腰)不变,每行打印的*位置不同,具体规则如下:

第一行,打印n-1个空格,1个*,以空格分隔
第二行,打印n-2个空格,2个*,以空格分隔
第n行,打印n-n个空格,n个*,以空格分隔
打印的空格以n-i+1来确定,打印的*用i来确定
def Isosceles_trigal_generate(n):
    for i in range(n+1):
        for k in range(n-i+1):
            print(' ',end = '')
        for j in range(i+1):
            print('*',end = ' ')
            if j == i:
                print()
Isosceles_trigal_generate(10)    

 

解析:正三角和右下角三角形的唯一区别为代码中红色的部分,end =''还是end = ' ',如果end =''则为正三角;如果end=' '则为右下角三角形,因为end = ' '的时候,是以空格结尾,打印的字符数需要加1
2.6 倒三角形
* * * * * *
* * * * *
* * * *
* * *
* *
*
倒三角形保证三角形在四边形的基础上高(等价于三角形的腰)不变,每行打印的*位置不同,具体规则如下:
第一行,打印n个*,以空格分隔,前面打印0个空格
第二行,打印n-1个*,以空格分隔,前面打印1个空格
第i行,打印n-i,以空格分隔,前面打印i个空格
第n行,打印1个*,前面打印n-1个空格
因此打印的*个数使用n-i来确定,打印的空格使用i来确定
def reverse_Isosceles_trigal_generate(n):
    for i in range(n+1):
        for j in range(i):
            print(' ',end ='')
        for k in range(n-i+1):
            print('*',end =' ')
            if k ==n-i:
                print()
reverse_Isosceles_trigal_generate(10)    

 

解析:for i in range(n+1),保证打印的行数,区别于右上角三角形的是代码中红色部分,由end=''决定print语句打印的是几个字符。
总结:打印三角形的时候,最大的注意点是确定打印多少行,每行打印多少个,以及前面填充多少空格。特别注意填充空格时候注意空格的占位数。print(' ',end ='')打印一个空格,print(' ',end =' ')打印2个空格。



标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python的闭包

下一篇:Python04