根据Python语法,实现输出如下形状
根据输入的行数n,生成一个行数为n的正的空心菱形,如下图所示
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),
根据逆向思维,然后下边的规律也会找到
'''