我已经编写了这段代码...我期望的答案不正确 在此代码中,如果字符串包含重复的字符,则应返回False 但在所有情况下都返回True
我已经做了很多编码以尝试解决这个问题 这是在JUPYTER笔记本中
def is_isogram(string):
for i in string:
if string.count(i) == 1:
print('True')
elif string.count(i) > 1:
print('False')
我键入'Hello',它应该返回False,但在所有情况下都返回true
答案 0 :(得分:4)
一旦您发现单词数大于1,就可以确保您的单词不是等轴测图,但是只有在检查了所有字母后,才能确保它是一个等距图:
def is_isogram(string):
for i in string:
if string.count(i) > 1:
return False
return True
print(is_isogram('pear'))
# True
print(is_isogram('apple'))
# False
或者,如果您确实希望函数打印输出而不是返回输出,通常我不建议这样做:
def is_isogram(string):
for i in string:
if string.count(i) > 1:
print('False')
return
print('True')
一种简短的经典解决方案是制作一个set
个字符,并检查唯一字符的数量是否等于字符串的长度
def is_isogram2(string):
return len(set(string)) == len(string)
答案 1 :(得分:1)
这是一个简单的代码段,可用于检查字符串是否包含重复的字符。遍历所有字符并检查它是否已经出现过。
def is_isogram(s):
mp = {}
for c in s:
if c in mp.keys():
return False
mp[c] = 1
return True
答案 2 :(得分:0)
您正在为字符串中的每个字符打印True
和False
。使用输入“ hello”运行代码将得到5行输出,其中两行True
,两行False
和另一行True
。
def is_isogram(string):
for i in string:
if string.count(i) > 1:
return False
return True
此代码将返回True或False。如果字符串中的任何字符出现多次,则该函数返回False并退出。如果没有一个以上的字符出现,则退出循环后返回True。
如果有多个字母出现多次,则可以确保该单词不是等轴测图,即,您不必遍历整个字符串,只需找到一个重复的字符即可。但是要确保您有一个等轴测图,您需要检查整个字符串。
for i in string:
此语句逐个字符地遍历循环。
if string.count(i) > 1:
return False
if语句检查当前字符i在字符串中是否出现多次。如果是,函数将返回False
。如果没有,它将继续进行下一次迭代。
return True
如果控件已到达此语句,则意味着没有字符出现两次,因为该函数在到达此语句之前将返回False
。因此,该函数返回True
考虑输入"hello"
。
迭代1:i = 'h'
和string.count('h') = 1
所以什么都不做
迭代2:i = 'e'
和string.count('e') = 1
所以什么都不做
迭代3:i = 'l'
和string.count('l') = 2
因此,返回False
。
如果您像这样调用函数print(is_isogram("hello"))
,False
,则会被打印出来。
考虑其他输入"abcd"
迭代1:i = 'a'
和string.count('a') = 1
所以什么都不做
迭代2:i = 'b'
和string.count('b') = 1
所以什么都不做
迭代3:i = 'c'
和string.count('c') = 1
所以什么都不做
迭代4:i = 'd'
和string.count('d') = 1
所以,什么都不做
此时,循环已耗尽,并且执行了return True
语句
答案 3 :(得分:0)
不是很pythonic,但是以您的原始样式:
def is_isogram(s):
for i in s:
if s.count(i) > 1:
return False
return True