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

Python f-string宽度对齐问题:循环中感叹号输出异常排查

问题原因

你代码里的s1格式化逻辑错误:每次循环都基于上一次的s1做左对齐填充到j长度,但当s1的长度已经大于j时,Python字符串格式化不会截断原字符串,只会保留原有长度,导致感叹号数量始终停留在第一次生成的5个,无法递减。

修复方案

不需要累加s1和s2,每次循环直接生成当前行需要的字符串即可:

方案一(基于你的循环逻辑修改)

i = 0
j = 6
while True:
    i += 1
    j -= 1
    if i > 4: break  # 目标输出共4行,原代码循环5次会多生成一行
    s1 = "!" * j  # 直接生成j个感叹号
    s2 = "*" * (i * 2)  # 直接生成2*i个星号
    print(s1 + s2)

方案二(更简洁的写法)

for i in range(1, 5):
    print(f"{'!'*(5 - i)}{'*'*(2*i)}")
正确输出
!!!!**
!!!****
!!******
!********

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:39