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

Python中如何在指定行列输出'--'?求A方案优化及B方案解决

乘法表两种格式的实现优化与问题解决

一、A方案的其他写法

你的A方案代码逻辑正确,以下是两种更简洁的写法:

写法1:简化条件判断

将嵌套if合并为单个条件,提升可读性:

for i in range(1, 10):
    for j in range(1, 10):
        if 2 <= i <= 8 and 2 <= j <= 8:
            print('--', end=' ')
        else:
            print(f'{i*j:2d}', end=' ')
    print()

写法2:用列表推导式生成整行

通过列表推导式预先构建每行元素,再拼接打印,减少重复print调用:

for i in range(1, 10):
    row = [f'{i*j:2d}' if not (2 <= i <=8 and 2 <=j <=8) else '--' for j in range(1,10)]
    print(' '.join(row))

二、B方案的正确实现

根据你需要的输出格式,需按不同行设置显示规则,代码如下:

for i in range(1, 10):
    for j in range(1, 10):
        # 第1、9行:全显示乘积
        if i == 1 or i == 9:
            print(f'{i*j:2d}', end=' ')
        # 第2、8行:仅首尾显示乘积
        elif i == 2 or i == 8:
            print(f'{i*j:2d}' if j in (1,9) else '--', end=' ')
        # 第3、7行:首尾+中间j=3~7显示乘积
        elif i == 3 or i == 7:
            if j in (1,9) or 3 <= j <=7:
                print(f'{i*j:2d}', end=' ')
            else:
                print('--', end=' ')
        # 第4~6行:首尾+j=2、j=6显示乘积
        elif 4 <= i <=6:
            if j in (1,9,2,6):
                print(f'{i*j:2d}', end=' ')
            else:
                print('--', end=' ')
    print()

内容的提问来源于stack exchange,提问作者Arnu C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:52:29