row=eval(input('请输入菱形的行数:')) #定义输入行数 while的第一步:初始化变量标签:输出,end,while,嵌套,range,菱形,print,循环,row From: https://www.cnblogs.com/Q744633079/p/17826165.html
while row%2==0: #当为奇数是继续执行,偶数时错误,重新输入 while的第二步:条件判断
print('请重新输入菱形的行数') #while的第三步:语句块
row=eval(input('请输入菱形的行数:')) #while的第四步:改变变量
s_row=(row+1)//2 #上半部分包括中间奇数行的*,等于一个倒直角三角形+等腰三角形
for i in range(1,s_row): #外循环,遍历序列元素个数,代表行数
for j in range(1,s_row-i): #第一个for遍历为倒直角三角形,内循环为列数(也可理解为当外循环遍历第一次时,在第一行打印内循环的个数)
print(' ',end=' ') #end=' ' 不换行
for k in range(1,i*2): #第二个遍历为等腰三角形,第二个内循环,在第一个内循环结束后再执行第二个内循环,结束后,一个外循环结束,重新执行第二次外循环
print('*',end=' ')
print()
x_row=row//2 #下半部分不包含中间奇数行的*,等于直角三角形+倒等腰三角形。
for i in range(1,x_row+1):
for j in range(1,i+1): #第一个for为直角三角形
print(' ',end=' ')
for k in range(1,2*x_row-2*i): #第二个for为倒等腰三角形
print('*',end=' ') #end=' ' 不换行
print() #print空为换行