美文网首页Python全栈工程师
14-4 函数习题打印三角

14-4 函数习题打印三角

作者: BeautifulSoulpy | 来源:发表于2019-07-23 20:13 被阅读5次

    关于算法
    打印搞定,基本上算法就差不多了;
    打印看似简单,其实真不简单

    反思问题:
    卡在哪里了?

    1. 在有思路的基础上,有没有改进的方案?不要放弃(有难度就绕道了),
    2. 发散思维,不要僵化思维:
    3. 记录自己的好点子

    函数的封装(怎么去封装?)

    1. 函数写的就是核心算法;
    2. 面试的时候最好封装成函数的形式;

    打印练习习题:
    1.编写一个至少接受2个参数的函数,返回最大值和最小值;
    2.左右两种打印方式;要求数字必须对齐;

    1.要求:编写一个至少接受2个参数的函数,返回最大值和最小值;

    考虑的东西:
    1.元素个数
    2.元素类型

    方法 : 元素个数判断
    1.max min
    2.排序方法 : 费时间,效率低下;

    def double_values(*args):
        return(min(args),max(args))   #封装成元祖
    
    # 写法的差别:
    print(double_values(*range(10)))  # 差别: 一个元祖
    print(*double_values(*range(10)))   # 解开,两个值;
    -------------------------------------------------------------
    (0, 9)
    0 9
    
    作业提交:
    def maxmin(*args):
        if len(args)<2:
            print('输入的元素少于两个,请重新输入!')
        else:        
            return(min(args),max(args))
    
    

    2.编写一个函数,接受一个参数n,n为正整数,左右两种打印方式,要求数字必须对齐

    陷阱题目:
    看起来是一个有限问题,要你去算每一行;实际是一个无限问题
    n的问题:要看你对算法有没有了解;
    最好的策略:空间换时间;

    思路一:
    一行行打印,前面追加空格,每一个空格的宽度等于数字字符串的宽度;
    def triangle_print(n):
        for i in range(1,n+1):
            for j in range(n,0,-1):
                if i<j:
                    print((' ')*len(str(j)),end=' ')
                else:
                    pass
                    print(j,end = ' ')
            print()
    ----------------------------------------------------------------------------------
                1 
              2 1 
            3 2 1 
          4 3 2 1 
        5 4 3 2 1 
      6 5 4 3 2 1 
    7 6 5 4 3 2 1 
    
    思路二:右对齐方式,右对齐,最大的问题不知道最后一行多宽?
    
    def triangle_print(n):
        tail=" ".join([str(i) for i in range(n,0,-1)])
        width=len(tail)
        for i in range(1,n):
            print("{:>{}}".format(" ".join([str(j) for j in range(i,0,-1)]),width))
        print(tail)
    triangle_print(12)
    -------------------------------------------------------------
                             1
                           2 1
                         3 2 1
                       4 3 2 1
                     5 4 3 2 1
                   6 5 4 3 2 1
                 7 6 5 4 3 2 1
               8 7 6 5 4 3 2 1
             9 8 7 6 5 4 3 2 1
          10 9 8 7 6 5 4 3 2 1
       11 10 9 8 7 6 5 4 3 2 1
    12 11 10 9 8 7 6 5 4 3 2 1
    
    思路三:
    
    总结:
    1. if 判断的速度非常快;
    
    
    下三角

    相关文章

      网友评论

        本文标题:14-4 函数习题打印三角

        本文链接:https://www.haomeiwen.com/subject/ytfzlctx.html