def contains_bitly_url(tweet):
if tweet.startswith('http://bit.ly/'):
return True
elif tweet.find(' http://bit.ly/'):
return True
else:
return False
所以我使用contains.bitly_url(“hahahahahah”)调用此函数,它总是返回true。我通过代码可视化器运行它,它是“elif tweet.find('http://bit.ly/'):”由于某种原因返回true的部分。有谁能告诉我如何解决这个问题?
答案 0 :(得分:4)
str.find
返回-1,否则返回字符串的索引。所以,除非字符串以' http://bit.ly/'
str.find
开头,否则总是会返回一个非零值(真实)。所以,最好检查-1:
def contains_bitly_url(tweet):
if tweet.startswith('http://bit.ly/'):
return True
elif tweet.find(' http://bit.ly/') != -1:
return True
else:
return False
您可以将功能简化为:
def contains_bitly_url(tweet):
return 'http://bit.ly/' in tweet
答案 1 :(得分:2)
tweet.find(' http://bit.ly/')
始终为True,除非它返回0
def contains_bitly_url(tweet):
return tweet.startswith('http://bit.ly/') or tweet.find(' http://bit.ly/') != -1
因此请使用tweet.find(' http://bit.ly/') != -1
如果两个检查都是True
True
或False
,我们也可以返回{或1}}
或者只是使用in来查看子串是False
主字符串是否为@MattDMo建议:
in