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

如何使用for循环正确实现星号正方形?代码问题排查与修正

问题分析与修正方案

你的代码存在两个核心问题:

  1. 内部字符错误换行:else分支里额外调用的print()会导致每遇到一个内部空白字符就强制换行,直接打乱了整行的结构。
  2. 第一行星号数量的误解:输入5时,第一行实际是5个星号(range(5)会循环5次j),你看到的6个应该是其他行的混乱输出导致的视觉误判。

修正后的代码

number = int(input())

for i in range(number):
    line = ""
    for j in range(number):
        if i == 0 or i == number - 1 or j == 0 or j == number - 1:
            line += "*"
        else:
            line += " "
    print(line)

修正说明

  • 先通过字符串拼接构建整行内容,避免多次print调用带来的换行问题,循环完当前行的所有字符后再统一打印。
  • 内部空白用单个空格填充,确保每行的每个位置都有对应字符(边框*或内部空格),保证每行长度严格等于输入的数值。
  • 移除了多余的print()调用,确保每一行仅输出一次,结构整齐。

测试输入5时,输出效果如下:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:14:54