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

Python字符串下划线输出程序报错:下划线长度不匹配排查

Python字符串下划线输出程序错误排查

任务要求

编写Python程序,通过循环请求用户输入字符串,将每个字符串按示例格式带下划线输出,输入空字符串时结束程序。

用户编写的代码

string = str(input("Please enter a string: "))
char = "-"* len(string)
while len(string) >0:
    print(string)
    print(char)
    string=str(input("Please enter a string: "))
    if len(string) == 0:
        break

测试失败信息

  1. 测试用例test_2_two_words:
FAIL: PythonEditorTest: test_2_two_words

'------' != '-------'
- ------
+ -------
? +
 : 第4行输出不正确,应为
-------
实际输出行是
------
完整输出:
python
------
attempt
------
  1. 测试用例test_3_many_words:
FAIL: PythonEditorTest: test_3_many_words

'----' != '----------'
- ----
+ ----------
 : 第6行输出不正确,应为
----------
实际输出行是
----
完整输出:
test
----
hiya
----
simsalabim
----
zorro
----
woo-hoo!
----

问题根源

代码的核心bug是下划线字符串char只在程序初始化时计算了一次,后续输入新字符串时,没有根据新字符串的长度重新生成对应长度的下划线。

比如第一次输入"python"(长度6),char被设为6个'-';之后输入长度为7的"attempt",代码依然输出之前生成的6个'-',导致下划线长度和当前字符串不匹配,这就是测试失败的直接原因。

另外,代码里的if len(string) == 0: break属于冗余逻辑——while循环的条件已经是len(string) > 0,当输入空字符串时,循环会自动终止,不需要额外判断跳出。

修复方案

只需要把下划线的生成逻辑放到循环内部,每次处理新字符串时重新计算下划线长度即可。修复后的代码如下:

string = input("Please enter a string: ")
while len(string) > 0:
    print(string)
    print("-" * len(string))  # 每次循环根据当前字符串长度生成下划线
    string = input("Please enter a string: ")

或者更简洁的写法:

while True:
    user_input = input("Please enter a string: ")
    if not user_input:
        break
    print(user_input)
    print("-" * len(user_input))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:43:18