天天看點

20190105-列印字母C,H,N,口

1. 列印字母C

******

*

*

*

*

******

def print_c(n):
    print('*' * n)
    for i in range(n):
        print('*        ')
    print('*' * n)
print_c(20)           

複制

2.列印字母N

*             *

*   *        *

*     *      *

*       *    *

*            *

算法:N在左下角空心三角形的基礎上減去最後一行的*,并在每行後面列印一個*,設定N的寬=N的高,列印心三角形詳見20190103這篇文章

def print_N(n):
    for i in range(n+1):
    #列印的行數
        for j in range(n+1):
        #每行列印的*個數(N的寬度),僅列印首尾的*,空間以空格分隔
            if j ==0 or j==i:
                print('*',end = ' ')
        #列印第一個和斜杠中的*,j==i的時候列印斜杠中的*起始點
            elif j==n: 
                print('*',end ='')
        #列印N中第二個直線位置的*,此處end=''與end =' '沒有差別,因為j=n是最後一遍循環,之後就是換行了
            else:
                print(' ',end = ' ')
        #其他位置用空格填充
        print()
Print_N(10)           

複制

3.列印口

* * * * * * 

*           *

*           *

* * * * * *

口除第一行和最後一行全部列印外,其他行僅列印首尾,定義口的高和寬

def quadrangle(hight,width):
    for i in range(hight+1):
        for j in range(width+1):
            if i ==0 or i ==hight:
                print('*',end =' ')
                #空心四邊形第一行全部列印
            elif j==0 or j ==width:
                print('*',end =' ')
                #空心四邊形中間行數列印首尾
            else:
                print(' ',end =' ')
        print()
quadrangle(10,10)           

複制

4.列印H

*        *

*        *

* * * * *

*        *

*        *

算法:H,分為高和寬,設定寬為高的一半是以我們寫H的時候隻需要指定H的高就好

def print_H(height):
    if isinstance(height,int) and height>=5:
        for i in range(height+1):
    #列印H的高
            for j in range(int(height/2)+1):
                if i ==int(height/2):
                    print('*',end = ' ')
                elif j ==0 or j==int(height/2):
                    print('*',end =' ')
                else:
                    print(' ',end =' ')
            print()
    else:
        print('請設定H的高度大于5')
print_H(10)           

複制

H的高度必須大于5的原因是為了大于H中間那條橫,因為j的範圍為height/2+1,當height=4一下的時候,j列印的*小于2,是以無法列印除H中間的那一橫

5.列印楊輝三角

  1

   1 1

  1 2 1

 1 3 3 1

1 4 6 4 1

将每一行看作一個list,先寫除一個 方法輸出下一行的list值

def pascal_list_generate(list):
    #print(len(list))
    pascal =[]
    if len(list)>=2:#因為需要取第i-1個值,是以len(list)必須大于等于2,如果len(list)=1,則i-1<0,程式報錯
        for i in range(len(list)+1):
            if i ==0:
                pascal.append(1)
                #楊輝三角的第一和最後一位數為1
            elif i>=1 and i <len(list):
                pascal.append(list[i]+list[i-1])
                #除第一個和最後一個數外楊輝三角第n行的第m個數為第n-1行第m和m-1的數之和
            elif i==len(list):
                #楊輝三角的第一和最後一位數為1
                pascal.append(1)
    else:
        pascal.append(1)
        pascal.append(1)
        #相容楊輝三角第二行的情況
    return pascal           

複制

寫一個列印楊輝三角每行的函數,并且可以自定義楊輝三角的行數

def pascal_trigal(n):
 s =[1]
 if n ==1:
  print(s)
 else:
  print(s)
  for i in range(n-1):
   print(pascal_list_generate(s))
   s = pascal_list_generate(s)
pascal_trigal(10)           

複制

在楊輝三角的方法裡面循環疊代調用每一行的生成方法。