【Python实践】打印各种形状

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:Python实践 ,一个专注于分享实际案例的专栏~

想看往期历史文章,可以浏览此博文: 历史文章目录,后续所有文章发布都会同步更新此博文~

人生苦短,我用python

前言

很久没有发一篇正经博文了,为了证明我还存在且脑子没有生锈,所以准备发布这样的一篇博文。(其他想发的还没编辑好,暂时没有足够动力编辑)

来吧,展示

虽说Python要写的优美,但有些人就不按套路出牌!比如博主,就喜欢整一行代码干完活:

row = int(input('请输入行数:'))
assert row > 1, '形状的行数必须大于等于2!'
print('正方形实心:')
print(*('* ' * row for col in range(row)), sep='\n')
print('正方形空心:')
print(*('* ' + ('* ' if col in [0, row - 1] else '  ') * (row - 2) + '*' for col in range(row)), sep='\n')
print('正三角形实心:')
print(*(' ' * (row - col - 1) + '* ' * (col + 1) for col in range(row)), sep='\n')
print('正三角形空心:')
print(*(' ' * (row - col - 1) + '* ' + ('* ' if col in [0, row - 1] else '  ') * (col - 1) + ('*' if col else '') for col in range(row)), sep='\n')
print('倒三角形实心:')
print(*(' ' * col + '* ' * (row - col) for col in range(row)), sep='\n')
print('倒三角形空心:')
print(*(' ' * col + '* ' + ('* ' if col in [0, row - 1] else '  ') * (row - col - 2) + ('*' if col < row - 1 else '') for col in range(row)), sep='\n')
assert row > 2, '菱形的行数必须大于等于3!'
print('菱形实心:')
print(*(' ' * ((row + 1) // 2 - col - 1) + '* ' * (col + 1) for col in range((row + 1) // 2)), *(' ' * (col + 1 if row % 2 else col) + '* ' * (row // 2 - col) for col in range(row // 2)), sep='\n')
print('菱形空心:')
print(*(' ' * ((row + 1) // 2 - col - 1) + '* ' + ('* ' if not col else '  ') * (col - 1) + ('*' if col else '') for col in range((row + 1) // 2)), *(' ' * (col + 1 if row % 2 else col) + '* ' + ('* ' if col == row // 2 - 1 else '  ') * (row // 2 - col - 2) + ('*' if col < row // 2 - 1 else '') for col in range(row // 2)), sep='\n')
# row_half = ((row + 1) // 2) if row % 2 else row // 2  # 从总行数变成半三角行数
# print('菱形实心:')
# print(*(' ' * (row_half - col - 1) + '* ' * (col + 1) for col in range(row_half)), *(' ' * ((col + 1) if row % 2 else col) + '* ' * ((row_half - col - 1) if row % 2 else (row_half - col)) for col in range(row_half - 1 if row % 2 else row_half)), sep='\n')
# print('菱形空心:')
# print(*(' ' * (row_half - col - 1) + '* ' + ('* ' if not col else '  ') * (col - 1) + ('*' if col else '') for col in range(row_half)), *(' ' * ((col + 1) if row % 2 else col) + '* ' + ('* ' if col + 1 == row_half else '  ') * ((row_half - col - 3) if row % 2 else (row_half - col - 2)) + ('*' if col < row_half - (2 if row % 2 else 1) else '') for col in range(row_half - 1 if row % 2 else row_half)), sep='\n')

其中最后注释掉的部分是我一开始直接手撸的,写的是格外的艰难,后来上面的方法就是复制粘贴上面正

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值