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.
相关产品推荐
相关产品推荐

