Python中使用“*”星号输出空心正菱形

根据Python语法,实现输出如下形状

	根据输入的行数n,生成一个行数为n的正的空心菱形,如下图所示

Python中使用“*”星号输出空心正菱形_第1张图片

x = eval(input('请输入一个奇数'))

def fun(num):
for i in range(num):
# 通过循环实现对每行进行操作

         if i == (num-1):
                break
         # 此处实现退出循环的操作,因为刚才进行加1操作,所以现在要减一
         if i < num / 2:
         # 刚才的加一操作实现的效果就是这进行除操作的时候不会小数,消除了二义性
         # 实现对前(n+1)/ 2 行进行操作
              print(" "*(num-i*2),end = "")              
              print('*',end = "")
              print(' '*(4*i-1),end = "")
              # 以上是通过找规律写出来的公式
              if i ==0:
                     print()
              else:
                     print("*")  
               # 前一半除了第一行,别的每行两个星号
         else:
              print(" "*(2*i-(num-4)),end="")
              print('*',end = "")
              print(" "*((4*(num-2-i))-1),end="")
              # 找规律
              if i == (num-2):
                     print()
              else:
                     print("*")
              # 除了最后一行,别的都是两个星号
fun(x+1)
# 此处的加1是为了在以上的程序中进行除操作方便点

# 找规律
'''
根据数数,发现第一行前头有9个空格,往下每次少两个空格,先输出(num-i*2)个空格,然后不换行输出一个星号,然后中间的空格从第二行开始一次多四个,关系是(4*i-1),
根据逆向思维,然后下边的规律也会找到
'''


你可能感兴趣的:(Python,算法)