python打印空心菱形

编写程序,输入菱形的高,输出由星号勾勒出的菱形。

输入格式
行数(正整数)

输出格式
若行数为奇数,则显示星号勾勒出的菱形,否则显示错误信息。

输入样例1
5
输出样例1
*

  • *
  • *
  • *
  • 输入样例2
    8
    输出样例2
    Error
def printL(L):
    for i in range(1, L + 1):
        if i <= (L + 1) // 2:
            cou = 2 * i - 1
        else:
            cou = 2 * (L - i) + 1
        if cou != 1:
            string = "*" + ' ' * (cou - 2) + '*'
        else:
            string = '*'
        print("{:^{}}".format(string, 2 * L))
n = int(input(">>>"))
if n % 2 == 0:
    print("Error")
else:    
    printL(n)
'''       
--result
>>>11
          *           
         * *          
        *   *         
       *     *        
      *       *       
     *         *      
      *       *       
       *     *        
        *   *         
         * *          
          *     
''' 

应该是显示空心菱形,但是不知道为什么题目出来就乱了……

def printL(L, char='*  '):
    for i in range(L, 0, -1):
        if i == 1 or i == L:
            print(' ' *i + char *L)
        else:
            print(' ' *i + char + '   ' *(L -2) + char)
        
n = int(input(">>>"))
if n % 2 == 0:
    print("Error")
else:    
    printL(5)
'''       
--result
     *  *  *  *  *  
    *           *  
   *           *  
  *           *  
 *  *  *  *  *  
''' 


m = int(input())
if m%2 == 0:
        print('Error')
else:
    print(' '*(m//2)+'*')
    for i in range(2,m//2+2):
        print(' '*(m//2-i+1),end='')
        print('*',end='')
        print(' '*(2*i-3),end='')
        print('*')
    for j in range(1,m//2):
        print(' '*j,end='')
        print('*',end='')
        print(' '*(m-2*j-2),end='')
        print('*')
    if m>1:
        print(' '*(m//2)+'*')

```