2.2.2 小试牛刀——打印简单图形
在2.2.1小节中,我们使用循环的技巧打印了各种形状的乘法口诀表。本小节进一步思考和尝试如何打印出更多有趣的图形。
图2-5 等腰三角形形状
三角形是生活中常见的几何形状,我们可以尝试使用Python编程输出一个等腰三角形形状,效果如图2-5所示。
图2-5中的形状看上去简单,其实通过程序打印出来并不容易。首先,我们先分析图2-5所示的图形,该三角形有6层,最后一层是满的,由11个星号排列组成,假设层数为f,实际上每一层出现的星号个数为(f–1)*2 + 1,即2f – 1个。我们再分析一下星号的布局情况,要想使得最终打印的图形为等腰三角形,需要使用空格来调整布局,最后一行没有空格,从最后一行依次向上,空格数依次递增,即行数与空格数的关系为:
每行的空格数=最终行数–(当前层数–1)
基于上面的分析,编写代码如下:
上面的代码定义了一个函数,通过传入行数作为参数,输出等腰三角形,例如传入参数10时,将打印共10行布局的等腰三角形,如图2-6所示。
对上面的代码进行简单的修改,即可将打印的等腰三角形变成倒三角形。示例代码如下:
运行效果如图2-7所示。
图2-6 打印等腰三角形
图2-7 打印倒三角形
完成了三角形与倒三角形的打印,通过这两个函数的组合调用将非常方便地实现菱形图形的打印,示例如下:
运行程序,效果如图2-8所示。
图2-8 打印菱形图形
可以发现,如果我们需要打印出复杂的图形,其实可以先将复杂图形进行拆解,将其拆解为多个简单图形的组合,之后分别编写简单图形的打印函数,组合调用函数即可。例如,编写一个打印行列数矩形的函数,示例如下:
再略微修改三角形打印函数,使其指定三角形的绘制位置,示例如下:
通过组合调用上面的函数可以打印出一颗圣诞树形状的图形,示例如下:
运行代码,效果如图2-9所示。
图2-9 打印圣诞树形状的图形
发挥一下你的想象力与创造力,尝试使用Python打印出更多有趣的图形。