我写了一个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)
您的代码只检查第一个字母(在示例'h'中),然后已经返回。只应在运行整个for循环后返回:
有关修复代码的方法,请参阅xjcl的答案。在
如果你对等值线的定义是没有字母可以出现不止一次,你可以直接发布
如果等值线图的定义是所有字母出现的次数相等,那么使用
^{pr2}$collections
模块中的Counter
对象就可以了。在这种快速单行线的缺点是
Counter
继续计数,即使等值线图的定义不再满足(它会查看所有字符)。在相关问题 更多 >
编程相关推荐