检查python函数从代码检查中确定isogram

时间:2016-06-20 14:18:32

标签: python string algorithm python-2.7

isogram是一个没有重复字母,连续或不连续的单词。实现一个函数,确定只包含字母的字符串是否是等值线图。假设空字符串是等值线图。忽略字母案例。

is_isogram("Dermatoglyphics" ) == true
is_isogram("aba" ) == false
is_isogram("moOse" ) == false # -- ignore letter case

这是我的代码:

def is_isogram(string):
    string = string.lower()
    for char in string:
        if string.count(char) > 1:
            return False
        else:
            return True

当我尝试运行测试代码时Test.assert_equals(is_isogram("moOse"), False, "same chars may not be same case" )它失败了,但我认为我确实将所有内容都转换为小写。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

如何使用sets?将字符串转换为集合将删除重复的字符,导致等值图返回True,因为集合的长度与原始字符串的长度没有区别:

def is_isogram(s):
    s = s.lower()
    return len(set(s)) == len(s)

print is_isogram("Dermatoglyphics")
print is_isogram("aba")
print is_isogram("moOse")
print is_isogram("")

输出:

True
False
False
True

答案 1 :(得分:1)

试试这个:

def is_isogram(string):
    string = string.lower()
    for char in string:
        if string.count(char) > 1:
            return False
    return True

在调用is_isogram("moose")的代码中,它会看到第一个字符的'('m')计数不大于1.因此它将返回True。一旦它命中return语句,它将停止执行其余字符串。所以你应该在for循环之后才真正写return True以确保函数检查整个字符串。

但是,如果在任何时候,它发现一个字符的计数大于1,那么它将只返回False并停止执行,因为当找到一个不满足条件的点时,没有任何检查点。< / p>

答案 2 :(得分:1)

尝试一下:

def is_isogram(s):
    string = s.lower()
    if len(s) == len(set(string)):
        return True
    return False

答案 3 :(得分:0)

让我们很好地定义一个等值线图: 根据维基百科,An Isogram是一个不会出现字母的词。 check here for more about an isogram

提醒信件 我写这段代码,它对我有用:

def is_isogram(argument):
   print(len(argument))
   if isinstance(argument,str):
      valeur=argument.lower()
      if not argument:
         return False
      else:
         for char in valeur:
            if valeur.count(char)>1 or not char.isalpha():
               return False
         return True
   else:
      raise TypeError("need a string ")

注意:隐藏测试的事实是你必须检查字符串中的字符是否是字母字符a-z,当我添加它时它会通过所有的hiddens测试 如果有这个帮助,请投票

答案 4 :(得分:0)

尝试一下:

def is_isogram(string):
    return len(string) == len(set(string.lower()))

“实现一个确定仅包含字母的字符串是否为等距图的函数。”

通过使用集合,可以创建唯一元素。因此,如果有任何重复的数字,则只会选择一个。通过在这些字符串上调用len(),可以将长度与原始长度进行比较。

对不起,如果我解释得不好。我正在为此工作。

相关问题