python下输入一个正奇数后打印出镂空的菱形
先上代码和效果图:
输出效果为一个17行的菱形,菱形边为符号( * ) ,图形内外均使用空格填充。
写代码时的思路是按循环生成每一行居中的字符串, 也就是符号( * )和空格组成的字符串 , 空格填充 , 然后循环打印, 得到每一行的效果 。
代码中最难处理的部分是如何在较少代码量和判断语句的情况下生成第一行的样式.
这里用到了bool, 先考虑上三角部分, 第一行字符串只有一个( * )符号,没有第二个符号也没有空格, 而第一行与其他行的区别就是他循环时的 i 值为零 ,其他行不为零, 在
bool( int ) 下就得到第一行为零,其他行全为1。把bool值分别乘上第二个( * )符号和中间的空格表达式,即 " * " + " " * bool(i)+ " * " * bool(i)。其中i为循环中的值。
后面便是字符串居中填充,center(字符串加填充总长度,填充内容)。下三角便是将说三角的循环反过来,当然,范围要调整一下使得循环到最后时,最后一行的
bool(i)为零。