You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python控制台实现指定样式空心形状的打印?

解决Python控制台绘制空心形状的问题

看起来你现在的代码只完成了尺寸输入的部分,输出时不仅把所有星号行挤在了同一行,还没实现你想要的空心样式。咱们一步步来调整:

首先先解决换行问题:如果你的输出代码用了end=' '这类参数强制不换行,那得把它去掉(Python的print()默认就是换行的)。比如你原来的实心倒三角代码可能是这样:

tri = int(input("enter size : "))
for i in range(tri, 0, -1):
    print('*' * i, end=' ')  # 这里的end=' '导致所有行连在一起输出

把end=' '删掉后,就能让每行单独显示了:

tri = int(input("enter size : "))
for i in range(tri, 0, -1):
    print('*' * i)

输入6后会输出:

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

接下来是实现你要的空心样式——根据你描述的****** * * * * * * *,我猜你想要的是第一行全星、中间每行仅首尾是星的效果,下面给出两种常见的空心形状实现:

方案1:空心倒三角(第一行全星,中间每行首尾星,最后一行单个星)

输入6时输出:

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

代码实现:

tri = int(input("enter size : "))
# 打印第一行全星
print('*' * tri)
# 打印中间的空心行
for i in range(tri-1, 1, -1):
    print('*' + ' '*(i-2) + '*')
# 打印最后一行单个星
print('*')

方案2:空心矩形(首尾两行全星,中间每行首尾星)

输入6时输出:

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

代码实现:

tri = int(input("enter size : "))
# 打印首尾两行全星
print('*' * tri)
# 打印中间的空心行
for _ in range(tri-2):
    print('*' + ' '*(tri-2) + '*')
print('*' * tri)

如果我理解的空心样式和你想要的有偏差,你可以补充说明具体的形状细节,我再调整代码~

内容的提问来源于stack exchange,提问作者gusud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:17:42