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

Python字符串重复字符统计程序异常:无重复单词最后字符计数为2求解

字符串重复字符统计问题分析

你的代码出现最后一个字符计数为2的原因很明确,核心是两个逻辑错误:

  • 循环内的赋值逻辑错误:你在for循环里每次执行dict[letter] = 1,这会把每个字符的计数强行重置为1,哪怕这个字符之前已经被统计过,完全起不到累加计数的作用。
  • if判断的位置错误:那个判断字符是否存在并加1的代码块是在for循环外面的。Python中,for循环结束后,循环变量letter会保留最后一次迭代的内容(也就是字符串的最后一个字符's'),这时候执行dict[letter] +=1,就会把最后一个字符的计数额外加1,所以不管原字符串有没有重复,最后一个字符的数值都会变成2。

修正后的代码示例

基础写法

def is_isogram(string):
    char_count = {}  # 避免用dict作为变量名,会覆盖Python内置的dict类型
    for letter in string:
        if letter in char_count:
            char_count[letter] += 1
        else:
            char_count[letter] = 1
    return char_count

print(is_isogram("Dermatoglyphics"))

简化写法(利用字典get方法)

def is_isogram(string):
    char_count = {}
    for letter in string:
        # get方法:如果键存在则返回对应值,不存在则返回默认值0,然后加1
        char_count[letter] = char_count.get(letter, 0) + 1
    return char_count

修正后的代码会正确统计每个字符的出现次数,测试无重复字符的"Dermatoglyphics"时,所有字符的计数都会是1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:55:25