You need to enable JavaScript to run this app. Python统计字符串非空格字符数时代码输出为-1的原因及修正方法
优惠活动
大模型
产品
解决方案
定价
更多

Python统计字符串非空格字符数时代码输出为-1的原因及修正方法

异常输出根因分析与代码修正

异常结果原因拆解

  • 原代码中循环遍历字符串累加count的逻辑,最终得到的是原字符串的全部字符总长度。以示例中的'Ricardo Cadenas'为例,其总字符数为15,此时循环结束后的count值就是15。
  • 触发最终输出-1的核心逻辑是word.count('')的特殊返回规则:Python中对字符串调用count方法匹配空字符串时,返回值为「字符串长度 + 1」。上述长度为15的字符串,传入空字符串参数的count调用会返回16。
  • 最终计算为15 - 16,直接输出-1。
  • 本质上这段代码的初始设计思路是“统计字符串总长度,再减去其中的空格数,最终得到不含空格的字符量”,但编写时误将需要剔除的空格符' '写成了空字符串'',完全偏离了设计意图。另外原函数名string_lenght存在拼写笔误,正确拼写为string_length,虽不影响运行但建议遵循命名规范修正。

符合需求的修正实现

根据需求(统计字符串中不含空格的字符数量),提供几种可直接运行的实现方式:

  • 贴合原思路的最小改动版本:去掉冗余的遍历累加逻辑,用Python内置len()直接获取字符串总长度,修正计数参数为空格符
word = 'Ricardo Cadenas'
def string_length(word):
    # 总长度减去字符串中包含的空格数量,即为不含空格的字符数
    return len(word) - word.count(' ')
print(string_length(word))

运行输出为14,和预期结果一致。

  • 直观遍历版本:遍历过程中直接跳过空格做计数,从根源避免将空格纳入统计
word = 'Ricardo Cadenas'
def string_length(word):
    count = 0
    for char in word:
        if char != ' ':
            count += 1
    return count
print(string_length(word))
  • 极简实现版本:直接移除字符串中的所有空格后计算长度
word = 'Ricardo Cadenas'
def string_length(word):
    return len(word.replace(' ', ''))
print(string_length(word))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 13:36:03