zoukankan      html  css  js  c++  java
  • 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 ==
                    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)

    在杨辉三角的方法里面循环迭代调用每一行的生成方法。

  • 相关阅读:
    多进程2
    并发编程
    粘包
    socket
    网络编程
    异常与网络编程
    面向对象高级
    多态
    面向对象2
    SQL数据库约束行为---防止数据乱填(即数据规范化)
  • 原文地址:https://www.cnblogs.com/hyj691001/p/10224806.html
Copyright © 2011-2022 走看看