打印星星图形

本文通过三个示例详细解析了如何使用Python打印不同形状的星号图案,包括等腰三角形和不等腰三角形。讲解了两种不同的编程方法,涉及嵌套循环和递归思想,并探讨了其中的空格与星号数量的规律。这些实例有助于初学者理解Python控制流和字符串操作。
摘要由CSDN通过智能技术生成

举例1:打印下图

*****
*****
*****
*****
*****
# 法1
for i in range(5):
    print("*"*5)

结果:
*****
*****
*****
*****
*****

# 法2
for i in range(5):  # 外层循环控制行数
    for j in range(5):  # 内层循环用来限制打印星星的个数
        print("*", end="")   # print后面默认是换行符,为了防止换行,使用空格
    print()


结果:
*****
*****
*****
*****
*****

举例2:

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

解析:

从行来看:一共四行,也就是for i in range(4):

第一行:7个星星

第二行:5个星星+两个空格(左右两边各一个,2*1)

第三行:3个星星+4个空格(左右两边各2个,2*2)

第四行:1个星星+6个空格(左右两边各3个,2*3)

规律:星星数+空格数=7

也可以这样来看,只看左边打印几个空格,不用看右边,因为打完星星,后面的默认输出就是空格。

上面就会变成:

第一行:7个星星

第二行:5个星星+1个空格(左右两边各一个,2*1)

第三行:3个星星+2个空格(左右两边各2个,2*2)

第四行:1个星星+3个空格(左右两边各3个,2*3)

用print来写:

第一行:print('*'*7)   ——————————打印7个*

第二行:print(' '+(7-(2*1)*'*'))     # +为拼接符,也可用,
先打印一个空格,然后打印*,
*的个数=7-空格数
此时空格数为2*1,也就是,左右两边各一个


第三行:print(' '*2+(7-(2*2))*'*')  先打印两个空格,再打*

第四行:print(' '*3+(7-(2*3))*'*')    先打印3个空格,再打*


此时,第一行可以写成:print(' '*0+(7-(2*0))*'*')



规律:
print(' '*i+(7-2*i)*"*")
# 法1
for i in range(4):
    print(' '*i+(7-2*i)*"*")


# 法2
n = 0
while n < 4:
    print(" " * n + (7 - 2 * n) * "*")
    n += 1

结果:
*******
 *****
  ***
   *

举例3:

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

 解析:

第一行:两边各3个空格+1个星星

第二行:两边各2个空格+3个星星

第三行:两边各1个空格+5个星星

第四行:两边各0个空格+7个星星

规律:

第一行:print(' '*3, (7-(2*3))*'*')     #  ,为拼接符,改成+也可以

第二行:print(' '*2, (7-(2*2))*'*')

第三行:print(' '*1, (7-(2*1))*'*')

第四行:print(' '*0, (7-(2*0))*'*')


规律:
星星个数+空格个数=7


左边空格个数1-4行依次为:3 2 1 0
可以用range反向走起
for i in range(3,-1,-1):
结果:3 2 1 0正好对应空格数

所以规律:

print(' '*i, (7-2*i)*'*')
    
# 法1
for i in range(3, -1, -1):
    print(' '*i+(7-2*i)*'*')



# 法2
n = 3
while n >= 0:
    print(' ' * n + (7 - n * 2) * '*')
    n -= 1


# 法3        # 不推荐,range那还可以做改进
for i in range(4):
    print(' '*(3-i)+(7-((3-i)*2))*'*')




结果:

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

延申:

range从反向、正向举例

for i in range(3, -1, -1):  # 左闭右开 
    print(i)



结果:
3
2
1
0


for i in range(4):
    print(i)

结果:
0
1
2
3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值