例如:"xwzfyfjvmehjnscfdvyosifv"
应该返回False
,因为它有多个"f"
(以及其他重复的字符)
而"fnyqov"
应该返回True。
我的问题是我的代码大多数时候都可以工作,但是"xwzfyfjvmehjnscfdvyosifv"
保留returnig True
。
大写字母和小写字母都应受到相同的威胁,因此"woOman"
应该返回False
。
这是我的代码:
def is_isogram(string):
string = string.lower()
if string == "":
return True
for i in string:
if string.count(i) >= 2:
return False
elif is_repeated(string) == True:
return False
else:
return True
def is_repeated(string):
last_letter = ""
for i in string:
if last_letter.lower() == i.lower():
return True
break
last_letter = i
return False
print(is_isogram("xwzfyfjvmehjnscfdvyosifv"))
答案 0 :(得分:4)
您可以使用set
:
def unique(s):
return len(set(s.lower())) == len(s)
set
将删除重复项,因此您可以将其长度与原始长度进行比较。
答案 1 :(得分:0)
尝试一下
def func(string):
if len(set(string.lower())) == len(string.lower()):
return True
else:
return False
答案 2 :(得分:0)
def is_unique(test):
test = test.lower()
for c in test:
if test.count(c) != 1:
return False
return True
test1 = "xwzfyfjvmehjnscfdvyosifv"
test2 = "woOman"
test3 = "abcdefghijklmnop"
is_unique(test1)
>>>False
is_unique(test2)
>>>False
is_unique(test3)
>>>True
或使用set()
len(set(test1.lower()))==len(test1)
>>>False
len(set(test2.lower()))==len(test2)
>>>False
len(set(test3.lower()))==len(test3)
>>>True