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

如何在循环输出的问号前加空格?仅用print()不导入sys模块

问题描述

我想在每个问号前添加空格,但这段逻辑处于循环结构中,使用end=" "只会在问号之间增加额外间距。请问是否存在不导入sys模块、仅使用print()方法实现该需求的方案?

当前使用sys模块的实现代码及输出如下:

import sys

def display_board(board):
    for rows in board:
        sys.stdout.write(" "* 20)
        for columns in rows:
            # 隐藏单元格显示"?",可见单元格显示实际字符"@"
            sys.stdout.write(("?" if columns != "@" else "@"))
        sys.stdout.write('\n')

输出:

?????????
                    ?????????
                    ?????????
                    ?????????
                    ?????????
                    ?????????
                    ?????????
                    ?????????
解决方案

有两种无需依赖sys模块的实现方式:

方法1:先构建完整行字符串再打印

先拼接好包含开头空格、带前缀空格的符号的完整行字符串,再通过print()输出:

def display_board(board):
    for rows in board:
        line = " " * 20
        for columns in rows:
            line += " " + ("?" if columns != "@" else "@")
        print(line)

如果介意行尾多出的空格,可以改用print(line.rstrip())去掉末尾空格。

方法2:结合列表推导式与print()的sep参数

先将每行的符号处理为带前缀空格的元素列表,再通过解包列表+sep=""实现无间隔打印:

def display_board(board):
    for rows in board:
        symbols = [" " + ("?" if col != "@" else "@") for col in rows]
        print(" " * 20, *symbols, sep="")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:25:22