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

Python实现XO图案正方形打印函数遇问题求助

问题解决:生成指定的X-O正方形图案

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

  • 反复将同一个section列表添加到square中,导致所有行实际上是同一个列表的引用;且字符串是不可变类型,无法直接通过索引修改字符。
  • 缺少将指定位置替换为x的逻辑。

下面是修正后的代码,完全实现你需要的图案逻辑:

def xo(size):
    # 初始化size×size的二维列表,每行都是独立的"o"元素列表
    square = [["o" for _ in range(size)] for _ in range(size)]
    
    # 遍历每一行的索引,替换指定位置为"x"
    for i in range(size):
        square[i][i] = "x"
        square[i][size - 1 - i] = "x"
    
    # 拼接每行元素并打印
    for row in square:
        print("".join(row))

xo(5)

代码说明:

  1. 二维列表初始化:用双层列表推导式创建独立的行列表,避免了原代码中所有行引用同一对象的问题,同时确保每个元素可修改。
  2. 替换逻辑:
    • 第i行(从0开始计数)的第i列位置设为"x"
    • 第i行的倒数第i+1列(对应索引size-1-i)也设为"x"
  3. 结果输出:将每行的列表元素拼接成字符串后打印,得到目标图案。

运行后调用xo(5)会输出:

xooox
oxoxo
ooxoo
oxoxo
xooox

如果想用while循环实现替换逻辑,可改成以下版本:

def xo(size):
    square = [["o" for _ in range(size)] for _ in range(size)]
    i = 0
    while i < size:
        square[i][i] = "x"
        square[i][size - 1 - i] = "x"
        i += 1
    
    for row in square:
        print("".join(row))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:01:27