# -*- coding:utf-8 -*-
import math
row = int( input() )
if row == 1:
print("*", end = "" )
exit()
if row % 2 == 0 :
raise ValueError
row = math.ceil( row / 2.0 )
for n in range( 1, row + 1 ):
i = 2 * n - 1 #每一行*的个数
j = ( row - n ) * 2 #每一行空格的个数
for jj in range(j): #控制输出每一行的空格
print( " ", end="" )
if i > 1: #如果一行字母*的个数大于1,则要控制*和*之间的空格格式然后输出
for ii in range(i):
if ii != i - 1:
print("* ", end="" )
else:
print("*")
else: #如果一行的字母*的个数等于1,则直接输出*
print("*")
# 输出完菱形的上半部分,下半部分直接通过反向控制输出
#********* Begin *********#
#********* End *********#
```python
就是把for循环整个复制一份
第一行改成从row-1 循环到 1,倒数循环
for n in range( row-1 ,0, -1 ):
# -*- coding:utf-8 -*-
import math
row = int( input() )
if row == 1:
print("*", end = "" )
exit()
if row % 2 == 0 :
raise ValueError
row = math.ceil( row / 2.0 )
for n in range( 1, row + 1 ):
i = 2 * n - 1 #每一行*的个数
j = ( row - n ) * 2 #每一行空格的个数
for jj in range(j): #控制输出每一行的空格
print( " ", end="" )
if i > 1: #如果一行字母*的个数大于1,则要控制*和*之间的空格格式然后输出
for ii in range(i):
if ii != i - 1:
print("* ", end="" )
else:
print("*")
else: #如果一行的字母*的个数等于1,则直接输出*
print("*")
# 输出完菱形的上半部分,下半部分直接通过反向控制输出
#********* Begin *********#
for n in range( row-1 ,0, -1 ):
i = 2 * n - 1 #每一行*的个数
j = ( row - n ) * 2 #每一行空格的个数
for jj in range(j): #控制输出每一行的空格
print( " ", end="" )
if i > 1: #如果一行字母*的个数大于1,则要控制*和*之间的空格格式然后输出
for ii in range(i):
if ii != i - 1:
print("* ", end="" )
else:
print("*")
else: #如果一行的字母*的个数等于1,则直接输出*
print("*")
#********* End *********#
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
row = int(input(">>") )
if row == 1:
print("*", end = "" )
exit()
if row % 2 == 0 :
raise ValueError
for i in range(row):
if i <= row // 2 :
nums = 2 * i + 1
else:
nums = 2 * (row - i) -1
print(f"{'* ' *nums:^{row*2}}")