美文网首页经验App:聚合职场优选内容
Python练习实例22 | 打印菱形

Python练习实例22 | 打印菱形

作者: 暮光微晓破倾城 | 来源:发表于2020-02-24 20:52 被阅读0次

    这个题目,应该算是编程界的经典试题了,查阅了百度,可以看到很多的不同的实现形式,有些能够正确的打印出来,有些还是停留在未完成的状态,下面就让我们来分析一下这个题究竟应该怎么做吧。

    菱形,我们可以看成是由上下两部分组成,上半部分是一个三角形,且每一行的元素均是居中显示的,下满则是一个倒立的三角形。

    因此,上半部分,我们可以先打印出来一个三角形的形状。代码如下:

    rows = int(input('请输入菱形边长:'))
    row = 1
    while row <= rows:
        col = 1  # 保证每次内循环col都从1开始,打印前面空格的个数
        while col <= (rows - row):  # 这个内层while就是单纯打印空格
            print(' ', end='')  # 空格的打印不换行
            col += 1
        print(row * '* ')  # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行
        row += 1
    

    作者试了一下,其中中间的while内层循环其实是专门打印空格的,去掉这部分的话,就是一个简单的直角三角形。

    上半部分打印完了之后,我们就可以来打印下半部分。

    最后完整的代码如下图所示:

    rows = int(input('请输入菱形层数:'))
    row = 1
    while row <= rows:
        col = 1  # 保证每次内循环col都从1开始,打印前面空格的个数
        while col <= (rows - row):  # 这个内层while就是单纯打印空格
            print(' ', end='')  # 空格的打印不换行
            col += 1
        print(row * '* ')  # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行
        row += 1
    
    bottom = rows - 1
    while bottom > 0:
        col = 1  # 保证每次内循环col都从1开始,打印前面空格的个数
        while bottom + col <= rows:
            print(' ', end='')  # 空格的打印不换行
            col += 1
        print(bottom * '* ')  # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行
        bottom -= 1
    

    这样写的好处,是我们输入任意的菱形层数,均可以打印出我们所期待的菱形形状。

    请输入菱形边长:10
             * 
            * * 
           * * * 
          * * * * 
         * * * * * 
        * * * * * * 
       * * * * * * * 
      * * * * * * * * 
     * * * * * * * * * 
    * * * * * * * * * * 
     * * * * * * * * * 
      * * * * * * * * 
       * * * * * * * 
        * * * * * * 
         * * * * * 
          * * * * 
           * * * 
            * * 
             * 
    
    Process finished with exit code 0
    

    好了,以上就是作者分享给大家的内容,我们下期再见吧。

    2020年2月23日
    北京市通州区京贸中心

    相关文章

      网友评论

        本文标题:Python练习实例22 | 打印菱形

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