美文网首页经验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