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" )
它失败了,但我认为我确实将所有内容都转换为小写。有人可以帮忙吗?
答案 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(),可以将长度与原始长度进行比较。
对不起,如果我解释得不好。我正在为此工作。