(python基础)各种打印三角形

萌新的自我修养,基础不好就得练,今天正好碰上各种打印三角形,这种题看似很简单,情况稍微变一变,还是挺有意思,就花了点时间整理了一下。总共囊括直角,等腰(分每行为n个和每行为2n+1个),数字三角共三大类的多种情况。
1.直角三角形,这种最简单,for和while皆可,左右上下变换,都是一样的套路,掌握每行要输几个*,变range里的值和‘*’的乘值,或者添加空格。这里举两个例子:
1.1直角三角形左上角

# 直角三角形
def f1(n):
    for i in range(n):

        print('*'*(i+1),end='')

        print('')
f1(5)
*
**
***
****
*****

1.2直角三角形右下角

def f2(n):
    for i in range(n):
        print(' '*(i) + '*'*(n-i),end='')
        print('')
*****
 ****
  ***
   **
    *

2.等腰三角形,这个里面还可以分实心和空心。也比较简单,一个循环,print(’’)划好行,考虑每行要输出什么。空心的话,中间的行两端留,其他空格代。另外每行数量为n还是2n-1需要分开考虑。数量为n需要嵌套for。
2.1每行
数量为2n-1,实心倒立等腰三角

# 实心倒立等腰三角
def f3(n):
    for i in range(n,0,-1):
        print(' '*(n-i) + '*'*(2*i-1),end='')
        print('')
f3(4)
*******
 *****
  ***
   *

2.2每行*数量为2n-1, 等腰空心正立三角

# 等腰空心正立三角

def f4(n):
    for i in range(1,n+1):
        if i1:
            print(' ' * (n - i) + '*' +' '*(2*i-3) +'*',end='')
        else:
            print(' '*(n-i)+ '*'*(2*i-1),end='')
        print('')
f4(4)
   *
  * *
 *   *
*******

2.3每行*数量为n,正立等腰

def f5(n):
    for i in range(1,n+1):
        print(' '*(n-i),end='')
        for j in range(1,i+1):
            print('*'*1,end=' ')
        print('')

f5(4)
   * 
  * * 
 * * * 
* * * * 

3.第三种来考虑下数字三角这种情况,输出如下:

   1
  121
 12321
1234321

这种情况很有意思,想来想去,没有其他办法,思路一样,for里套两个for分搭。总感觉这三角有趣。代码如下:

def f6(n):
    for i in range(1,n+1):
        print(' '*(n-i),end='')
        for j in range(1,i+1):
            print(j,end='')
        for k in range(i-1,0,-1):
            print(k,end='')
        print('')
f6(4)

你可能感兴趣的:(python基础)