Python 使用循环打印正方形(完整教程)

Python 使用循环打印正方形的入门实践

在编程学习中,图形打印练习是锻炼逻辑思维能力的经典课题。今天我们要探讨的是 Python 使用循环打印正方形这一基础任务,通过不同维度的代码示例,帮助初学者掌握循环结构的核心思想,同时为中级开发者提供优化思路。

从单层循环到嵌套结构

理解基本原理

正方形的打印本质是二维空间的字符排列。我们需要将单行输出与多行输出进行组合,这恰好需要两个层级的循环协作。外层循环控制行数,内层循环处理每行的字符数量。

单层循环的局限

for i in range(5):
    print('*' * 5)

这段代码通过字符串乘法快速生成 5 行 5 个星号的正方形。虽然实现简单,但扩展性较差。当我们需要打印不同字符或添加条件判断时,这种写法就显得不够灵活了。

掌握嵌套循环结构

核心代码解析

size = 5
for row in range(size):
    line = ''
    for col in range(size):
        line += '*'
    print(line)

代码注释:

  1. 定义 size 变量控制正方形大小
  2. 外层循环遍历行数(0 到 size-1)
  3. 内层循环逐个字符拼接成完整行
  4. 每行拼接完成后统一打印

循环嵌套的执行逻辑

外层循环每执行一次,内层循环就会完整运行 size 次。可以想象成工厂流水线:每个工人(外层循环)完成一个产品(一行),需要组装多个零件(字符)才能完成产品。

动态输入与参数控制

交互式输入方案

size = int(input('请输入正方形边长:'))
char = input('请输入填充字符:')

for row in range(size):
    line = ''
    for col in range(size):
        line += char
    print(line)

代码注释:

  1. 使用 int() 转换字符串输入
  2. 允许自定义填充字符
  3. 变量命名更符合语义
  4. 保留了核心的循环结构

参数控制的扩展可能

我们可以添加更多参数实现:

  • 填充字符类型(*、#、字母等)
  • 边框与填充区分
  • 不同边长的正方形 这些扩展让代码从简单的图形打印进化为可配置的工具。

不同风格的实现方案

空心正方形实现

size = 5
for row in range(size):
    line = ''
    for col in range(size):
        if row == 0 or row == size-1 or col == 0 or col == size-1:
            line += '*'
        else:
            line += ' '
    print(line)

代码注释:

  1. 判断当前坐标是否处于四边
  2. 边界位置使用星号,内部使用空格
  3. 通过条件语句控制字符类型
  4. 保留了基础的循环框架

金字塔变形挑战

虽然主题是正方形,但通过调整内层循环的起始值,可以实现:

for row in range(5):
    line = ''
    for col in range(row, row+5):
        line += str(col % 10)
    print(line)

这个案例展示了循环变量的灵活运用,数字替换字符的技巧能帮助理解循环变量的实际含义。

性能优化技巧

避免重复计算

size = 5
line_template = '*' * size  # 提前生成行模板

for row in range(size):
    print(line_template)

代码注释:

  1. 提前计算重复使用的字符串
  2. 减少内层循环的计算次数
  3. 保持代码简洁性的同时提升效率
  4. 适用于固定字符的场景

使用列表推导式

size = 5
[print('*' * size) for _ in range(size)]

虽然一行代码实现,但需要注意:

  • 可读性下降
  • 不适合需要复杂条件的场景
  • 作为进阶技巧展示

常见错误与调试方法

错误1:行数与列数不一致

for row in range(4):
    line = ''
    for col in range(5):
        line += '*'
    print(line)

调试建议:

  1. 检查 range 参数是否统一
  2. 使用 print(row, col) 跟踪变量变化
  3. 对比预期与实际输出差异
  4. 考虑用断言验证行数列数

错误2:字符拼接顺序错误

for col in range(5):
    line = ''
    for row in range(5):
        line += '*'
    print(line)

调试技巧:

  1. 画出坐标轴示意图
  2. 打印中间变量观察流向
  3. 使用调试器单步执行
  4. 添加日志输出关键节点

实际应用场景延伸

生成验证码图案

通过随机字符生成正方形验证码:

import random
import string

size = 4
chars = string.ascii_letters + string.digits
for row in range(size):
    line = ''.join(random.choices(chars, k=size))
    print(line)

构建基础游戏界面

早期文字游戏常用这种结构生成界面:

size = 10
maze = [['#' if col in (0, size-1) or row in (0, size-1) else '.' for col in range(size)] for row in range(size)]

for row in maze:
    print(''.join(row))

数据可视化基础

虽然功能简单,但可以作为理解二维数据处理的起点:

for row in range(3):
    print(' '.join(str(row+1) for _ in range(3)))

拓展思维训练

对角线填充挑战

size = 5
for row in range(size):
    line = ''
    for col in range(size):
        if row == col or row + col == size - 1:
            line += 'X'
        else:
            line += '*'
    print(line)

渐变填充实现

size = 5
for row in range(size):
    print(''.join(str((row + col) % 10) for col in range(size)))

这些变体案例展示了循环结构的灵活应用,通过调整条件判断和字符生成逻辑,可以创造更多有趣的图形效果。

结语

通过本文的实践,我们从基础到进阶完整梳理了 Python 使用循环打印正方形的多种实现方式。从最简单的字符串乘法到复杂的条件判断,每个阶段都体现了循环结构的核心思想。建议读者通过修改参数、添加新条件等方式进行拓展练习,逐步培养代码调试和图形生成的能力。掌握这些基础后,可以尝试更复杂的图形如菱形、箭头等,这些都是提升编程思维的重要训练。