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

为何我的Python无重复字母词(isogram)判断函数返回None?

无重复字母词判断函数返回值差异解析

问题场景

需要编写函数判断单词是否为无重复字母词(isogram,即不含重复字符的单词),空字符串需返回True。自己的代码运行后返回None,他人实现返回True,需明确两者返回值不同的原因。

我的代码

from string import ascii_lowercase
def is_isogram(iso):
    for x in iso:
        return False if (iso.count(x) > 1) and (x in ascii_lowercase) else True

# 空字符串调用时返回None

他人的代码

def is_isogram(word):
    word = str(word).lower()
    alphabet_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    for i in word:
        if word.count(i) > 1 and i in alphabet_list:
            return False
    return True

# 空字符串调用时返回True

差异原因分析

1. 你的代码核心问题

  • 循环逻辑错误:遍历第一个字符x时,直接通过三元表达式返回结果,循环仅执行一次就结束,完全没检查后续字符。比如单词"hello",第一个字符是'h',count('h')为1,直接返回True,漏掉了后面重复的'l'。
  • 空字符串处理缺失:当输入是空字符串时,for x in iso循环根本不会执行,函数没有任何return语句,Python默认返回None。

2. 他人代码的正确逻辑

  • 循环检查所有字符:遍历每个字符,只要发现某个字符重复且属于字母,立即返回False;如果循环跑完所有字符都没发现重复,才执行最后的return True。
  • 空字符串处理正确:空字符串时循环不执行,直接走到最后的return True,符合题目要求。

额外说明:他人代码先把输入转小写,处理了大小写不敏感的情况(比如"Alpha"会被转成"alpha",判断重复更准确),而你的代码没处理大小写,这是功能上的差异,但不是返回None的直接原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:40:39