判断一个词是否是等值线

2024-04-16 07:16:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个python代码来检查单词是否是等值线。如果它是一个等值线,它应该返回('word',True),但是如果它不是一个等值线,它应该返回('word',False)。但每当我通过一个像“heavenly”这样的论点时,我得到的是(“heavenly”,True)而不是“heavely”,False)。拜托,我真的很感激你的帮助

这是我的代码:

def isogram(aWord):
    if aWord == '':
        return (aWord, False)
    elif type(aWord) != str:
        raise TypeError('Argument should be a string')
    else:
        for letter in aWord:
            if aWord.count(letter) > 1:
                return (aWord, False)
            else:
                return (aWord, True)

Tags: 代码falsetruereturnifdef单词else
2条回答

您的代码只检查第一个字母(在示例'h'中),然后已经返回。只应在运行整个for循环后返回:

def isogram(aWord):
    if aWord == '':
        return (aWord, False)
    elif type(aWord) != str:
        raise TypeError('Argument should be a string')
    else:
        for letter in aWord:
            if aWord.count(letter) > 1:
                return (aWord, False)
        return (aWord, True)

有关修复代码的方法,请参阅xjcl的答案。在

如果你对等值线的定义是没有字母可以出现不止一次,你可以直接发布

len(set(word)) == len(word)

如果等值线图的定义是所有字母出现的次数相等,那么使用collections模块中的Counter对象就可以了。在

^{pr2}$

这种快速单行线的缺点是Counter继续计数,即使等值线图的定义不再满足(它会查看所有字符)。在

相关问题 更多 >