首先应该了解菱形在输出时,每一行的组成有哪些规律,并且除了中间的一行,上部分和下半部分应该是对称的
这是一个我们要准备输出的一个菱形的模板 ,一共有7行 7列
我们设菱形上半部分的总行数为rows,当前输出行数为row
当row1时候,A只有1个,星号字符一共有6个,A左右分别3个;
当row2时候,A有3个,星号字符一共有4个,A左右分别2个;
当row==3的时候,A有5个,星号字符一共有2个,A左右分别1个;
由此可以总结一个规律,在菱形的上半部分,随着row的增加,A的变化依次为 1 ;3 ;5 …
星号字符因为是关于字符A对称的所有只用考虑左边或者右边,随着row的增加,星号字符的变化依次为 3 ;2 ;1 …
随着row的增加A的变化趋势应该是一个公差为2,首项为1的等差数列,项数即为row,而星号变化趋势应该总行数rows减去当前行数再加1。
这里因为菱形下部分也是类似的,A也是一个等差数列,星号字符就是当前目标行数(仅以下半部分为开始)
下面就是代码实现:
一:输出一个实心菱形
运用刚刚所讲的规律:
def PrintDiamond(n):
if n & 1 == 0: return 'error'
row =