Python打印菱形

使用python打印出菱形:

   *

  ***

 *****

*******

 *****

  ***

   *

思想:平常我写这种代码的时候,总是自然地使用二层循环,今天老师教了一个特别好的方法,化二维为一维。我觉得代码优化是很重要的,所以把它写下来,可以慢慢培养自己的算法思想。

第一行    空格3   *1  (即*个数为7-3*2)

第二行    空格2   *3  (即*个数为7-2*2)

第三行    空格1   *5  (即*个数为7-1*2)

第四行    空格0   *7    

第五行    空格1   *5

第六行    空格2   *3

第七行    空格3   *1

嘻嘻嘻,找规律吧。空格个数可以用range(-n/2,n/2+1)表示,*的个数可以用(n-空格个数*2)表示,这样就可以用一维表示法来输出菱形。代码如下:

n=int(input("input n"))
for i in range(-int(n/2),int(n/2)+1):
    print(" "*abs(i),"*"*abs(n-abs(i)*2))
 

PS:第一次写CSDN,很多不足,定会多多努力,加油加油!

补充:

有人问我偶数情况怎么办,我想补充一下

每一行的空格个数不变,但*的个数是变化的:

第一行    空格3   * 1  (即* 个数为4-3)

第二行    空格2   * 2  (即* 个数为4-2)

第三行    空格1   * 3  (即* 个数为4-1)

第四行    空格0   * 4  (即* 个数为4-0)

第五行    空格1   * 3

第六行    空格2   * 2

第七行    空格3   * 1

for j in range(-int(n / 2), int(n / 2) + 1):
    print(" " * abs(j), "* " * abs(int(n/2)+1 - abs(j)))

和上面有一点不同,打印的时候每一个*的后面直接跟一个空格 

这样打印出来就是这个样子:

 

  • 28
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值