# 使用python打印 * 构成的图形（循环语句）

16 篇文章 0 订阅

1、打印如下图形

*
**
***
****
*****
******

layer = int(input("请输入你要打印的层数:"))
index = 1
while index <= layer: #layer = 3
#打印每层的*
j = 1
while j <= index: #index = 1 2
print("*",end="")
j += 1
print() #此处的意思为换行
index +=  1

2、打印如下图形

~~~*       此处的~表示空格
~~***
~*****
*******

layer = int(input("请输入你要打印的行数："))
for i in range(1,layer+1):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
print("*",end="")
print("")


3、打印如下图形

*           第一行 3个空格(~)
***
*****
*******
*****
***
*

while layer % 2 == 0:
layer = int(input("请输入正确的要打印的行数，注意是奇数行："))
#上半部分
for i in range(1,layer // 2 + 2):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
print("*",end="")
print("")
#下半部分
for i in range(layer // 2 ,0,-1): # (3,0,-1)
#计算空格的个数
spce_num = layer - i #
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
print("*",end="")
print("")

4、打印如下图形

*
* *
*   *
*     *
*   *
* *
*

layer = int(input("请输入你要打印的行数："))
while layer % 2 == 0:
layer = int(input("请输入正确的要打印的行数，注意是奇数行："))
#上半部分
for i in range(1,layer // 2 + 2):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1:
print("*",end="")
else:
print(" ",end="")
print("")
#下半部分
for i in range(layer // 2 ,0,-1):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1:
print("*",end="")
else:
print(" ",end="")
print("")

5、打印如下图形

*
* *
*   *
*******
*   *
* *
*

layer = int(input("请输入你要打印的行数："))
while layer % 2 == 0:
layer = int(input("请输入正确的要打印的行数，注意是奇数行："))
#上半部分
for i in range(1,layer // 2 + 2):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1 or i == layer // 2 + 1: #i == layer // 2
+ 1 表示最后一行
print("*",end="")
else:
print(" ",end="")
print("")
#下半部分
for i in range(layer // 2 ,0,-1):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1:
print("*",end="")
else:
print(" ",end="")
print("")

6、打印如下图形

*
***
* * *
*******
* * *
***
*

layer = int(input("请输入你要打印的行数："))
while layer % 2 == 0:
layer = int(input("请输入正确的要打印的行数，注意是奇数行："))
#上半部分
for i in range(1,layer // 2 + 2):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1 or i == layer // 2 + 1 or j ==
star_num//2: #j == star_num//2 判断的是中间那一列
print("*",end="")
else:
print(" ",end="")
print("")
#下半部分
for i in range(layer // 2 ,0,-1):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1 or j == star_num//2:
print("*",end="")
else:
print(" ",end="")
print("")


7、打印如下图形

*
***
* * *
*******
*
*
*

layer = int(input("请输入你要打印的行数："))
while layer % 2 == 0:
layer = int(input("请输入正确的要打印的行数，注意是奇数行："))
#上半部分
for i in range(1,layer // 2 + 2):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == 0 or j == star_num - 1 or i == layer // 2 + 1 or j ==
star_num//2:
print("*",end="")
else:
print(" ",end="")
print("")
#下半部分
for i in range(layer // 2 ,0,-1):
#计算空格的个数
spce_num = layer - i
for j in range(0,spce_num):
print(" ",end="")
#计算*个数
star_num = 2 * i - 1
for j in range(0,star_num):
#判断是不是第一个和最后一个
if j == star_num//2:
print("*",end="")
else:
print(" ",end="")
print("")

• 25
点赞
• 101
收藏
觉得还不错? 一键收藏
• 0
评论
03-09 1723
04-26 442
12-30 5195
10-21 2107
03-30 2万+
10-17 450
04-02 3万+
09-14 4092

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。