如何使用for循环正确实现星号正方形?代码问题排查与修正
问题分析与修正方案
你的代码存在两个核心问题:
- 内部字符错误换行:else分支里额外调用的
print()会导致每遇到一个内部空白字符就强制换行,直接打乱了整行的结构。 - 第一行星号数量的误解:输入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
相关产品推荐
相关产品推荐

